Applica la configurazione al cluster.
Per installare Apigee hybrid nel cluster:
- Assicurati di trovarti nella directory
hybrid-base-directory/hybrid-files.cd $HYBRID_FILES
- Verifica che
kubectlsia impostato sul contesto corretto utilizzando il seguente comando. Il contesto attuale deve essere impostato sul cluster in cui stai eseguendo il deployment di Apigee hybrid.kubectl config current-context
Il risultato deve includere il nome del cluster in cui stai eseguendo il deployment di Apigee Hybrid. Ad esempio, su GKE, il nome del contesto è in genere nel formato
gke_project-id_cluster-location_cluster-name, come in:gke_my-project_us-central1_my-cluster
Se il nome del cluster nel contesto non corrisponde, il seguente comando recupererà le credenziali
gclouddel cluster e imposterà il contestokubectl:Cluster a livello di regione
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
Cluster di zona
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- Solo per le piattaforme Anthos on bare metal, AWS su GKE, EKS e GKE on-prem, verifica
che la variabile
KUBECONFIGsia impostata utilizzando il seguente comando:echo ${KUBECONFIG} - Esegui l'inizializzazione di un dry run. L'esecuzione di una prova generale consente di verificare la presenza di errori prima che vengano apportate modifiche al cluster. Esegui il comando
initcon il flag--dry-runcome segue:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client - Se non sono presenti errori, esegui il comando
initcome segue:${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yamlIl comando
initinstalla Apigee deployment services, Apigee Deployment Controller e Apigee Admission Webhook. - Per controllare lo stato del deployment, puoi utilizzare i seguenti comandi:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlkubectl get pods -n apigee-system
kubectl get pods -n apigee
Quando i pod sono pronti, vai al passaggio successivo.
- Esegui un'installazione dry run. Esegui il comando
applycon il flag--dry-run.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client -
Se non ci sono errori, puoi applicare i
componenti di runtime specifici di Apigee al cluster con il seguente comando:
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml - Per controllare lo stato del deployment, esegui questo comando:
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yamlRipeti questo passaggio finché tutti i pod non sono pronti. L'avvio dei pod potrebbe richiedere diversi minuti.
GKE con Workload Identity
Se utilizzi Workload Identity su GKE, segui queste istruzioni per associare i service account Kubernetes creati da apigeectl ai service account Google che hai creato nel passaggio 4: crea service account e credenziali.
Queste procedure utilizzano le seguenti variabili di ambiente. Imposta questi valori nella shell dei comandi o sostituiscili negli esempi di codice con i valori effettivi:
APIGEECTL_HOME: la directory in cui hai installatoapigeectl.CLUSTER_LOCATION: la regione o la zona del tuo cluster, ad esempio:us-west1.CLUSTER_LOCATION: il nome del cluster.ENV_NAME: il nome dell'ambiente Apigee.NAMESPACE: il tuo spazio dei nomi Apigee. Per impostazione predefinita,apigee.HYBRID_FILES: la directory dei file ibridi, ad esempiohybrid-base-directory/hybrid-files.ORG_NAME: il nome della tua organizzazione Apigee.PROJECT_ID: l'ID del tuo progetto Google Cloud.
Verifica le variabili di ambiente:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $ORG_NAMEecho $PROJECT_ID
Inizializza le variabili che ti servono:
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
- (Facoltativo) Elimina i file delle chiavi del account di servizio.
Quando esegui Apigee Hybrid su GKE, la prassi standard è creare e scaricare chiavi private (file
.json) per ciascuno dei service account. Quando utilizzi Workload Identity, non devi scaricare le chiavi private del account di servizio e aggiungerle ai cluster GKE.Puoi eliminare i file delle chiavi con il seguente comando:
rm $HYBRID_FILES/service-accounts/*.json
- Verifica che la configurazione
gcloudcorrente sia impostata sull'ID progetto Google Cloud con il seguente comando:gcloud config get project
- Crea il account di servizio Kubernetes
apigee-cassandra-restore.Quando hai applicato la configurazione eseguendo
apigeectl apply, il comando ha creato la maggior parte dei service account Kubernetes necessari per Workload Identity.Per creare il account di servizio Kubernetes
apigee-cassandra-restore, eseguiapigeectl applycon il flag--restore:$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- Verifica che Workload Identity sia abilitato per il tuo cluster GKE. Quando hai creato il cluster
nel passaggio 1: crea un cluster, il passaggio 6 consisteva nell'abilitare
Workload Identity. Puoi verificare se Workload Identity è abilitata eseguendo il seguente comando:
Cluster a livello di regione
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Cluster di zona
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Se Workload Identity è abilitato per il cluster, l'output dovrebbe essere simile al seguente:
--- workloadPool: PROJECT_ID.svc.id.goog
Se nei risultati visualizzi
null, esegui questo comando per abilitare Workload Identity per il cluster:Cluster a livello di regione
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
Cluster di zona
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- Verifica che Workload Identity sia abilitato nei pool di nodi con i seguenti comandi:
Cluster a livello di regione
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:"
Cluster di zona
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:"
L'output dovrebbe essere simile a questo:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATASe l'output non contiene una riga per
workloadMetadataConfig:, abilita Workload Identity per ogni pool di nodi con i seguenti comandi. Questa operazione può richiedere fino a 30 minuti:Cluster a livello di regione
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
Cluster di zona
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
dove NODE_POOL_NAME è il nome di ogni pool di nodi. Nella maggior parte delle installazioni di Apigee Hybrid, i due pool di nodi predefiniti sono denominati
apigee-dataeapigee-runtime. - Controlla i nomi dei service account Google per il tuo progetto con il seguente comando:
gcloud iam service-accounts list --project $PROJECT_ID
L'output dovrebbe essere simile a questo:
Non di produzione
Per gli ambienti non di produzione:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
Prod
Per gli ambienti non di produzione:
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
- Verifica i service account con il seguente comando:
kubectl get sa -n $NAMESPACE
L'output dovrebbe essere simile al seguente. I service account Kubernetes in grassetto sono quelli che dovrai annotare con i tuoi service account 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 -
Per ogni componente Apigee, annota i service account Kubernetes corrispondenti con il account di servizio Google per il componente.
I seguenti passaggi utilizzano due variabili di ambiente. Reimposterai i valori di queste variabili prima di ogni insieme di comandi:
- GSA_NAME: il nome di un account di servizio Google. Si tratta degli
account di servizio che hai creato con lo strumento
create-service-accountnel passaggio 4: crea service account. - KSA_NAME: il nome di un account di servizio Kubernetes. Questi sono gli
account che hai elencato sopra con il comando
kubectl get sa -n $NAMESPACE, ad esempio:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
- GSA_NAME: il nome di un account di servizio Google. Si tratta degli
account di servizio che hai creato con lo strumento
- Cassandra
Il componente Cassandra ha sei service account Kubernetes associati:
apigee-cassandra-backupapigee-cassandra-restoreapigee-cassandra-schema-setupapigee-cassandra-schema-val(val= convalida)apigee-cassandra-user-setupapigee-datastore-default
Non di produzione
I seguenti passaggi utilizzano due variabili di ambiente. Reimposterai i valori di queste variabili prima di ogni insieme di comandi:
- GSA_NAME: il nome di un account di servizio Google. Si tratta degli
account di servizio che hai creato con lo strumento
create-service-accountnel passaggio 4: crea service account. - KSA_NAME: il nome di un account di servizio Kubernetes. Questi sono gli
account che hai elencato sopra con il comando
kubectl get sa -n $NAMESPACE.
apigee-cassandra-backupService account Kubernetes- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME:GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup" - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
L'output dovrebbe contenere una riga che descrive l'annotazione, simile a questa:
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restoreService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-setupService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-valService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setupService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-saService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
apigee-cassandra-backupService account Kubernetes- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME:GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup" - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
L'output dovrebbe contenere una riga che descrive l'annotazione, simile a questa:
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restoreService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME:KSA_NAME="apigee-cassandra-restore"
- Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
apigee-cassandra-schema-setupService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa. - Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Associa il ruolo 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-valService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setupService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-saService account Kubernetes- Ridefinisci la variabile di ambiente
KSA_NAME:KSA_NAME="apigee-datastore-default-sa"
- Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
Non di produzione
- Definisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME: ad esempio:GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"apigee-connect-agent-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci la variabile di ambiente
- MART
Non di produzione
- Definisci la variabile di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME: ad esempio:GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"apigee-mart-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci la variabile di ambiente
- Metriche Apigee
Non di produzione
- Definisci le variabili di ambiente
KSA_NAME:KSA_NAME="apigee-metrics-sa"
- Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME:GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa" - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le variabili di ambiente
- UDCA (a livello di organizzazione)
UDCA viene implementato sia a livello di organizzazione che di ambiente. Pertanto, esistono due service account Kubernetes separati per UDCA, uno per ogni ambito. Puoi distinguerli in base al nome dell'account. L'account con ambito ambiente include il nome dell'ambiente nel nome dell'account di servizio. Ad esempio:
- A livello di organizzazione:
apigee-udca-my-project-id-123abcd-sadovemy-project-idè l'ID progetto. - A livello di ambiente:
apigee-udca-my-project-id-my-env-234bcde-sadovemy-envè il nome dell'ambiente.
Non di produzione
- Definisci le variabili di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa. - Associa il ruolo 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 - Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com - Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME: ad esempio:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"apigee-udca-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- A livello di organizzazione:
- Apigee Watcher
Non di produzione
- Definisci le variabili di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME: ad esempio:GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"apigee-watcher-hybrid-example-project-123abcd-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le variabili di ambiente
- Runtime
Non di produzione
- Definisci le variabili di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME: ad esempio:GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"apigee-runtime-hybrid-example-project-example-env-234bcde-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le variabili di ambiente
- Synchronizer
Non di produzione
- Definisci le variabili di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME: ad esempio:GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le variabili di ambiente
- UDCA (a livello di ambiente)
Non di produzione
- Definisci le variabili di ambiente
KSA_NAME: ad esempio:KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
Prod
- Definisci le variabili di ambiente
KSA_NAMEeGSA_NAME: ad esempio:GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"apigee-udca-hybrid-example-project-example-env-234bcde-sa. - Associa il ruolo 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
- Annota il account di servizio:
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- Verifica l'annotazione:
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Definisci le variabili di ambiente
- (Facoltativo) Puoi visualizzare lo stato dei tuoi service account Kubernetes nella pagina Kubernetes: Panoramica dei workload in Google Cloud console.
- Per controllare di nuovo lo stato del deployment con
apigeectl check-ready:${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
Se necessario, imposta la configurazione gcloud attuale:
gcloud config set project $PROJECT_ID