Aplique a configuração ao cluster
Siga os passos abaixo para instalar o Apigee hybrid no seu cluster:
- Certifique-se de que está no diretório
hybrid-base-directory/hybrid-files.cd $HYBRID_FILES
- Verifique se
kubectlestá definido para o contexto correto através do seguinte comando. O contexto atual deve ser definido para o cluster no qual está a implementar o Apigee Hybrid.kubectl config current-context
O resultado deve incluir o nome do cluster no qual está a implementar o Apigee hybrid. Por exemplo, no GKE, o nome do contexto está normalmente no formato
gke_project-id_cluster-location_cluster-name, como em:gke_my-project_us-central1_my-cluster
Se o nome do cluster no contexto não corresponder, o comando seguinte obtém as credenciais
gclouddo cluster e define 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
- Apenas para as plataformas Anthos on bare metal, AWS on GKE, EKS e GKE on prem, verifique se a variável
KUBECONFIGestá definida através do seguinte comando:echo ${KUBECONFIG} - Faça uma inicialização de execução de ensaio. A execução de um teste permite-lhe verificar a existência de erros antes de serem feitas alterações ao cluster. Execute o comando
initcom a flag--dry-runda seguinte forma:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client - Se não houver erros, execute o comando
initda seguinte forma:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yamlO comando
initinstala os serviços de implementação do Apigee Apigee Deployment Controller e Apigee Admission Webhook. - Para verificar o estado da implementação, pode usar 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, avance para o passo seguinte.
- Faça uma instalação de execução de ensaio. Execute o comando
applycom a flag--dry-run.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client -
Se não existirem erros, pode aplicar os
componentes de tempo de execução específicos do Apigee ao cluster com o seguinte comando:
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml - Para verificar o estado da implementação, execute o seguinte comando:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlRepita este passo até que todos os pods estejam prontos. Os pods podem demorar vários minutos a iniciar.
GKE com Workload Identity
Se estiver a usar a Workload Identity no GKE, siga estas instruções para associar as contas de serviço do Kubernetes
criadas pelo apigeectl às contas de serviço Google que criou
no Passo 4: crie contas de serviço e credenciais.
Estes procedimentos usam as seguintes variáveis de ambiente. Defina estes valores na shell de comandos ou substitua-os nos exemplos de código pelos valores reais:
APIGEECTL_HOME: o diretório onde instalou oapigeectl.CLUSTER_LOCATION: a região ou a zona do seu cluster, por exemplo:us-west1.CLUSTER_LOCATION: o nome do cluster.ENV_NAME: o nome do ambiente do Apigee.NAMESPACE: o seu espaço de nomes do Apigee. Por predefinição,apigee.HYBRID_FILES: o diretório de ficheiros híbridos, por exemplo,hybrid-base-directory/hybrid-files.ORG_NAME: o nome da sua organização do Apigee.PROJECT_ID: o ID do seu 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 qualquer uma das variáveis de que precisa:
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: elimine os ficheiros de chaves da conta de serviço.
Quando executa o Apigee hybrid no GKE, a prática padrão é criar e transferir chaves privadas (ficheiros
.json) para cada uma das contas de serviço. Quando usa o Workload Identity, não precisa de transferir chaves privadas de contas de serviço e adicioná-las a clusters do GKE.Pode eliminar os ficheiros de chaves com o seguinte comando:
rm $HYBRID_FILES/service-accounts/*.json
- Verifique se a configuração atual do ID do projeto do Google Cloud com o seguinte comando:
gcloudgcloud config get project
- Crie a
apigee-cassandra-restoreconta de serviço do Kubernetes.Quando aplicou a configuração executando
apigeectl apply, o comando criou a maioria das contas de serviço do Kubernetes necessárias para a identidade de carga de trabalho.Para criar a conta de serviço do Kubernetes, execute o comando
apigeectl applycom a flag--restore:apigee-cassandra-restore$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- Verifique se o Workload Identity está ativado para o seu cluster do GKE. Quando criou o cluster
no Passo 1: crie um cluster, o passo 6 consistia em ativar
o Workload Identity. Pode confirmar se o Workload Identity está ativado executando o seguinte comando:
Clusters regionais
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Clusters zonais
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Se o Workload Identity estiver ativado para o cluster, o resultado deve ser semelhante ao seguinte:
--- workloadPool: PROJECT_ID.svc.id.goog
Se vir
nullnos resultados, execute o seguinte comando para ativar a identidade da carga de trabalho para o seu cluster:Clusters regionais
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
Clusters zonais
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- Verifique se o Workload Identity está ativado nos seus node pools com os seguintes comandos:
Clusters regionais
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
Clusters zonais
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
O resultado deve ter um aspeto semelhante ao seguinte:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATASe o resultado não contiver uma linha para
workloadMetadataConfig:, ative a identidade de carga de trabalho para cada conjunto de nós com os seguintes comandos. Esta operação pode demorar 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
Onde NODE_POOL_NAME é o nome de cada conjunto de nós. Na maioria das instalações do Apigee Hybrid, os dois conjuntos de nós predefinidos têm os nomes
apigee-dataeapigee-runtime. - Verifique os nomes das contas de serviço Google para o seu projeto com o seguinte comando:
gcloud iam service-accounts list --project $PROJECT_ID
O resultado deve ter um aspeto semelhante ao seguinte:
Não prod
Para ambientes de não produção:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Prod
Para ambientes de não produção:
DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my_project_id.iam.gserviceaccount.com False apigee-logger apigee-logger@my_project_id.iam.gserviceaccount.com False apigee-mart apigee-mart@my_project_id.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my_project_id.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my_project_id.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my_project_id.iam.gserviceaccount.com False apigee-udca apigee-udca@my_project_id.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my_project_id.iam.gserviceaccount.com False
- Valide as contas de serviço com o seguinte comando:
kubectl get sa -n $NAMESPACE
O resultado deve ter um aspeto semelhante ao seguinte. As contas de serviço do Kubernetes em negrito são as que tem de anotar com as suas contas de serviço 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 do Apigee, anote as contas de serviço do Kubernetes correspondentes com a conta de serviço Google para o componente.
Os passos seguintes usam duas variáveis de ambiente. Repõe os valores destas variáveis antes de cada conjunto de comandos:
- GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta
create-service-accountno passo 4: crie contas de serviço. - KSA_NAME: O nome de uma conta de serviço do Kubernetes. Estas são as contas que indicou acima com o comando
kubectl get sa -n $NAMESPACE, por exemplo:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
- GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta
- Cassandra
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
Não prod
Os passos seguintes usam duas variáveis de ambiente. Repõe os valores destas variáveis antes de cada conjunto de comandos:
- GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta
create-service-accountno passo 4: crie contas de serviço. - KSA_NAME: O nome de uma conta de serviço do Kubernetes. Estas são as contas que indicou acima com o comando
kubectl get sa -n $NAMESPACE.
apigee-cassandra-backupConta de serviço do Kubernetes- Defina as variáveis de ambiente
KSA_NAMEeGSA_NAME:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup" - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída deve ter uma linha que descreva a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restoreConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente:KSA_NAME="apigee-cassandra-restore"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-setupConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-valConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setupConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-saConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
apigee-cassandra-backupConta de serviço do Kubernetes- Defina as variáveis de ambiente
KSA_NAMEeGSA_NAME:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup" - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída deve ter uma linha que descreva a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restoreConta de serviço do Kubernetes- Redefina a variável de ambiente
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
apigee-cassandra-schema-setupConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
apigee-cassandra-schema-valConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setupConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-saConta de serviço do Kubernetes- Redefina a
KSA_NAMEvariável de ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Não prod
- Defina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a
- MART
Não prod
- Defina a
KSA_NAMEvariável de ambiente: por exemplo:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a
- Métricas da Apigee
Não prod
- Defina as
KSA_NAMEvariáveis de ambiente:KSA_NAME="apigee-metrics-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAMEeGSA_NAME:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa" - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- UDCA (org-level)
A UDCA é implementada nos âmbitos ao nível da organização e do ambiente. Por conseguinte, existem duas contas de serviço do Kubernetes separadas para o UDCA, uma para cada âmbito. Pode distinguir as contas pelo nome. A conta com âmbito de ambiente inclui o nome do ambiente no nome da conta de serviço. Por exemplo:
- Nível da organização:
apigee-udca-my-project-id-123abcd-saondemy-project-idé o ID do projeto. - Env-level:
apigee-udca-my-project-id-my-env-234bcde-saem quemy-envé o nome do ambiente.
Não prod
- Defina as
KSA_NAMEvariáveis de ambiente: por exemplo:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID - Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com - Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Nível da organização:
- Apigee Watcher
Não prod
- Defina as
KSA_NAMEvariáveis de ambiente: por exemplo:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- Tempo de execução
Não prod
- Defina as
KSA_NAMEvariáveis de ambiente: por exemplo:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- Sincronizador
Não prod
- Defina as
KSA_NAMEvariáveis de ambiente: por exemplo:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- UDCA (env-level)
Não prod
- Defina as
KSA_NAMEvariáveis de ambiente: por exemplo:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
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. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- (Opcional) Pode ver o estado das suas contas de serviço do Kubernetes na página Kubernetes: Vista geral das cargas de trabalho no Google Cloud console.
- Para verificar novamente o estado da implementação com
apigeectl check-ready:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
Se necessário, defina a configuração gcloud atual:
gcloud config set project $PROJECT_ID