in credential_provider/pod_identity_credential_provider.go [109:128]
func (p *podIdentityTokenFetcher) FetchToken(ctx credentials.Context) ([]byte, error) {
tokenSpec := authv1.TokenRequestSpec{
Audiences: []string{podIdentityAudience},
BoundObjectRef: &authv1.BoundObjectReference{
Kind: "Pod",
Name: p.podName,
},
}
// Use the K8s API to fetch the token associated with service account
tokRsp, err := p.k8sClient.ServiceAccounts(p.nameSpace).CreateToken(ctx, p.svcAcc, &authv1.TokenRequest{
Spec: tokenSpec,
}, metav1.CreateOptions{})
if err != nil {
return nil, err
}
return []byte(tokRsp.Status.Token), nil
}