Se stai registrando un cluster GKE su Google Cloud, potresti dover eseguire una o più delle seguenti operazioni prima di registrare il cluster, a seconda dell'opzione di registrazione che scegli. Questa guida presuppone che tu abbia già completato i prerequisiti generali per la registrazione del cluster.
Abilita la federazione delle identità per i workload per GKE
Ti consigliamo di registrare i cluster GKE con la federazione delle identità per i carichi di lavoro del parco risorse abilitata, che fornisce un modo coerente per autenticare le applicazioni sui cluster alle API e ai servizi. Google Cloud Puoi scoprire di più sui vantaggi dell'attivazione della federazione delle identità per i workload del parco risorse in Utilizzare la federazione delle identità per i workload del parco risorse.
Per utilizzare questa funzionalità, devi assicurarti che Workload Identity Federation for 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 aver abilitato la federazione delle identità per i carichi di lavoro per GKE sul cluster può causare incoerenze nel modo in cui l'identità viene asserita dai carichi di lavoro nel cluster e non è una configurazione supportata. I cluster Autopilot hanno abilitata per impostazione predefinita la federazione delle identità per i carichi di lavoro per GKE.
gcloud
Per verificare se nel tuo cluster è abilitata la federazione delle identità per i carichi di lavoro per GKE, esegui il seguente comando per elencare il pool di identità dei carichi di lavoro del cluster. Se non hai ancora specificato una zona o una regione predefinita per gcloud
, devi specificare un flag --region
o --zone
quando esegui 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, Workload Identity Federation for GKE è già abilitata sul tuo cluster:
GKE_PROJECT_ID.svc.id.goog
Se non vengono visualizzati risultati, Workload Identity Federation for GKE non è abilitata. Segui le istruzioni riportate in Attivazione di Workload Identity Federation for GKE.
Console
Per verificare se la federazione delle identità per i carichi di lavoro per GKE è abilitata nel cluster:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Nell'elenco dei cluster, fai clic sul nome del tuo cluster.
Nella pagina dei dettagli del cluster, nella sezione Sicurezza, verifica che Workload Identity sia elencato come Abilitato.
Se Workload Identity è Disabilitato 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.
Concedere le autorizzazioni per registrare un cluster in un altro progetto
La registrazione di un cluster GKE al parco risorse nel proprio progetto non richiede autorizzazioni speciali oltre a quelle descritte in Concedere autorizzazioni di accesso. Tuttavia, se vuoi registrare un cluster GKE dal proprio progetto (GKE_PROJECT) in un parco risorse in un progetto diverso (FLEET_HOST_PROJECT), il FLEET_HOST_PROJECT service agent account gcp-sa-gkehub
deve disporre del ruolo gkehub.serviceAgent
nel progetto GKE_PROJECT. Questo ruolo concede al 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, dovrebbe essere visualizzato nell'output nel formato
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
Con il progetto del cluster selezionato, vai alla pagina IAM e amministrazione nella console Google Cloud .
Seleziona la casella di controllo Includi concessioni di ruoli fornite da Google per visualizzare la policy di autorizzazione completa, inclusi gli agenti di servizio.
Se il 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 formato
service-[FLEET_HOST-PROJECT-NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
.
Se non vedi l'agente di servizio elencato nella policy di autorizzazione IAM del progetto, procedi nel seguente modo per aggiornare le autorizzazioni necessarie:
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 già registrato cluster in questo progetto parco risorse, questo account di servizio dovrebbe già esistere. Puoi verificarlo 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 il 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 il seguente output:
Service identity created: service-[FLEET_HOST_PROJECT_NUMBER]@gcp-sa-gkehub.iam.gserviceaccount.com
Esegui questo comando per concedere al account di servizio il ruolo
roles/gkehub.serviceAgent
in entrambi i progetti e il ruoloroles/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 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 di ruoli sia stata concessa, esegui di nuovo questo comando:
gcloud projects get-iam-policy GKE_PROJECT_ID
Se vedi il nome del account di servizio insieme ai ruoli
gkehub.serviceAgent
egkehub.crossProjectServiceAgent
, le associazioni di ruoli sono state concesse. 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 per creare un'appartenenza.
gcloud
Crea un account di servizio nel seguente modo:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
Associa il ruolo IAM
gkehub.admin
al 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
al account di servizio in modo che Terraform possa utilizzare questoaccount di serviziot per accedere all'API GKE per 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.
Scarica il file JSON della chiave privata del account di servizio, come descritto in Creare un Google Cloud service account utilizzando
gcloud
. Ti servirà questo file per creare e registrare cluster utilizzando Terraform.
Configura un account di servizio per Config Connector
Se vuoi utilizzare Config Connector per registrare un cluster GKE, procedi nel seguente modo:
gcloud
Assicurati di aver installato il componente aggiuntivo Config Connector. Devi disporre di una versione di Config Connector superiore 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
al account di servizio in modo che il controller Config Connector possa utilizzare questo account di servizio per accedere all'API GKE per 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 di Config Connector per configurare Config Connector con questo account di servizio.
Passaggi successivi
Segui le istruzioni per registrare un cluster.