Se stai registrando un cluster GKE su Google Cloud, potresti dover eseguire una o più delle seguenti operazioni prima di registrarlo, a seconda dell'opzione di registrazione scelta. Questa guida presuppone che hai già completato prerequisiti generali per registrazione del cluster.
Abilita Workload Identity Federation per GKE
Ti consigliamo di registrare i tuoi cluster GKE con la federazione delle identità per i carichi di lavoro abilitata, che fornisce un modo coerente per l'autenticazione delle applicazioni sui cluster nei servizi e nelle API Google Cloud. Per saperne di più sui vantaggi dell'abilitazione della federazione delle identità per i carichi di lavoro del parco risorse, consulta Utilizzare la federazione delle identità per i carichi di lavoro del parco risorse.
Per utilizzare questa funzionalità, devi assicurarti che la Federazione delle identità per i carichi di lavoro per GKE sia abilitata sul cluster prima della registrazione. La registrazione di un cluster GKE con la federazione delle identità per i carichi di lavoro del parco risorse senza che la federazione delle identità per i carichi di lavoro per GKE sia abilitata sul cluster può portare a incoerenze nella modalità di affermazione dell'identità da parte dei carichi di lavoro nel cluster e non è una configurazione supportata. Nei cluster Autopilot è abilitata la federazione delle identità per i carichi di lavoro per GKE per impostazione predefinita.
gcloud
Per verificare se la federazione delle identità per i carichi di lavoro per GKE è abilitata nel tuo cluster, esegui il seguente comando per elencare il pool di identità per i carichi di lavoro del cluster. Se non hai già specificato una zona o una regione predefinite per gcloud
, devi specificare un flag --region
o --zone
durante l'esecuzione di questo comando.
gcloud container clusters describe CLUSTER_NAME --format="value(workloadIdentityConfig.workloadPool)"
Sostituisci quanto segue:
- CLUSTER_NAME: il
name
del cluster GKE.
Se vedi un risultato simile al seguente, significa che la federazione delle identità per i carichi di lavoro per GKE è già abilitata nel tuo cluster:
GKE_PROJECT_ID.svc.id.goog
Se non vengono visualizzati risultati, significa che Workload Identity Federation for GKE non è abilitato. Segui le istruzioni riportate in Abilitazione di Workload Identity Federation per GKE.
Console
Per verificare se nel tuo cluster è abilitata la federazione delle identità per i carichi di lavoro per GKE:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Nell'elenco dei cluster, fai clic sul nome del cluster.
Nella pagina dei dettagli del cluster, nella sezione Sicurezza, verifica che Workload Identity sia indicato come Attivato.
Se Workload Identity è Disattivato e vuoi attivare questa funzionalità:
- Nella pagina dei dettagli del cluster, fai clic su Modifica Workload Identity.
- Nella finestra di dialogo Modifica Workload Identity, seleziona la casella di controllo Abilita Workload Identity.
- Fai clic su Salva modifiche.
Concedi le autorizzazioni per registrare un cluster in un progetto diverso
La registrazione di un cluster GKE nel parco risorse all'interno del proprio progetto non richiede autorizzazioni speciali oltre a quelle descritte in Concedere autorizzazioni di accesso. Tuttavia, se vuoi registrare un cluster GKE dal relativo progetto (GKE_PROJECT) a un parco risorse in un progetto diverso (FLEET_HOST_PROJECT), l'account agente di servizio gcp-sa-gkehub
di FLEET_HOST_PROJECT deve disporre del ruolo gkehub.serviceAgent
nel progetto GKE_PROJECT. Questo ruolo concede all'account di servizio le autorizzazioni per gestire le risorse del cluster nel progetto.
Puoi verificare se l'account di servizio del progetto host del parco risorse gcp-sa-gkehub
ha il ruolo richiesto nel progetto del cluster
utilizzando gcloud CLI o la console Google Cloud, come segue.
gcloud
Esegui questo comando:
gcloud projects get-iam-policy GKE_PROJECT_ID | grep gcp-sa-gkehub
dove GKE_PROJECT_ID è l'ID del progetto del cluster.
Se il progetto host del parco risorse gcp-sa-gkehub
dispone dei ruoli richiesti nel progetto del cluster, deve essere visualizzato nell'output come service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
. Ad esempio:
- members:
- serviceAccount:service-1234567890@gcp-sa-gkehub.iam.gserviceaccount.com
role: roles/gkehub.serviceAgent
Console
Dopo aver selezionato il progetto del cluster, vai alla sezione IAM e pagina Amministrazione nella console Google Cloud.
Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google per visualizzare le norme di autorizzazione complete, inclusi gli agenti di servizio.
Se l'account di servizio del progetto host del parco risorse gcp-sa-gkehub
ha i ruoli richiesti nel progetto del cluster, dovrebbe essere visualizzato in questo elenco come service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
.
Se non vedi l'agente di servizio elencato nel criterio di autorizzazione IAM del progetto, aggiorna le autorizzazioni necessarie in questo modo:
gcloud
Per concedere a
gcp-sa-gkehub
il ruologkehub.serviceAgent
, assicurati innanzitutto che questo account di servizio esista nel progetto host del parco risorse. Se hai cluster registrati in questo progetto del parco risorse, questo account di servizio dovrebbe già esistere. Puoi controllare esaminando il criterio di autorizzazione IAM per il progetto host del parco risorse:gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID | grep gcp-sa-gkehub
Se devi creare l'account di servizio
gcp-sa-gkehub
, esegui questo comando:gcloud beta services identity create --service=gkehub.googleapis.com --project=FLEET_HOST_PROJECT_ID
Questo comando dovrebbe restituire quanto segue:
Service identity created: service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
Esegui il seguente comando per concedere all'account di servizio il ruolo
roles/gkehub.serviceAgent
in entrambi i progetti eroles/gkehub.crossProjectServiceAgent
nel progetto del cluster:GKE_PROJECT_ID=GKE_PROJECT_ID FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud projects add-iam-policy-binding "${FLEET_HOST_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent gcloud projects add-iam-policy-binding "${GKE_PROJECT_ID}" \ --member "serviceAccount:service-${FLEET_HOST_PROJECT_NUMBER}@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.crossProjectServiceAgent
dove:
- GKE_PROJECT_ID è l'ID del progetto Google Cloud del cluster GKE.
- FLEET_HOST_PROJECT_ID è l'ID progetto Google Cloud in cui vuoi registrare i cluster. Scopri come trovare questo valore.
Per confermare che l'associazione dei ruoli è stata concessa, esegui di nuovo il comando seguente:
gcloud projects get-iam-policy GKE_PROJECT_ID
Se vedi il nome dell'account di servizio insieme ai ruoli
gkehub.serviceAgent
egkehub.crossProjectServiceAgent
, sono state concesse le associazioni di ruolo. Ad esempio:- members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com role: roles/gkehub.serviceAgent - members: - serviceAccount:service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com role: roles/gkehub.crossProjectServiceAgent
Configura un account di servizio per Terraform
Se vuoi utilizzare Terraform per registrare un cluster Google Kubernetes Engine, devi creare un account di servizio che Terraform possa utilizzare per accedere all'API Fleet al fine di creare un abbonamento.
gcloud
Crea un account di servizio come segue:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
Associa il ruolo IAM
gkehub.admin
all'account di servizio in modo che Terraform possa utilizzarlo con l'API Fleet:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.admin"
Se vuoi creare un nuovo cluster con Terraform e poi registrarlo, devi anche associare il ruolo
roles/container.admin
all'account di servizio in modo che Terraform può utilizzare questo account di servizio per accedere all'API GKE e creare un cluster.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/container.admin"
Sostituisci quanto segue:
- FLEET_HOST_PROJECT_ID è l'ID progetto Google Cloud in cui vuoi registrare i cluster. Scopri come trovare questo valore.
- SERVICE_ACCOUNT_NAME è il nome visualizzato che scegli l'[account di servizio].
Scarica il file JSON della chiave privata dell'account di servizio, come descritto in Creare un account di servizio Google Cloud utilizzando
gcloud
. Questo file è necessario per creare e registrare i cluster utilizzando Terraform.
Configura un account di servizio per Config Connector
Se vuoi utilizzare Config Connector per registrare un cluster GKE, segui questi passaggi:
gcloud
Assicurati di aver installato il componente aggiuntivo Config Connector. Devi avere una versione di Config Connector successiva alla 1.47.0.
Segui le istruzioni di Config Connector per creare un account di servizio.
Associa il ruolo IAM
gkehub.admin
a questo account di servizio in modo che Config Connector possa utilizzarlo per accedere all'API Fleet:FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.admin"
Se vuoi creare un nuovo cluster con Config Connector e poi registrarlo, devi anche associare il ruolo
roles/container.admin
all'account di servizio, in modo che il controller Config Connector possa utilizzare questo account di servizio per accedere all'API GKE e creare un cluster.FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID gcloud projects add-iam-policy-binding ${FLEET_HOST_PROJECT_ID} \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@${FLEET_HOST_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/container.admin"
Sostituisci quanto segue:
- FLEET_HOST_PROJECT_ID è l'ID progetto Google Cloud in cui vuoi registrare i cluster. Scopri come trovare questo valore.
- SERVICE_ACCOUNT_NAME è il nome visualizzato che scegli per il [Service Account].
Segui le istruzioni per Config Connector per configurare Config Connector con questo account di servizio.
Passaggi successivi
Segui le istruzioni per registrare un cluster.