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
kubectl
está 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
gcloud
do 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
KUBECONFIG
está 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
init
com a flag--dry-run
da seguinte forma:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- Se não houver erros, execute o comando
init
da seguinte forma:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml
O comando
init
instala 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.yaml
kubectl 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
apply
com 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.yaml
Repita 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_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $ORG_NAME
echo $PROJECT_ID
Inicialize qualquer uma das variáveis de que precisa:
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-location
export ENV_NAME=my-environment-name
export HYBRID_FILES=hybrid-base-directory/hybrid-files
export NAMESPACE=apigee
export ORG_NAME=$PROJECT_ID
export 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:
gcloud
gcloud config get project
- Crie a
apigee-cassandra-restore
conta de serviço do Kubernetes.Quando aplicou a configuração executando
apigeectl apply
, o comando criou a maioria das contas de serviço do Kubernetes necessárias para a identidade de carga de trabalho.Para criar a conta de serviço do Kubernetes, execute o comando
apigeectl apply
com a flag--restore
:apigee-cassandra-restore
$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- Verifique se o Workload Identity está ativado para o seu cluster do GKE. Quando criou o cluster
no Passo 1: crie um cluster, o passo 6 consistia em ativar
o Workload Identity. Pode confirmar se o Workload Identity está ativado executando o seguinte comando:
Clusters regionais
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Clusters zonais
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Se o Workload Identity estiver ativado para o cluster, o resultado deve ser semelhante ao seguinte:
--- workloadPool: PROJECT_ID.svc.id.goog
Se vir
null
nos resultados, execute o seguinte comando para ativar a identidade da carga de trabalho para o seu cluster:Clusters regionais
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
Clusters zonais
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- 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_METADATA
Se 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-data
eapigee-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-account
no passo 4: crie contas de serviço. - KSA_NAME: O nome de uma conta de serviço do Kubernetes. Estas são as contas que indicou acima com o comando
kubectl get sa -n $NAMESPACE
, por exemplo:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
.
- GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta
- Cassandra
O componente Cassandra tem seis contas de serviço do Kubernetes associadas:
apigee-cassandra-backup
apigee-cassandra-restore
apigee-cassandra-schema-setup
apigee-cassandra-schema-val
(val
= validação)apigee-cassandra-user-setup
apigee-datastore-default
Não prod
Os passos seguintes usam duas variáveis de ambiente. Repõe os valores destas variáveis antes de cada conjunto de comandos:
- GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta
create-service-account
no passo 4: crie contas de serviço. - KSA_NAME: O nome de uma conta de serviço do Kubernetes. Estas são as contas que indicou acima com o comando
kubectl get sa -n $NAMESPACE
.
apigee-cassandra-backup
Conta de serviço do Kubernetes- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída deve ter uma linha que descreva a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restore
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente:KSA_NAME="apigee-cassandra-restore"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-setup
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-val
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setup
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-sa
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
apigee-cassandra-backup
Conta de serviço do Kubernetes- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
A saída deve ter uma linha que descreva a anotação, semelhante a:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restore
Conta de serviço do Kubernetes- Redefina a variável de ambiente
KSA_NAME
:KSA_NAME="apigee-cassandra-restore"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
apigee-cassandra-schema-setup
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
. - Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
apigee-cassandra-schema-val
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setup
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-sa
Conta de serviço do Kubernetes- Redefina a
KSA_NAME
variável de ambiente:KSA_NAME="apigee-datastore-default-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Não prod
- Defina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a
- MART
Não prod
- Defina a
KSA_NAME
variável de ambiente: por exemplo:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina a
- Métricas da Apigee
Não prod
- Defina as
KSA_NAME
variáveis de ambiente:KSA_NAME="apigee-metrics-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa"
- Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- UDCA (org-level)
A UDCA é implementada nos âmbitos ao nível da organização e do ambiente. Por conseguinte, existem duas contas de serviço do Kubernetes separadas para o UDCA, uma para cada âmbito. Pode distinguir as contas pelo nome. A conta com âmbito de ambiente inclui o nome do ambiente no nome da conta de serviço. Por exemplo:
- Nível da organização:
apigee-udca-my-project-id-123abcd-sa
ondemy-project-id
é o ID do projeto. - Env-level:
apigee-udca-my-project-id-my-env-234bcde-sa
em quemy-env
é o nome do ambiente.
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Nível da organização:
- Apigee Watcher
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- Tempo de execução
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- Sincronizador
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- UDCA (env-level)
Não prod
- Defina as
KSA_NAME
variáveis de ambiente: por exemplo:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Defina as variáveis de ambiente
KSA_NAME
eGSA_NAME
: por exemplo:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
. - Associe a função de IAM:
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- Anotar a conta de serviço:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Valide a anotação:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Defina as
- (Opcional) 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