Apigee hybrid v.1.12 supporta Workload Identity su GKE e Workload Identity Federation su AKS ed EKS. Le procedure descritte in questa guida riguardano solo la configurazione di Workload Identity su GKE. Per AKS ed EKS, segui le procedure descritte in Attivazione della federazione delle identità per i carichi di lavoro su AKS ed EKS.
Configura Workload Identity su GKE
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 eseguendo l'autenticazione 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 account di servizio 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.
Se hai impostato gcp.workloadIdentity.enabled su true nel file di override, i grafici Helm per ogni componente ibrido creeranno gli account di servizio Kubernetes per i componenti quando li installi o li aggiorni, come hai fatto nel passaggio 10: installa Apigee Hybrid utilizzando Helm.
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 Workload Identity
- Verifica che Workload Identity sia abilitato nel file di override. Deve essere abilitato nel file
di override nelle seguenti proprietà.
namespaceè obbligatorio. Ad esempio:instanceID: "hybrid-instance-1" namespace: "apigee"
- Se utilizzi un singolo account di servizio (non di produzione) per tutti i componenti, specificalo con:
gcp.workloadIdentity.gsa. Ad esempio:gcp: workloadIdentity: enabled: true gsa: "apigee-non-prod@my-hybrid-project.iam.gserviceaccount.com" - Se utilizzi un account di servizio separato per ogni componente (installazioni di produzione),
specifica il account di servizio con la proprietà
gsadel componente. Ad esempio:logger: gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
Vedi:
gcp.workloadIdentity.enabled. - Verifica che la configurazione
gcloudcorrente sia impostata sul tuo ID progetto Google Cloud con il seguente comando:gcloud config get project
- 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'
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 tuoi 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
Se necessario, imposta la configurazione gcloud attuale:
gcloud config set project $PROJECT_ID
Configurazione di Workload Identity
Utilizza la seguente procedura per abilitare Workload Identity per i seguenti componenti ibridi:
apigee-datastoreapigee-telemetryapigee-orgapigee-env
Quando esegui helm upgrade con il
flag --dry-run per i grafici apigee-datastore, apigee-env,
apigee-org e apigee-telemetry, l'output includerà i
comandi necessari per configurare Workload Identity con i nomi corretti di GSA e KSA.
Ad esempio:
helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
NAME: datastore
...
For C* backup GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective kubernetes SA (KSA).
gcloud iam service-accounts add-iam-policy-binding \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-backup-sa]" \
--project :my-project
- Recupera il comando per configurare Workload Identity per
apigee-datastoreed eseguilo inNOTES:nell'output.helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
- Recupera i comandi per configurare Workload Identity per
apigee-telemetryed esegui il comando inNOTES:nell'output.helm upgrade telemetry apigee-telemetry/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
- Recupera i comandi per configurare Workload Identity per
apigee-orged esegui il comando inNOTES:nell'output.helm upgrade $ORG_NAME apigee-org/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
- Recupera i comandi per configurare Workload Identity per
apigee-enved esegui il comando inNOTES:nell'output.helm upgrade $ENV_NAME apigee-env/ \ --namespace $NAMESPACE \ --set env=ENV_NAME \ -f overrides.yaml \ --dry-run
Ripeti questo passaggio per ogni ambiente dell'installazione.
- (Facoltativo) Puoi visualizzare lo stato dei tuoi service account Kubernetes nella pagina Kubernetes: Panoramica dei workload in Google Cloud console.
Passaggi successivi
Nel passaggio successivo, configurerai il gateway di ingresso Apigee e implementerai un proxy per testare l'installazione.