Como usar a Identidade da carga de trabalho

Saiba como autenticar os serviços do Cloud Run for Anthos com a Identidade da carga de trabalho para acessar as APIs do Google Cloud, como as APIs do Compute, APIs Storage e Database ou APIs de machine learning.

Para autenticar os serviços do Cloud Run for Anthos, você precisa fazer o seguinte:

  1. Ativar a Identidade da carga de trabalho no cluster
  2. Configurar permissões
  3. Vincular a conta de serviço do Kubernetes (KSA) a uma conta de serviço do Google (GSA)

Depois de seguir essas etapas, implante um novo serviço do Cloud Run for Anthos que usa a Identidade da carga de trabalho que você criou.

Como ativar a Identidade da carga de trabalho no cluster

Para configurar a Identidade da carga de trabalho com o Cloud Run for Anthos, configure a Identidade da carga de trabalho da frota em vez de usar um arquivo JSON da conta de serviço do Google Cloud.

Configurar permissões para ativar todas as métricas com a Identidade da carga de trabalho

Para ativar métricas, como a contagem de solicitações de relatórios ou a latência de solicitações para a observabilidade do Google Cloud, é necessário conceder permissões de gravação para o Cloud Monitoring. Por exemplo, é possível conceder o papel de gravador de métricas do Monitoring (roles/monitoring.metricWriter) à conta de serviço do Google associada ao Cloud Run for Anthos, porque ele inclui as permissões necessárias para gravar dados de monitoramento de dados. Consulte Como usar contas de serviço para mais informações sobre como criar contas de serviço do Google.

Como vincular contas de serviço

Configure um relacionamento para uma conta de serviço do Kubernetes (KSA) para atuar uma conta de serviço do Google (GSA). Qualquer carga de trabalho executada como a KSA que você vincular será autenticada automaticamente como GSA ao acessar as APIs do Google Cloud. A KSA que você vincular precisa existir dentro do cluster e do namespace do serviço do Cloud Run for Anthos em que você quer usar a identidade da carga de trabalho. A GSA pode pertencer a um projeto do Google Cloud diferente do projeto do Google Cloud em que o cluster reside.

  1. Se não houver uma VPC, crie uma. Caso contrário, pule para a próxima etapa. É possível criar uma GSA para usar com o Cloud Run for Anthos em qualquer projeto do Google Cloud na organização e usá-la no projeto do Google Cloud em que os serviços do Cloud Run for Anthos são executados.

    Para criar uma nova GSA, execute o seguinte comando:

    gcloud iam service-accounts create GSA_NAME

    Substitua GSA_NAME pelo nome da nova conta de serviço do Google.

    Para mais informações sobre como usar contas de serviço do Google com seus serviços do Cloud Run for Anthos, consulte Como usar contas de serviço.

  2. Verifique se a GSA tem os papéis do IAM necessários. É possível conceder outros papéis usando o seguinte comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role "ROLE_NAME"
    

    Substitua:

    • PROJECT_ID pelo ID do projeto do Google Cloud em que a conta de serviço do Google reside.
    • GSA_NAME pelo nome da conta de serviço do Google
    • ROLE_NAME pelo papel do IAM a ser atribuído à GSA, como roles/monitoring.metricWriter.
  3. 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
  4. Vincule as contas de serviço do Kubernetes e do Google para criar a identidade da carga de trabalho e implantá-la no cluster:

    1. Permita que a KSA represente a GSA criando uma vinculação de política do IAM entre as duas.

      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_ID.iam.gserviceaccount.com

      Substitua:

      • PROJECT_ID pelo ID do projeto do Google Cloud para o cluster em que a conta de serviço do Kubernetes e os serviços do Cloud run for Anthos residem.
      • K8S_NAMESPACE/KSA_NAME pelo namespace e nome da sua conta de serviço do Kubernetes.
      • GSA_NAME@GSA_PROJECT_ID pelo nome da conta de serviço do Google e pelo ID do projeto do Google Cloud. É possível usar qualquer conta de serviço do Google na sua organização. Para ver suas contas de serviço do Google, consulte Como listar contas de serviço.
    2. Adicione a anotação iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT_ID à KSA usando o endereço de e-mail da GSA.

      kubectl annotate serviceaccount \
      --namespace K8S_NAMESPACE KSA_NAME \
       iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT_ID.iam.gserviceaccount.com

      Substitua:

      • K8S_NAMESPACE/KSA_NAME pelo namespace e nome da conta de serviço do Kubernetes para a qual você criou uma vinculação.
      • GSA_NAME@GSA_PROJECT_ID pelo nome da conta de serviço do Google e pelo ID do projeto do Google Cloud para o qual você criou uma vinculação.

Como implantar um novo serviço para usar a identidade da carga de trabalho

Implante um novo serviço do Cloud Run for Anthos que usa a identidade da carga de trabalho criada.

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 os serviços atuais, defina a conta de serviço do Kubernetes executando o comando gcloud run services update com os seguintes parâmetros:

    gcloud run services update SERVICE --service-account KSA_NAME
    

    Substitua:

    • SERVICE pelo nome do serviço do Cloud Run for Anthos.
    • KSA_NAME pela conta de serviço do Kubernetes que você usou para criar a identidade da carga de trabalho.
  • Para novos serviços, defina a conta de serviço do Kubernetes executando o comando gcloud run deploy com o parâmetro --service-account:

    gcloud run deploy --image IMAGE_URL --service-account KSA_NAME
    

    Substitua:

    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, gcr.io/cloudrun/hello;
    • KSA_NAME pela conta de serviço do Kubernetes que você usou para criar a identidade da carga de trabalho.

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 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: KSA_NAME
    

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run for Anthos.
    • KSA_NAME pela conta de serviço do Kubernetes que você usou para criar a identidade da carga de trabalho.
  3. Implante a configuração no serviço do Cloud Run for Anthos executando o seguinte comando:

    gcloud run services replace service.yaml

Como migrar serviços atuais para usar a Identidade da carga de trabalho

Se você ativou a Identidade da carga de trabalho em um cluster existente, cada serviço desse cluster em que você quer usar a Identidade da carga de trabalho precisa ser migrado. Saiba como migrar serviços existentes.

Próximas etapas

Saiba como gerenciar o acesso aos seus serviços.