Habilitei a identidade da carga de trabalho em nosso cluster do GKE. Agora estou implantando um aplicativo no GKE que usa WI para autenticar em outro serviço do Google. Já usei o Deployment Manager para criar uma conta de serviço do IAM com acesso correto ao serviço do Google. Também implantei o aplicativo com sua própria conta de serviço do GKE no cluster.
Por fim, preciso vincular os dois tipos diferentes de contas de serviço. Isso permite que a conta de serviço do Kubernetes atue como a conta de serviço do Google, permitindo assim que o pod acesse os serviços em nuvem.
A documentação usa a gcloud
ferramenta CLI para adicionar a vinculação de política assim:
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
Claro, eu gostaria de fazer isso via GCP Deployment Manager (infra-as-code e tudo isso), mas não consigo descobrir a sintaxe correta do DM!?
Eu normalmente faço a ligação de função por meio do gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding
tipo, como no exemplo de código , mas não consigo descobrir como replicar o gcloud
comando acima e não consigo encontrar nenhum exemplo público. Quem pode ajudar, por favor?
Anteriormente actions
seriam usados, eu acho, mas como eles estão obsoletos, prefiro não usá-los para novo código. O iamMemberBinding
parece ser o caminho recomendado.
Acontece que olhar para o
gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding
tipo era uma pista falsa. Em vez disso, a solução é usar aaccessControl
propriedade doiam.v1.serviceAccount
tipo. Muito obrigado a esta resposta , que me apontou na direção certa.Em resumo, sua serviceAccount se torna algo assim: