Passo 11 (opcional): configure o Workload Identity

O Apigee Hybrid v.1.14 suporta o Workload Identity no GKE e a federação de identidades da carga de trabalho no AKS e EKS. Os procedimentos neste guia apenas abrangem a configuração do Workload Identity no GKE. Para o AKS e o EKS, siga os procedimentos em Ativar a federação de identidade da carga de trabalho no AKS e no EKS

Configure o Workload Identity no GKE

Contas de serviço do Google Cloud e contas de serviço do Kubernetes

Uma conta de serviço do Google Cloud é um tipo especial de conta que pode ser usada para fazer chamadas API autorizadas através da autenticação como a própria conta de serviço. As contas de serviço do Google Cloud podem receber funções e autorizações semelhantes às de um utilizador individual. Quando uma aplicação se autentica como uma conta de serviço, tem acesso a todos os recursos aos quais a conta de serviço tem autorização de acesso. Se quiser saber mais sobre as contas de serviço do Google Cloud, consulte o artigo Vista geral das contas de serviço.

Criou contas de serviço do Google Cloud para a sua instalação híbrida do Apigee no Passo 4: crie contas de serviço. O Apigee usa estas contas de serviço para autenticar os componentes híbridos.

As contas de serviço do Kubernetes são semelhantes às contas de serviço do Google Cloud. Uma conta de serviço do Kubernetes fornece uma identidade para processos executados num pod e permite-lhe autenticar-se no servidor da API de forma semelhante a um utilizador. Se quiser saber mais sobre as contas de serviço do Kubernetes, consulte o artigo Configure Service Accounts for Pods (apenas em inglês).

Se tiver gcp.workloadIdentity.enabled definido como true no ficheiro de substituições, quando os gráficos Helm para cada componente híbrido criarem as contas de serviço do Kubernetes para os componentes quando os instalar ou atualizar, tal como fez no Passo 10: instale o Apigee hybrid com o Helm.

Quando configura o Workload Identity no GKE, associa as contas de serviço do Google Cloud às contas de serviço do Kubernetes no cluster do Kubernetes. Desta forma, as contas de serviço do Kubernetes podem roubar a identidade das contas de serviço do Google Cloud e usar as respetivas funções e autorizações atribuídas para fazer a autenticação nos componentes híbridos.

Siga estas instruções para configurar o Workload Identity para o seu projeto.

Prepare-se para configurar o Workload Identity

  1. Verifique se a Identidade de carga de trabalho está ativada no ficheiro de substituições. Deve ser ativado no ficheiro de substituições nas seguintes propriedades.
    • namespace é obrigatório. Por exemplo:
      instanceID: "hybrid-instance-1"
      namespace: "apigee"
      
    • Se estiver a usar uma única conta de serviço (não de produção) para todos os componentes, especifique-a com: gcp.workloadIdentity.gsa. Por exemplo:
        gcp:
          workloadIdentity:
            enabled: true
            gsa: "apigee-non-prod@my-hybrid-project.iam.gserviceaccount.com"
        
    • Se estiver a usar uma conta de serviço separada para cada componente (instalações de produção), especifique a conta de serviço com a propriedade gsa do componente. Por exemplo:
        logger:
          gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
        

    Veja: gcp.workloadIdentity.enabled.

  2. Verifique se a configuração gcloud atual está definida para o ID do projeto do Google Cloud com o seguinte comando:
    gcloud config get project
  3. Se necessário, defina a configuração gcloud atual:

    gcloud config set project $PROJECT_ID
  4. Verifique se o Workload Identity está ativado para o seu cluster do GKE. Quando criou o cluster no Passo 1: crie um cluster, o passo 6 consistia em ativar o Workload Identity. Pode confirmar se o Workload Identity está ativado executando o seguinte comando:

    Clusters regionais

    gcloud container clusters describe $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Clusters zonais

    gcloud container clusters describe $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    O resultado deve ter o seguinte aspeto:

      ---
      workloadPool: PROJECT_ID.svc.id.goog

    Se vir null nos resultados, execute o seguinte comando para ativar a identidade da carga de trabalho para o seu cluster:

    Clusters regionais

    gcloud container clusters update $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --project $PROJECT_ID \
      --region $CLUSTER_LOCATION

    Clusters zonais

    gcloud container clusters update  $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID
  5. Ative a identidade de carga de trabalho para cada grupo de nós com os seguintes comandos. Esta operação pode demorar até 30 minutos para cada conjunto de nós:

    Clusters regionais

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Clusters zonais

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Onde NODE_POOL_NAME é o nome de cada conjunto de nós. Na maioria das instalações do Apigee Hybrid, os dois conjuntos de nós predefinidos têm os nomes apigee-data e apigee-runtime.

  6. Confirme que o Workload Identity está ativado nos seus node pools com os seguintes comandos:

    Clusters regionais

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    Clusters zonais

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    O resultado deve ter um aspeto semelhante ao seguinte:

    ---
    diskSizeGb: 100
    diskType: pd-standard
    ...
    workloadMetadataConfig:
      mode: GKE_METADATA
        

Configure o Workload Identity

Use o procedimento seguinte para ativar o Workload Identity para os seguintes componentes híbridos:

  • apigee-datastore
  • apigee-telemetry
  • apigee-org
  • apigee-env

Quando executa o comando helm upgrade com a flag --dry-run para os gráficos apigee-datastore, apigee-env, apigee-org e apigee-telemetry, o resultado inclui os comandos necessários para configurar a identidade da carga de trabalho com os nomes corretos de GSA e KSA.

Por exemplo:

helm upgrade datastore apigee-datastore/ \
  --namespace APIGEE_NAMESPACE \
  -f overrides.yaml \
  --dry-run=server
NAME: datastore
...
For Cassandra backup GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective kubernetes SA (KSA).
gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-default]" \
      --project my-project

kubectl annotate serviceaccount apigee-cassandra-default \
      iam.gke.io/gcp-service-account=my-service-account@my-project.iam.gserviceaccount.com \
      --namespace apigee
  1. Obtenha o comando para configurar a identidade da carga de trabalho para apigee-datastore e execute o comando em NOTES: na saída.
    helm upgrade datastore apigee-datastore/ \
      --namespace APIGEE_NAMESPACE \
      -f overrides.yaml \
      --dry-run=server
  2. Obtenha os comandos para configurar a identidade da carga de trabalho para apigee-telemetry e execute o comando em NOTES: na saída.
    helm upgrade telemetry apigee-telemetry/ \
      --namespace APIGEE_NAMESPACE \
      -f overrides.yaml \
      --dry-run=server
  3. Obtenha os comandos para configurar a identidade da carga de trabalho para apigee-org e execute o comando em NOTES: na saída.
    helm upgrade $ORG_NAME apigee-org/ \
      --namespace APIGEE_NAMESPACE \
      -f overrides.yaml \
      --dry-run=server
  4. Obtenha os comandos para configurar a identidade da carga de trabalho para apigee-env e execute o comando em NOTES: na saída.
    helm upgrade $ENV_NAME apigee-env/ \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f overrides.yaml \
      --dry-run=server

    Repita este passo para cada ambiente na sua instalação.

  5. (Opcional) Pode ver o estado das suas contas de serviço do Kubernetes na página Kubernetes: Vista geral das cargas de trabalho no Google Cloud console.

    Aceda a Cargas de trabalho

Passos seguintes

No passo seguinte, vai configurar o gateway de entrada do Apigee e implementar um proxy para testar a instalação.

Passo seguinte

(NEXT) Passo 1: exponha a entrada do Apigee 2