Nesta página, explicamos como autenticar o serviço do Cloud Run for Anthos para usar APIs do Google Cloud ativando a Identidade da carga de trabalho.
Para usar as APIs do Google Cloud, como as APIs Compute, APIs Storage e Database ou APIs de machine learning no cluster do GKE, você precisa ter permissões e autenticar o serviço Cloud Run for Anthos. Basta ativar a Identidade da carga de trabalho e vincular uma conta de serviço do Kubernetes para atuar como uma conta de serviço do Google.
Como ativar a Identidade da carga de trabalho no cluster
Para configurar a Identidade da carga de trabalho com o Cloud Run for Anthos, consulte as instruções a seguir para ativá-la no cluster. Caso contrário, passe para a próxima seção:
Ativar a Identidade de carga de trabalho em um novo cluster ou Ativar a Identidade de carga de trabalho em um cluster existente
Como ativar métricas em um cluster com a identidade da carga de trabalho
Ao ativar a Identidade da carga de trabalho, o Cloud Run para Anthos não informa determinadas métricas, como contagem de solicitações de revisão ou latência de solicitação para o pacote de operações do Google Cloud, mas continua gerando relatórios de métricas de CPU e memória.
Se você quiser ativar todas as métricas, precisará definir manualmente as permissões para gravá-las no Cloud Monitoring. Para isso, conceda o papel "Gravador de métricas do Monitoring" à conta de serviço do Google (GSA, na sigla em inglês) associada ao serviço do Cloud Run for Anthos.
Conceda as permissões do papel de gravador de métricas do Monitoring à GSA do serviço:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Substitua:
- PROJECT_ID pelo ID de um projeto de cluster que hospeda sua KSA;
- GSA_PROJECT pelo ID do projeto de uma GSA que não está no cluster. Use qualquer GSA na organização.
Saiba mais em Como conceder, alterar e revogar o acesso a recursos.
Como vincular contas de serviço
Você precisa configurar um relacionamento para uma conta de serviço do Kubernetes (KSA, na sigla em inglês) para atuar como uma conta de serviço do Google (GSA, na sigla em inglês). Qualquer carga de trabalho em execução como KSA é autenticada automaticamente como a GSA ao acessar as APIs Google Cloud.
Se não houver uma conta de serviço do Kubernetes, crie uma no mesmo namespace do Kubernetes do serviço do Cloud Run for Anthos. Caso contrário, passe para a próxima etapa:
kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
Crie uma relação entre KSAs e GSAs para que a carga de trabalho em execução como KSA seja autenticada automaticamente como GSA ao acessar as APIs do Google Cloud:
Autorize sua KSA a atuar como uma GSA:
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@GSA_PROJECT.iam.gserviceaccount.com
Atualize o cluster para aproveitar a vinculação:
kubectl annotate serviceaccount \ --namespace K8S_NAMESPACE \ KSA_NAME \ iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com
Como implantar um novo serviço com uma nova identidade
Implante o serviço usando a KSA que existe no cluster e no namespace do serviço que você quer implantar. A conta de serviço pode pertencer a um projeto diferente do cluster.
Console
Acesse o Cloud Run for Anthos no Console do Google Cloud:
Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar uma nova revisão.
Em Configurações avançadas, clique em Contêiner.
Clique no menu suspenso Conta de serviço e selecione a conta de serviço desejada.
Clique em Avançar para acessar a próxima seção.
Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.
Clique em Criar para implantar a imagem no Cloud Run for Anthos e aguarde a conclusão da implantação.
Linha de comando
Para serviços existentes, configure a conta de serviço do ambiente de execução executando o comando
gcloud run services update
com os seguintes parâmetros:gcloud run services update SERVICE --service-account SERVICE_ACCOUNT
Substitua:
- SERVICE pelo nome do serviço;
- SERVICE_ACCOUNT pela conta de serviço associada à nova identidade.
Para novos serviços, configure a conta de serviço do ambiente de execução executando o comando
gcloud run deploy
com o parâmetro--service-account
:gcloud run deploy --image IMAGE_URL --service-account SERVICE_ACCOUNT
Substitua:
- IMAGE_URL por uma referência à imagem de contêiner. Por exemplo,
gcr.io/myproject/my-image:latest
; - SERVICE_ACCOUNT pela conta de serviço associada à nova identidade.
- IMAGE_URL por uma referência à imagem de contêiner. Por exemplo,
YAML
Faça o download da configuração de um serviço existente para um
arquivo YAML com o comando gcloud run services describe
usando a
sinalização --format=export
.
Em seguida, modifique o arquivo YAML e implante
essas alterações com o comando gcloud beta run services replace
.
Modifique apenas os atributos especificados.
Faça o download da configuração do serviço em um arquivo chamado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.
No seu arquivo local, atualize o atributo
serviceAccountName:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: SERVICE_ACCOUNT
Substituir
- SERVICE pelo nome do serviço do Cloud Run for Anthos.
- SERVICE_ACCOUNT pela conta de serviço associada à nova identidade.
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud beta run services replace service.yaml