Prerequisiti per i cluster GKE su Google Cloud

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:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del tuo cluster.

  3. 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à:

  1. Nella pagina dei dettagli del cluster, fai clic su Modifica Workload Identity.
  2. Nella finestra di dialogo Modifica Workload Identity, seleziona la casella di controllo Abilita Workload Identity.
  3. 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

  1. Con il progetto del cluster selezionato, vai alla pagina IAM e amministrazione nella console Google Cloud .

    Vai alla pagina IAM e amministrazione

  2. 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

  1. Per concedere a gcp-sa-gkehub il ruolo gkehub.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
    
  2. 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
    
  3. Esegui questo comando per concedere al account di servizio il ruolo roles/gkehub.serviceAgent in entrambi i progetti e il ruolo roles/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.
  4. 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 e gkehub.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

  1. Crea un account di servizio nel seguente modo:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME --project=FLEET_HOST_PROJECT_ID
    
  2. 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.
  3. 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

  1. Assicurati di aver installato il componente aggiuntivo Config Connector. Devi disporre di una versione di Config Connector superiore alla 1.47.0.

  2. Segui le istruzioni di Config Connector per creare un account di servizio.

  3. 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.
  4. Segui le istruzioni di Config Connector per configurare Config Connector con questo account di servizio.

Passaggi successivi

Segui le istruzioni per registrare un cluster.