Apigee hybrid v.1.12 supporta Workload Identity su GKE e la federazione delle identità per i carichi di lavoro su AKS ed EKS. Le procedure in questa guida riguardano solo la configurazione di Workload Identity su GKE. Per AKS ed EKS, segui le procedure descritte in Abilitare la 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 autenticandosi come l'account di servizio stesso. Gli account di servizio Google Cloud possono ruoli e autorizzazioni assegnati sono simili a quelli di un singolo utente. Quando un'applicazione si autentica come account di servizio, può accedere a tutte le risorse alle quali l'account di servizio è autorizzato ad accedere. Per saperne di più sugli account di servizio Google Cloud, consulta Panoramica degli account di servizio.
Hai creato gli account di servizio Google Cloud per la tua installazione ibrida di Apigee in Passaggio 4: crea gli account di servizio. Apigee utilizza questi account di servizio per autenticare i componenti ibride.
Gli account di servizio Kubernetes sono simili agli account di servizio Google Cloud. Un servizio Kubernetes fornisce un'identità per i processi eseguiti in un pod e gli consente di eseguire l'autenticazione un server API simile a un utente. Per saperne di più sugli account di servizio Kubernetes, Configura account di servizio per i pod.
Se nel file delle sostituzioni hai impostato gcp.workloadIdentity.enabled
su true
, quando i grafici Helm per ogni componente ibrido creeranno gli account di servizio Kubernetes per i componenti quando li installi o esegui l'upgrade, come hai fatto nel passaggio 11: installa Apigee Hybrid utilizzando i grafici Helm.
Quando configuri Workload Identity su GKE, devi associare gli account di servizio Google Cloud a gli account di servizio Kubernetes nel cluster Kubernetes. In questo modo, gli account di servizio Kubernetes possono rubare l'identità degli account di servizio Google Cloud e utilizzare i relativi ruoli e le relative autorizzazioni assegnate per autenticarsi con i componenti ibride.
Segui queste istruzioni per configurare Workload Identity per il tuo progetto.
Preparativi per la configurazione di Workload Identity
- Verifica che Workload Identity sia abilitato nel file degli override. Deve essere attivato nel
file delle sostituzioni nelle seguenti proprietà.
namespace
è obbligatorio. Ad esempio:instanceID: "hybrid-instance-1" namespace: "apigee"
- Se utilizzi un solo 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),
specificare l'account di servizio con la proprietà
gsa
del componente. Ad esempio:logger: gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
Consulta:
gcp.workloadIdentity.enabled
- Verifica che la configurazione
gcloud
corrente sia impostata sull'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 era Abilitare
Workload Identity. Puoi verificare se Workload Identity è abilitato eseguendo il seguente
comando:
Cluster a livello di regione
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
Cluster zonali
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 viene visualizzato
null
, esegui il seguente 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 comandi seguenti. Questa operazione può possono richiedere fino a 30 minuti per ciascun 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-data
eapigee-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 zonali
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 avere il seguente aspetto:
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATA
Se necessario, imposta la configurazione attuale di gcloud
:
gcloud config set project $PROJECT_ID
Configurazione di Workload Identity
Utilizza la seguente procedura per abilitare Workload Identity per i seguenti componenti ibridi:
apigee-datastore
apigee-telemetry
apigee-org
apigee-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 GSA e KSA corretti.
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
- Ottieni il comando per configurare Workload Identity per
apigee-datastore
ed 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-telemetry
ed esegui il comando inNOTES:
nell'output.helm upgrade telemetry apigee-telemetry/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
- Ottieni i comandi per configurare Workload Identity per
apigee-org
ed eseguili 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-env
ed 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 account di servizio Kubernetes in Kubernetes: pagina Panoramica dei carichi di lavoro nella Google Cloud Console.
Passaggi successivi
Nel passaggio successivo, configurerai il gateway di ingresso Apigee e eseguirai il deployment di un proxy per testare l'installazione.