GKE apenas com Workload Identity: configure o Workload Identity
Siga estes passos se tiver configurado o ficheiro de substituições para o Workload Identity no GKE no Passo 6: configure o cluster.
Se não estiver a usar a identidade de carga de trabalho no GKE, avance para a Parte 3, Passo 1: exponha o gateway de entrada do Apigee.
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).
A ferramenta apigeectl
criou a maioria das contas de serviço do Kubernetes necessárias para o
Apigee Hybrid quando executou apigeectl apply
no procedimento anterior.
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
Estes procedimentos usam as seguintes variáveis de ambiente. Verifique se estão definidos e defina os que não estão:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $PROJECT_ID
echo $ORG_NAME
Onde:
APIGEECTL_HOME
é o diretório onde instalou oapigeectl
.CLUSTER_LOCATION
é a região (ou a zona) do seu cluster, por exemplo,us-central1
.ENV_NAME
é o nome do seu ambiente.HYBRID_FILES
é o diretório onde criou os diretóriosoverrides
ecerts
.NAMESPACE
é o seu espaço de nomes do Apigee.PROJECT_ID
é o seu projeto do Google Cloud.ORG_NAME
é o nome da sua organização do Apigee.
- 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
- Crie a
apigee-cassandra-restore
conta de serviço do Kubernetes.Quando aplicou a configuração executando
apigeectl apply
, o comando criou a maioria das contas de serviço do Kubernetes necessárias para a Workload Identity.Para criar a conta de serviço do Kubernetes, execute o comando
apigeectl apply
com a flag--restore
:apigee-cassandra-restore
$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- 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 nó:
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
- Obtenha uma lista dos nomes das contas de serviço do Google Cloud para o seu projeto. Precisa destes nomes para associar as contas de serviço do Kubernetes para configurar o Workload Identity. Para instalações
de não produção, deve existir apenas uma conta de serviço Google. Para instalações de produção, deve haver oito.
Use o seguinte comando para obter a lista de nomes:
gcloud iam service-accounts list --project $PROJECT_ID
O resultado deve ter um aspeto semelhante ao seguinte:
Não prod
Para ambientes de não produção:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Produção
Para ambientes de não produção:
DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my_project_id.iam.gserviceaccount.com False apigee-logger apigee-logger@my_project_id.iam.gserviceaccount.com False apigee-mart apigee-mart@my_project_id.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my_project_id.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my_project_id.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my_project_id.iam.gserviceaccount.com False apigee-udca apigee-udca@my_project_id.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my_project_id.iam.gserviceaccount.com False
- Obtenha uma lista de nomes das contas de serviço do Kubernetes. Precisa desta lista de nomes para
associar às suas contas de serviço do Google Cloud mais tarde neste procedimento. Use o seguinte comando:
kubectl get sa -n $NAMESPACE
O resultado deve ter um aspeto semelhante ao seguinte. As contas de serviço do Kubernetes em negrito são as que tem de associar às suas contas de serviço do Google Cloud:
NAME SECRETS AGE apigee-cassandra-backup 1 11m apigee-cassandra-restore 1 11m apigee-cassandra-schema-setup-my-project-id-123abcd-sa 1 11m apigee-cassandra-schema-val-my-project-id-123abcd 1 11m apigee-cassandra-user-setup-my-project-id-123abcd-sa 1 11m apigee-connect-agent-my-project-id-123abcd-sa 1 11m apigee-datastore-default-sa 1 11m apigee-ingressgateway 1 11m apigee-ingressgateway-my-project-id-123abcd 1 11m apigee-ingressgateway-manager 1 11m apigee-init 1 11m apigee-mart-my-project-id-123abcd-sa 1 11m apigee-metrics-sa 1 11m apigee-mint-task-scheduler-my-project-id-123abcd-sa 1 11m apigee-redis-default-sa 1 11m apigee-redis-envoy-default-sa 1 11m apigee-runtime-my-project-id-env-name-234bcde-sa 1 11m apigee-synchronizer-my-project-id-env-name-234bcde-sa 1 11m apigee-udca-my-project-id-123abcd-sa 1 11m apigee-udca-my-project-id-env-name-234bcde-sa 1 11m apigee-watcher-my-project-id-123abcd-sa 1 11m default 1 11m
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 a sua instalação híbrida:
-
Para cada componente do Apigee, anote as contas de serviço do Kubernetes correspondentes com a conta de serviço Google para o componente.
Os passos seguintes usam duas variáveis de ambiente. Repõe os valores destas variáveis antes de cada conjunto de comandos:
- GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta
create-service-account
no passo 4: crie contas de serviço. - KSA_NAME: O nome de uma conta de serviço do Kubernetes. Estas são as contas que indicou acima com o comando
kubectl get sa -n $NAMESPACE
, por exemplo:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
.
- GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta
- Cassandra
Configure o Workload Identity para o componente Cassandra.
O componente Cassandra tem seis contas de serviço do Kubernetes associadas:
apigee-cassandra-backup
apigee-cassandra-restore
apigee-cassandra-schema-setup
apigee-cassandra-schema-val
(val
= validação)apigee-cassandra-user-setup
apigee-datastore-default
Não prod
Configure a
apigee-cassandra-backup
conta de serviço do Kubernetes- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída deve ter uma linha que descreva a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
Configure a
apigee-cassandra-restore
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente:KSA_NAME="apigee-cassandra-restore"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a
apigee-cassandra-schema-setup
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a
apigee-cassandra-schema-val
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a
apigee-cassandra-user-setup
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a
apigee-datastore-default-sa
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
Configure a
apigee-cassandra-backup
conta de serviço do Kubernetes- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída deve ter uma linha que descreva a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
Configure a
apigee-cassandra-restore
conta de serviço do Kubernetes- Redefina a variável de ambiente
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
Configure a
apigee-cassandra-schema-setup
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
Configure a
apigee-cassandra-schema-val
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a
apigee-cassandra-user-setup
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a
apigee-datastore-default-sa
conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Configure o Workload Identity para o componente Apigee Connect.
Não prod
- Defina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a
- MART
Configure o Workload Identity para o componente MART.
Não prod
- Defina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a
- Métricas do Apigee
Configure o Workload Identity para o componente de métricas do Apigee.
Não prod
- Defina as
KSA_NAME
variáveis de ambiente:KSA_NAME="apigee-metrics-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- UDCA (org-level)
Configure o Workload Identity para o componente UDCA ao nível da organização.
A UDCA é implementada nos âmbitos ao nível da organização e do ambiente. Por conseguinte, existem duas contas de serviço do Kubernetes separadas para o UDCA, uma para cada âmbito. Pode distinguir as contas pelo nome. A conta com âmbito de ambiente inclui o nome do ambiente no nome da conta de serviço. Por exemplo:
- Nível da organização:
apigee-udca-my-project-id-123abcd-sa
ondemy-project-id
é o ID do projeto do nome. - Env-level:
apigee-udca-my-project-id-my-env-234bcde-sa
em quemy-env
é o nome do ambiente.
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Nível da organização:
- Apigee Watcher
Configure a identidade de carga de trabalho para o componente Apigee Watcher.
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- Runtime
Configure o Workload Identity para o componente Apigee Runtime.
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- Synchronizer
Configure o Workload Identity para o componente Synchronizer.
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- UDCA (env-level)
Configure o Workload Identity para o componente UDCA ao nível do ambiente.
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- Opcional: elimine os ficheiros de chaves da conta de serviço transferidos.
Se criou as contas de serviço Google com a ferramenta
create-service-account
, pode ter criado chaves de contas de serviço e transferido os ficheiros de chaves.json
. Quando usa o Workload Identity no GKE, não precisa destes ficheiros de chaves.Pode eliminar os ficheiros de chaves com o seguinte comando:
rm $HYBRID_FILES/service-accounts/*.json
Valide o Workload Identity
- (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.
- Para verificar novamente o estado da implementação com
apigeectl check-ready
:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml