Como usar a Identidade da carga de trabalho

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.

  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. Acesse o Cloud Run for Anthos no Console do Google Cloud:

    Acessar o Cloud Run for Anthos

  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 Avançar para acessar a próxima seção.

  6. Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.

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

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.

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

  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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run for Anthos.
    • 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