Como usar a Identidade da carga de trabalho

Nesta página, explicamos como autenticar o serviço Cloud Run para Anthos no Google Cloud 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, ativando Identidade da carga de trabalho e vinculando 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.

  1. 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
  2. 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:

    1. 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
    2. 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

  1. Acessar o Cloud Run for Anthos no Google Cloud

  2. 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.

  3. Em Configurações avançadas, clique em Contêiner.

    imagem

  4. Clique no menu suspenso Conta de serviço e selecione a conta de serviço desejada.

  5. Clique em Criar ou Implantar.

gcloud

É possível atualizar um serviço existente para ter uma nova conta de serviço de ambiente de execução usando o seguinte comando:

gcloud kuberun core services update SERVICE --service-account SERVICE_ACCOUNT

Substitua:

  • SERVICE pelo nome do serviço;
  • SERVICE_ACCOUNT pela conta de serviço associada à nova identidade. Também é possível definir uma conta de serviço durante a implantação usando o comando:
gcloud kuberun core services create --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.

YAML

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. No seu arquivo local, atualize o atributo serviceAccountName::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: SERVICE_ACCOUNT

    Replace

    • SERVICE pelo nome do serviço do Cloud Run para Anthos no Google Cloud.
    • SERVICE_ACCOUNT pela conta de serviço associada à nova identidade.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml