GKE somente com a Identidade da carga de trabalho: configurar a Identidade da carga de trabalho
Siga estas etapas se você tiver configurado o arquivo de substituições para a Identidade da carga de trabalho no GKE na Etapa 6: configurar o cluster.
Se você não estiver usando a Identidade da carga de trabalho no GKE, continue com a Parte 3, Etapa 1: expor o gateway de entrada da Apigee.
Contas de serviço do Google Cloud e do Kubernetes
Uma conta de serviço do Google Cloud é um tipo especial de conta que pode ser usada para fazer chamadas de API autorizadas por meio da autenticação como a própria conta de serviço. As contas de serviço do Google Cloud podem receber papéis e permissões semelhantes a um usuário individual. Quando um aplicativo é autenticado como uma conta de serviço, ele tem acesso a todos os recursos que ela tem permissão para acessar. Para saber mais sobre as contas de serviço do Google Cloud, consulte Visão geral de contas de serviço.
Você criou contas de serviço do Google Cloud para a instalação híbrida da Apigee na Etapa 4: Criar contas de serviço. A Apigee usa essas 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 em um pod e permite a autenticação no servidor da API de maneira semelhante a um usuário. Para saber mais sobre contas de serviço do Kubernetes, consulte Configurar contas de serviço para pods.
A ferramenta apigeectl
criou a maioria das contas de serviço do Kubernetes necessárias para a
Apigee híbrida quando você executou apigeectl apply
no procedimento anterior.
Ao configurar a Identidade da carga de trabalho no GKE, você associa as contas de serviço do Google Cloud às contas de serviço do Kubernetes no cluster do Kubernetes. Dessa forma, as contas de serviço do Kubernetes podem representar as contas de serviço do Google Cloud e usar os papéis e permissões atribuídos para a autenticação nos componentes híbridos.
Siga essas instruções para configurar a Identidade da carga de trabalho para seu projeto.
Preparar-se para configurar a Identidade da carga de trabalho
Esses procedimentos usam as seguintes variáveis de ambiente. Verifique se elas estão definidas e configure aquelas que não estiverem:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $PROJECT_ID
echo $ORG_NAME
- Verifique se a configuração
gcloud
atual está definida como o ID do projeto do Google Cloud com o comando a seguir:gcloud config get project
- Crie a conta de serviço do Kubernetes
apigee-cassandra-restore
.Quando você aplicou sua configuração executando
apigeectl apply
, o comando criou a maioria das contas de serviço do Kubernetes necessárias para a Identidade da carga de trabalho.Para criar a conta de serviço do Kubernetes
apigee-cassandra-restore
, executeapigeectl apply
com a flag--restore
:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- Verifique se a Identidade da carga de trabalho está ativada no cluster do GKE. Quando você criou o cluster
na Etapa 1: criar um cluster, a etapa 6 foi ativar a
Identidade da carga de trabalho. Confirme se a Identidade da carga de trabalho está ativada 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'
A saída será semelhante a esta:
--- workloadPool: PROJECT_ID.svc.id.goog
Se você vir
null
nos resultados, execute o seguinte comando a fim de ativar a Identidade da carga de trabalho no 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 da carga de trabalho para cada pool de nós com os comandos a seguir. Essa operação pode levar 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
Em que NODE_POOL_NAME é o nome de cada pool de nós. Na maioria das instalações da Apigee híbrida, os dois pools de nós padrão são denominados
apigee-data
eapigee-runtime
. - Verifique se a Identidade da carga de trabalho está ativada nos pools de nós 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:"
A resposta será semelhante a esta:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATA
- Confira uma lista dos nomes das contas de serviço do Google Cloud para seu projeto. Você precisará desses
nomes para associar as contas de serviço do Kubernetes e configurar a Identidade da carga de trabalho. Para
instalações de não produção, deve haver apenas uma conta de serviço do Google. Para instalações
de produção, é preciso haver oito.
Use o seguinte comando para acessar a lista de nomes:
gcloud iam service-accounts list --project $PROJECT_ID
A resposta será semelhante a esta:
Sem produção
Para ambientes de produção:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Produção
Para ambientes de 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
- Confira uma lista dos nomes das contas de serviço do Kubernetes. Você precisará dessa lista de nomes para
a associação às contas de serviço do Google Cloud posteriormente neste procedimento. Use o comando a seguir:
kubectl get sa -n $NAMESPACE
A saída será semelhante a esta: As contas de serviço do Kubernetes em negrito são aquelas que você precisará associar às 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 atual da gcloud
:
gcloud config set project $PROJECT_ID
Configurar a Identidade da carga de trabalho
Siga este procedimento para ativar a Identidade da carga de trabalho na instalação híbrida:
-
Para cada componente da Apigee, anote as contas de serviço correspondentes do Kubernetes com a
conta de serviço do Google para o componente.
As etapas a seguir usam duas variáveis de ambiente. Você redefinirá os valores dessas variáveis antes de cada conjunto de comandos:
- GSA_NAME: o nome de uma conta de serviço do Google. Essas são as
contas de serviço que você criou com a ferramenta
create-service-account
na Etapa 4: criar contas de serviço. - KSA_NAME: o nome de uma conta de serviço do Kubernetes. Essas são as
contas que você listou 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 do Google. Essas são as
contas de serviço que você criou com a ferramenta
- Cassandra
Configure a Identidade da carga de trabalho 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
Sem produção
Configure a conta de serviço do Kubernetes
apigee-cassandra-backup
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup"
- Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída precisa ter uma linha descrevendo a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
Configure a conta de serviço do Kubernetes
apigee-cassandra-restore
- Redefina a variável de ambiente
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a conta de serviço do Kubernetes
apigee-cassandra-schema-setup
- Redefina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a conta de serviço do Kubernetes
apigee-cassandra-schema-val
- Redefina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a conta de serviço do Kubernetes
apigee-cassandra-user-setup
- Redefina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a conta de serviço do Kubernetes
apigee-datastore-default-sa
- Redefina a variável de ambiente
KSA_NAME
:KSA_NAME="apigee-datastore-default-sa"
- Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Produção
Configure a conta de serviço do Kubernetes
apigee-cassandra-backup
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup"
- Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída precisa ter uma linha descrevendo a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
Configure a conta de serviço do Kubernetes
apigee-cassandra-restore
- Redefina a variável de ambiente
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Vincule o papel do 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
- Anote 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 conta de serviço do Kubernetes
apigee-cassandra-schema-setup
- Redefina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Vincule o papel do 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 conta de serviço do Kubernetes
apigee-cassandra-schema-val
- Redefina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a conta de serviço do Kubernetes
apigee-cassandra-user-setup
- Redefina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Configure a conta de serviço do Kubernetes
apigee-datastore-default-sa
- Redefina a variável de ambiente
KSA_NAME
:KSA_NAME="apigee-datastore-default-sa"
- Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Configure a Identidade da carga de trabalho para o componente Apigee Connect.
Sem produção
- Defina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Vincule o papel do 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
- Anote 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
- Verifique 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
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a variável de ambiente
- MART
Configure a Identidade da carga de trabalho para o componente MART.
Sem produção
- Defina a variável de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Vincule o papel do 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
- Anote 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
- Verifique 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
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a variável de ambiente
- Métricas da Apigee
Configure a Identidade da carga de trabalho para o componente de métricas da Apigee.
Sem produção
- Defina as variáveis de ambiente
KSA_NAME
:KSA_NAME="apigee-metrics-sa"
- Vincule o papel do 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
- Anote 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
- Verifique 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"
- Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as variáveis de ambiente
- UDCA (nível organizacional)
Configure a Identidade da carga de trabalho para o componente UDCA no nível da organização.
O UDCA é implementado nos escopos no nível da organização e do ambiente. Portanto, há duas contas de serviço do Kubernetes separadas para UDCA, uma para cada escopo. É possível diferenciá-las pelo nome da conta. A conta de escopo do ambiente inclui o nome do ambiente no nome da conta de serviço. Exemplo:
- Nível da organização:
apigee-udca-my-project-id-123abcd-sa
, em quemy-project-id
é o ID do projeto do nome. - Nível do ambiente:
apigee-udca-my-project-id-my-env-234bcde-sa
, em quemy-env
é o nome do ambiente.
Sem produção
- Defina as variáveis de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Vincule o papel do 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
- Anote 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
- Verifique 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
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Nível da organização:
- Apigee Watcher
Configure a Identidade da carga de trabalho para o componente Apigee Watcher.
Sem produção
- Defina as variáveis de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Vincule o papel do 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
- Anote 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
- Verifique 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
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as variáveis de ambiente
- Ambiente de execução
Configure a Identidade da carga de trabalho para o componente do ambiente de execução da Apigee.
Sem produção
- Defina as variáveis de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Vincule o papel do 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
- Anote 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
- Verifique 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
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as variáveis de ambiente
- Sincronizador
Configure a Identidade da carga de trabalho para o componente do sincronizador.
Sem produção
- Defina as variáveis de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Vincule o papel do 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
- Anote 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
- Verifique 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
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as variáveis de ambiente
- UDCA (nível do ambiente)
Configure a Identidade da carga de trabalho para o componente UDCA no nível do ambiente.
Sem produção
- Defina as variáveis de ambiente
KSA_NAME
: Por exemplo:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Vincule o papel do 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
- Anote 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
- Verifique 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
. - Vincule o papel do 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
- Anote 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
- Verifique a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as variáveis de ambiente
- Opcional: exclua os arquivos de chave da conta de serviço transferidos por download.
Se você criou as contas de serviço do Google com a ferramenta
create-service-account
, isso pode ter criado chaves de conta de serviço e feito o download dos arquivos de chave.json
. Ao usar a Identidade da carga de trabalho no GKE, esses arquivos de chave não são necessários.Exclua os arquivos de chave com o seguinte comando:
rm $HYBRID_FILES/service-accounts/*.json
Verificar a Identidade da carga de trabalho
- (Opcional) Veja o status das suas contas de serviço do Kubernetes na página Kubernetes: visão geral das cargas de trabalho no console do Google Cloud.
- Para verificar o status da implantação novamente com
apigeectl check-ready
:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml