Aplicar a configuração ao cluster
Siga estas etapas para instalar a Apigee híbrida no cluster:
- Verifique se você está no diretório
hybrid-base-directory/hybrid-files
.cd $HYBRID_FILES
- Verifique se
kubectl
está definido para o contexto correto usando o seguinte comando. O contexto atual será definido como o cluster ao qual você está implantando a Apigee híbrida.kubectl config current-context
O resultado precisa incluir o nome do cluster em que você está implantando a Apigee híbrida. Por exemplo, no GKE, o nome do contexto geralmente está no formato
gke_project-id_cluster-location_cluster-name
, como em:gke_my-project_us-central1_my-cluster
Se o nome do cluster não for correspondente, o comando a seguir receberá as credenciais da
gcloud
do cluster e definirá o contextokubectl
:Clusters regionais
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
Clusters zonais
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- Para plataformas somente Anthos em bare metal, AWS no GKE, EKS e GKE On-Prem, verifique
se a variável
KUBECONFIG
é definida usando o comando a seguir.echo ${KUBECONFIG}
- Faça uma inicialização de simulação. Uma simulação permite verificar se há erros antes de qualquer
alteração no cluster. Execute o comando
init
com a sinalização--dry-run
da seguinte maneira:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- Se não houver erros, execute o comando
init
da seguinte maneira:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml
O comando
init
instala os serviços de implantação da Apigee,, o Apigee Deployment Controller e o Apigee Admission Webhook. - Para verificar o status da implantação, use os seguintes comandos:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
kubectl get pods -n apigee-system
kubectl get pods -n apigee
Quando os pods estiverem prontos, vá para a próxima etapa.
- Faça uma instalação de simulação. Execute o comando
apply
com a sinalização--dry-run
.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
-
Se não houver erros, aplique os
componentes de ambiente de execução específicos da Apigee ao cluster com o seguinte comando:
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
- Para verificar o status da implantação, execute o seguinte comando:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
Repita essa etapa até que os pods estejam prontos. Os pods podem levar vários minutos para serem iniciados.
GKE com a Identidade da carga de trabalho
Para instalações híbridas da Apigee no GKE, o Google Cloud oferece uma opção chamada Identidade da carga de trabalho para autenticar componentes de ambiente de execução híbrido.
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 estas 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 para 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
Use o procedimento a seguir para ativar a Identidade da carga de trabalho para a 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 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 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 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