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
Per le installazioni ibride di Apigee su GKE, Google Cloud offre un'opzione chiamata Workload Identity per autenticare i componenti di runtime ibrido.
Account di servizio Google Cloud e account di servizio Kubernetes
Un account di servizio Google Cloud è un tipo speciale di account che può essere utilizzato per effettuare chiamate API autorizzate autenticandosi come account di servizio stesso. Ai service account Google Cloud possono essere assegnati ruoli e autorizzazioni simili a quelli di un singolo utente. Quando un'applicazione si autentica come account di servizio, ha accesso a tutte le risorse a cui il account di servizio ha l'autorizzazione di accedere. Se vuoi saperne di più sui service account Google Cloud, consulta la Panoramica dei service account.
Hai creato account di servizio Google Cloud per l'installazione di Apigee Hybrid in Passaggio 4: crea account di servizio. Apigee utilizza questi service account per autenticare i componenti ibridi.
Gli account di servizio Kubernetes sono simili agli account di servizio Google Cloud. Un service account Kubernetes fornisce un'identità per i processi eseguiti in un pod e consente di autenticarsi al server API in modo simile a un utente. Se vuoi saperne di più sui service account Kubernetes, consulta Configurare i service account per i pod.
Lo strumento apigeectl ha creato la maggior parte dei service account Kubernetes necessari per
Apigee Hybrid quando hai eseguito apigeectl apply nella procedura precedente.
Quando configuri Workload Identity su GKE, associ i service account Google Cloud ai service account Kubernetes nel cluster Kubernetes. In questo modo, gli account di servizio Kubernetes possono rappresentare gli account di servizio Google Cloud e utilizzare i ruoli e le autorizzazioni assegnati per l'autenticazione con i componenti ibridi.
Segui queste istruzioni per configurare Workload Identity per il tuo progetto.
Prepararsi a configurare l'identità del workload
Queste procedure utilizzano le seguenti variabili di ambiente. Controlla che siano definiti e definisci quelli che non lo sono:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATIONecho $ENV_NAMEecho $HYBRID_FILESecho $NAMESPACEecho $PROJECT_IDecho $ORG_NAME
- Verifica che la configurazione
gcloudcorrente sia impostata sul tuo 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 11 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'
L'output dovrebbe avere l'aspetto 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
-
Abilita Workload Identity per ogni pool di nodi con i seguenti comandi. Questa operazione può richiedere fino a 30 minuti per nodo:
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. - 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_METADATA - Ottieni un elenco dei nomi dei service account Google Cloud per il tuo progetto. Ti serviranno per associare i service account Kubernetes per configurare Workload Identity. Per
le installazioni non di produzione, deve essere presente un soloaccount di serviziot Google. Per le installazioni di produzione
devono essere otto.
Utilizza il comando seguente per ottenere l'elenco dei nomi:
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
Produzione
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
- Recupera un elenco dei nomi dei service account Kubernetes. Avrai bisogno di questo elenco di nomi per associarli ai tuoi service account Google Cloud più avanti in questa procedura. Utilizza questo comando:
kubectl get sa -n $NAMESPACE
L'output dovrebbe essere simile al seguente. I service account Kubernetes in grassetto sono quelli che devi associare ai tuoi service account Google Cloud:
NAME SECRETS AGE apigee-cassandra-backup 1 11m apigee-cassandra-restore 1 11m apigee-cassandra-schema-setup-my-project-id-123abcd-sa 1 11m apigee-cassandra-schema-val-my-project-id-123abcd 1 11m apigee-cassandra-user-setup-my-project-id-123abcd-sa 1 11m apigee-connect-agent-my-project-id-123abcd-sa 1 11m apigee-datastore-default-sa 1 11m apigee-ingressgateway 1 11m apigee-ingressgateway-my-project-id-123abcd 1 11m apigee-ingressgateway-manager 1 11m apigee-init 1 11m apigee-mart-my-project-id-123abcd-sa 1 11m apigee-metrics-sa 1 11m apigee-mint-task-scheduler-my-project-id-123abcd-sa 1 11m apigee-redis-default-sa 1 11m apigee-redis-envoy-default-sa 1 11m apigee-runtime-my-project-id-env-name-234bcde-sa 1 11m apigee-synchronizer-my-project-id-env-name-234bcde-sa 1 11m apigee-udca-my-project-id-123abcd-sa 1 11m apigee-udca-my-project-id-env-name-234bcde-sa 1 11m apigee-watcher-my-project-id-123abcd-sa 1 11m default 1 11m
Se necessario, imposta la configurazione gcloud attuale:
gcloud config set project $PROJECT_ID
Configura Workload Identity
Utilizza la seguente procedura per attivare Workload Identity per l'installazione ibrida:
-
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
Configura Workload Identity per il componente 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
Configura il
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
Configura il
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
Configura il
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
Configura il
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
Configura il
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
Configura il
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
Produzione
Configura il
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
Configura il
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
Configura il
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
Configura il
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
Configura il
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
Configura il
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
Configura Workload Identity per il componente 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
Produzione
- 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
Configura Workload Identity per il componente 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
Produzione
- 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
Configura Workload Identity per il componente delle 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
Produzione
- 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)
Configura Workload Identity per il componente 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
Produzione
- 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
Configura Workload Identity per il componente 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
Produzione
- 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
- Tempo di esecuzione
Configura Workload Identity per il componente Apigee 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
Produzione
- 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
Configura Workload Identity per il componente 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
Produzione
- 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)
Configura Workload Identity per il componente 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
Produzione
- 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) Elimina i file della chiave del account di servizio scaricati.
Se hai creato i service account Google con lo strumento
create-service-account, potrebbe aver creato le chiavi del account di servizio e scaricato i file delle chiavi.json. Quando utilizzi Workload Identity su GKE, non hai bisogno di questi file di chiavi.Puoi eliminare i file delle chiavi con il seguente comando:
rm $HYBRID_FILES/service-accounts/*.json
Verifica l'identità del workload
- (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