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
- 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
. - 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
- 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
-
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
eapigee-runtime
. - 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
Se necessário, defina a configuração gcloud
atual:
gcloud config set project $PROJECT_ID
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
- Obtenha o comando para configurar a identidade da carga de trabalho para
apigee-datastore
e execute o comando emNOTES:
na saída.helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ -f overrides.yaml \ --dry-run=server
- Obtenha os comandos para configurar a identidade da carga de trabalho para
apigee-telemetry
e execute o comando emNOTES:
na saída.helm upgrade telemetry apigee-telemetry/ \ --namespace APIGEE_NAMESPACE \ -f overrides.yaml \ --dry-run=server
- Obtenha os comandos para configurar a identidade da carga de trabalho para
apigee-org
e execute o comando emNOTES:
na saída.helm upgrade $ORG_NAME apigee-org/ \ --namespace APIGEE_NAMESPACE \ -f overrides.yaml \ --dry-run=server
- Obtenha os comandos para configurar a identidade da carga de trabalho para
apigee-env
e execute o comando emNOTES:
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.
- (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.
Passos seguintes
No passo seguinte, vai configurar o gateway de entrada do Apigee e implementar um proxy para testar a instalação.