in credential_provider/irsa_credential_provider.go [108:124]
func (p IRSACredentialProvider) getRoleARN() (arn *string, e error) {
// cli equivalent: kubectl -o yaml -n <namespace> get serviceaccount <acct>
rsp, err := p.k8sClient.ServiceAccounts(p.nameSpace).Get(p.ctx, p.svcAcc, metav1.GetOptions{})
if err != nil {
return nil, err
}
roleArn := rsp.Annotations[arnAnno]
if len(roleArn) <= 0 {
klog.Errorf("Need IAM role for service account %s (namespace: %s) - %s", p.svcAcc, p.nameSpace, docURL)
return nil, fmt.Errorf("An IAM role must be associated with service account %s (namespace: %s)", p.svcAcc, p.nameSpace)
}
klog.Infof("Role ARN for %s:%s is %s", p.nameSpace, p.svcAcc, roleArn)
return &roleArn, nil
}