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
kubectlestá 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
gclouddo 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
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
initcom a sinalização--dry-runda seguinte maneira:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client - Se não houver erros, execute o comando
initda seguinte maneira:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yamlO comando
initinstala 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.yamlkubectl 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
applycom 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.yamlRepita 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
Se você estiver usando a Identidade da carga de trabalho no GKE, siga estas instruções para associar as
contas de serviço do Kubernetes criadas por apigeectl às contas de serviço do Google criadas
na Etapa 4: criar contas de serviço e credenciais.
Esses procedimentos usam as seguintes variáveis de ambiente. Elas podem ser definidas no shell de comando ou substituídas nas amostras de código por valores reais:
APIGEECTL_HOME: o diretório em que você instalouapigeectl.CLUSTER_LOCATION: a região ou zona do cluster. Por exemplo:us-west1.CLUSTER_LOCATION: o nome do cluster.ENV_NAME: nome do ambiente da Apigee.NAMESPACE: o namespace da Apigee. O padrão éapigee.HYBRID_FILES: o diretório de arquivos híbridos. Por exemplo,hybrid-base-directory/hybrid-files.ORG_NAME: o nome da organização da Apigee.PROJECT_ID: o ID do projeto do Google Cloud.
Verifique as variáveis de ambiente:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $ORG_NAMEecho $PROJECT_ID
Inicialize uma das variáveis necessárias:
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-locationexport ENV_NAME=my-environment-nameexport HYBRID_FILES=hybrid-base-directory/hybrid-filesexport NAMESPACE=apigeeexport ORG_NAME=$PROJECT_IDexport PROJECT_ID=my-project-id
- Opcional: exclua os arquivos de chave da conta de serviço.
Ao executar a Apigee híbrida no GKE, a prática padrão é criar e fazer o download de chaves privadas (arquivos
.json) para cada uma das contas de serviço. Ao usar a Identidade da carga de trabalho, não é necessário fazer o download de chaves privadas de contas de serviço e adicioná-las a Clusters do GKE.Exclua os arquivos de chave com o seguinte comando:
rm $HYBRID_FILES/service-accounts/*.json
- Verifique a configuração da
gcloudatual para o ID do projeto do Google Cloud com o seguinte comando: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 applycom 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'
Se a Identidade da carga de trabalho estiver ativada no cluster, a saída será semelhante a esta:
--- workloadPool: PROJECT_ID.svc.id.goog
Se você vir
nullnos 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
- 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 saída será semelhante a esta:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATASe a saída não contiver uma linha para
workloadMetadataConfig:, ative a Identidade da carga de trabalho para cada pool de nós com os comandos a seguir. Esta operação pode levar até 30 minutos.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-dataeapigee-runtime. - Verifique os nomes das contas de serviço do Google do seu projeto com o seguinte comando:
gcloud iam service-accounts list --project $PROJECT_ID
A saída 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
Prod.
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
- Verifique as contas de serviço com o seguinte comando:
kubectl get sa -n $NAMESPACE
A saída será semelhante a esta: As contas de serviço do Kubernetes em negrito são as que você precisará anotar com as contas de serviço do Google:
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 -
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-accountna 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
O componente Cassandra tem seis contas de serviço do Kubernetes associadas:
apigee-cassandra-backupapigee-cassandra-restoreapigee-cassandra-schema-setupapigee-cassandra-schema-val(val= validação)apigee-cassandra-user-setupapigee-datastore-default
Sem produção
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-accountna 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.
Conta de serviço do Kubernetes
apigee-cassandra-backup- Defina as variáveis de ambiente
KSA_NAMEeGSA_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
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
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
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
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
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
Prod.
Conta de serviço do Kubernetes
apigee-cassandra-backup- Defina as variáveis de ambiente
KSA_NAMEeGSA_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
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
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
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
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
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
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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)
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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
- Synchronizer
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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)
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
Prod.
- Defina as variáveis de ambiente
KSA_NAMEeGSA_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) Confira o status das suas contas de serviço do Kubernetes na página Kubernetes: visão geral das cargas de trabalho no Google Cloud console.
- Para verificar o status da implantação novamente com
apigeectl check-ready:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
Se necessário, defina a configuração atual da gcloud:
gcloud config set project $PROJECT_ID