Se stai registrando un cluster GKE su Google Cloud, potresti devi eseguire una o più delle seguenti operazioni prima di registrare il cluster, a seconda dell'opzione di registrazione scelta. Questa guida presuppone che hai già completato prerequisiti generali per registrazione del cluster.
Abilita la federazione delle identità per i carichi di lavoro 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 federazione delle identità per i carichi di lavoro del parco risorse senza che la federazione delle identità per i carichi di lavoro sia abilitata nel cluster può causare incongruenze sul modo in cui l'identità viene dichiarata dai 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 nel cluster è abilitata la federazione delle identità per i carichi di lavoro per GKE, esegui questo 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 cluster:
GKE_PROJECT_ID.svc.id.goog
Se non vengono restituiti risultati, la federazione delle identità per i carichi di lavoro non è abilitata per GKE. Segui le istruzioni in Abilitare la federazione delle identità per i carichi di lavoro per GKE.
Console
Per verificare se nel 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 sezione Sicurezza della pagina dei dettagli del cluster, verifica che Workload Identity sia elencato come Abilitato.
Se Workload Identity è Disabled e vuoi abilitare 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
FLEET_HOST_PROJECT deve avere il 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
ha i ruoli richiesti nel progetto del cluster, dovrebbe apparire nell'output sotto forma di modulo
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
dispone dei ruoli richiesti nel progetto del cluster, dovrebbe essere visualizzato in questo elenco nel modulo
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
, devi prima verifica che questo account di servizio esista nel progetto host del parco risorse. Se hai dei cluster registrati in questo progetto del parco risorse, questo account di servizio dovrebbe già esistere. Puoi verificarlo osservando 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 questo 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 e 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 l'[account di servizio].
Segui l'istruzione di Config Connector per configurare Config Connector con questo account di servizio.
Passaggi successivi
Segui le istruzioni per registrare un cluster.