Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il comando
gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire i ruoli e i service account IAM, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Security Admin (
roles/iam.securityAdmin) sul progetto cluster -
Configura i service account in un progetto separato:
Amministratore della sicurezza (
roles/iam.securityAdmin) nel progetto del account di servizio
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Concedi il ruolo minimo richiesto per GKE
GKE utilizza i service account IAM collegati ai nodi per
eseguire attività di sistema come il logging e il monitoraggio. Come minimo, questi service account nodo
devono avere il ruolo
Kubernetes Engine Default Node Service Account
(roles/container.defaultNodeServiceAccount) sul tuo progetto. Per impostazione predefinita,
GKE utilizza l'account di servizio predefinito di Compute Engine,
che viene creato automaticamente nel tuo progetto, come service account del nodo.
Se la tua organizzazione applica il
vincolo del criterio dell'organizzazione iam.automaticIamGrantsForDefaultServiceAccounts, ilaccount di serviziot Compute Engine predefinito nel tuo progetto potrebbe
non ottenere automaticamente le autorizzazioni richieste per GKE.
Le sezioni seguenti mostrano come concedere il ruolo
roles/container.defaultNodeServiceAccount al account di servizio Compute Engine predefinito o a un nuovo account di servizio personalizzato
che crei.
Configura il account di servizio Compute Engine predefinito
Per concedere il ruolo roles/container.defaultNodeServiceAccount al account di servizio predefinito di Compute Engine, completa i seguenti passaggi:
Console
- Vai alla pagina Benvenuto:
- Nel campo Numero progetto, fai clic su Copia negli appunti.
- Vai alla pagina IAM:
- Fai clic su Concedi l'accesso.
- Nel campo Nuove entità, specifica il seguente valore:
SostituisciPROJECT_NUMBER-compute@developer.gserviceaccount.comPROJECT_NUMBERcon il numero di progetto che hai copiato. - Nel menu Seleziona un ruolo, seleziona il ruolo Kubernetes Engine Default Node Service Account.
- Fai clic su Salva.
gcloud
- Trova il numero del tuo progetto Google Cloud :
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Sostituisci
PROJECT_IDcon l'ID progetto.L'output è simile al seguente:
12345678901
- Concedi il ruolo
roles/container.defaultNodeServiceAccountall'account di servizio predefinito di Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Sostituisci
PROJECT_NUMBERcon il numero di progetto del passaggio precedente.
Configura un account di servizio del nodo personalizzato
Per creare un account di servizio personalizzato e concedergli il ruolo richiesto per GKE, completa i seguenti passaggi:
Console
- Vai alla pagina Service Accounts:
- Fai clic su Crea service account.
- Inserisci un nome per il account di servizio. Il campo ID service account genera automaticamente un ID univoco per il account di servizio in base al nome.
- Fai clic su Crea e continua.
- Nel menu Seleziona un ruolo, seleziona il ruolo Service account predefinito del nodo Kubernetes Engine.
- Fai clic su Fine.
gcloud
- Crea l'account di servizio:
gcloud iam service-accounts create SA_NAME
Sostituisci
SA_NAMEcon un nome univoco che identifica il service account. - Concedi il ruolo
Kubernetes Engine Default Node Service Account
(
roles/container.defaultNodeServiceAccount) al account di servizio:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/container.defaultNodeServiceAccount
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud .SA_NAME: il nome del account di servizio che hai creato.
Terraform
Crea un account di servizio IAM e concedigli il ruolo
roles/container.defaultNodeServiceAccount nel progetto:
Config Connector
Nota: questo passaggio richiede Config Connector. Segui le istruzioni di installazione per installare Config Connector sul cluster.
- Per creare il account di servizio, scarica la seguente risorsa come
service-account.yaml:Sostituisci quanto segue:
[SA_NAME]: il nome del nuovo account di servizio.[DISPLAY_NAME]: un nome visualizzato per il account di servizio.
- Crea l'account di servizio:
kubectl apply -f service-account.yaml
- Applica il ruolo
roles/logging.logWriteral account di servizio:- Scarica la
seguente risorsa come
policy-logging.yaml.Sostituisci quanto segue:
[SA_NAME]: il nome del account di servizio.[PROJECT_ID]: il tuo ID progetto Google Cloud .
- Applica il ruolo al account di servizio:
kubectl apply -f policy-logging.yaml
- Scarica la
seguente risorsa come
- Applica il ruolo
roles/monitoring.metricWriteral account di servizio:- Scarica la seguente risorsa come
policy-metrics-writer.yaml. Sostituisci[SA_NAME]e[PROJECT_ID]con le tue informazioni.Sostituisci quanto segue:
[SA_NAME]: il nome del account di servizio.[PROJECT_ID]: il tuo ID progetto Google Cloud .
- Applica il ruolo al account di servizio:
kubectl apply -f policy-metrics-writer.yaml
- Scarica la seguente risorsa come
- Applica il ruolo
roles/monitoring.vieweral account di servizio:- Scarica la seguente risorsa come
policy-monitoring.yaml.Sostituisci quanto segue:
[SA_NAME]: il nome del account di servizio.[PROJECT_ID]: il tuo ID progetto Google Cloud .
- Applica il ruolo al account di servizio:
kubectl apply -f policy-monitoring.yaml
- Scarica la seguente risorsa come
- Applica il ruolo
roles/autoscaling.metricsWriteral account di servizio:- Scarica la seguente risorsa come
policy-autoscaling-metrics-writer.yaml.Sostituisci quanto segue:
[SA_NAME]: il nome del account di servizio.[PROJECT_ID]: il tuo ID progetto Google Cloud .
- Applica il ruolo al account di servizio:
kubectl apply -f policy-autoscaling-metrics-writer.yaml
- Scarica la seguente risorsa come
Puoi utilizzare questo account di servizio anche per le risorse in altri progetti. Per le istruzioni, vedi Abilitare la simulazione dell'identità dei account di servizio tra progetti.
Consenti alle entità di collegare service account personalizzati
Puoi collegare un account di servizio personalizzato quando crei un cluster o un node pool. Per consentire a un'entità (ad esempio un amministratore della piattaforma) di utilizzare un service account personalizzato per creare risorse GKE, concedi a questa entità il ruolo Utente service account (roles/iam.serviceAccountUser) sul service account personalizzato. Per concedere questo ruolo, seleziona una delle seguenti opzioni:
Console
Nella console Google Cloud , vai alla pagina Service account:
Nel selettore delle risorse, scegli il progetto che contiene il tuo account di servizio personalizzato.
Seleziona la casella di controllo per il account di servizio personalizzato che hai creato da utilizzare con i nodi GKE.
Fai clic su Gestisci accesso. Viene visualizzato il riquadro Gestisci accesso.
Fai clic su Aggiungi entità. Viene visualizzato il riquadro Concedi l'accesso.
Nel campo Nuove entità, specifica l'entità, ad esempio un gruppo di amministratori.
Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Utente service account.
Fai clic su Salva. Il riquadro Concedi l'accesso si chiude.
Chiudi il riquadro Gestisci accesso.
gcloud
Concedi il ruolo roles/iam.serviceAccountUser:
gcloud iam service-accounts add-iam-policy-binding \
SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
--member=PRINCIPAL \
--role=roles/iam.serviceAccountUser
Sostituisci quanto segue:
SA_NAME: il nome del account di servizio personalizzato.SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto che contiene il account di servizio personalizzato.PRINCIPAL: l'identificatore dell'entità, ad esempiouser:baklavainthebalkans@example.com.
Config Connector
Nota: questo passaggio richiede Config Connector. Segui le istruzioni di installazione per installare Config Connector sul cluster.
Applica il ruolo iam.serviceAccountUser al tuo account di servizio. Scarica la
risorsa seguente come policy-service-account-user.yaml. Sostituisci [SA_NAME]
e [PROJECT_ID] con le tue informazioni.
kubectl apply -f policy-service-account-user.yaml
Dopo aver concesso il ruolo al account di servizio, questi principal possono utilizzare il account di servizio per creare cluster e pool di nodi. Per saperne di più, consulta i seguenti documenti:
- Creare un cluster Autopilot
- Creazione di un cluster regionale
- Aggiungi un pool di nodi a un cluster standard
Configura l'utilizzo dei account di servizio tra i progetti
Se l'account di servizio del nodo non si trova nello stesso progetto del cluster, gli agenti di servizio nel progetto del cluster hanno bisogno di autorizzazioni aggiuntive per l'account di servizio. Per saperne di più, vedi Service account dei nodi e service agent del progetto.
Per concedere i ruoli richiesti agli service account dei nodi che non si trovano nel progetto del cluster:
- Per attivare l'associazione di account di servizio tra progetti, aggiorna le policy dell'organizzazione.
Per concedere i ruoli richiesti al account di servizio personalizzato agli agenti di servizio nel progetto cluster, seleziona una delle seguenti opzioni:
Console
Nella Google Cloud console, vai alla pagina Service account.
Seleziona la casella di controllo per il account di servizio personalizzato che hai creato da utilizzare con i nodi GKE.
Fai clic su Gestisci accesso. Viene visualizzato il riquadro Gestisci accesso.
Concedi il ruolo Creatore token account di servizio all'agente di servizio Compute Engine nel progetto cluster:
- Nel riquadro Gestisci accesso, fai clic su Aggiungi entità. Viene visualizzato il riquadro Concedi l'accesso.
Nel campo Nuove entità, specifica l'indirizzo email dell'agente di servizio Compute Engine nel progetto cluster:
service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.comSostituisci
CLUSTER_PROJECT_NUMBERcon il numero di progetto del tuo progetto cluster.Nel menu Seleziona un ruolo, seleziona il ruolo Creatore token service account.
Fai clic su Salva. Il riquadro Concedi l'accesso si chiude.
Concedi il ruolo Utente account di servizio all'agente di servizio GKE nel progetto del cluster:
- Nel riquadro Gestisci accesso, fai clic su Aggiungi entità. Viene visualizzato il riquadro Concedi l'accesso.
Nel campo Nuove entità, specifica l'indirizzo email del service agent GKE nel progetto del cluster:
service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.comNel menu Seleziona un ruolo, seleziona il ruolo Utente account di servizio.
Fai clic su Salva. Il riquadro Concedi l'accesso si chiude.
Chiudi il riquadro Gestisci accesso.
gcloud
Recupera il numero di progetto del progetto del cluster:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Sostituisci
CLUSTER_PROJECT_IDcon l'ID progetto del tuo progetto cluster.L'output è simile a
123456789.Concedi il ruolo
roles/iam.serviceAccountTokenCreatorall'account di servizio personalizzato all'agente di servizio Compute Engine nel progetto cluster:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorSostituisci quanto segue:
SA_NAME: il nome del service account personalizzato.SERVICE_ACCOUNT_PROJECT_ID: l'ID progetto del progetto che contiene il tuo account di servizio personalizzato.CLUSTER_PROJECT_NUMBER: il numero del progetto cluster.
Concedi il ruolo
roles/iam.serviceAccountUseral service agent GKE nel progetto del cluster sull'account di servizio personalizzato:gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Consenti il pull delle immagini da repository privati
Se hai immagini in repository Artifact Registry privati, devi concedere al account di servizio del nodo l'accesso a questi repository. Anche se utilizzi il account di servizio Compute Engine predefinito, potresti dover concedere l'accesso al service account al tuo repository se si trova in un altro progetto.
Per eseguire il pull di immagini private da Artifact Registry, concedi il
ruolo di lettore Artifact Registry
(roles/artifactregistry.reader) sul repository al account di servizio del nodo.
Console
Nella console Google Cloud , vai alla pagina Repository.
Seleziona la casella di controllo relativa al repository.
Fai clic su Mostra riquadro informazioni. Viene visualizzato il riquadro delle informazioni sul repository.
Nella scheda Autorizzazioni, fai clic su Aggiungi entità. Viene visualizzato il riquadro Concedi l'accesso.
Nel campo Nuove entità, specifica l'indirizzo email del service account del nodo.
Fai clic su Seleziona un ruolo per aprire la finestra di dialogo di selezione del ruolo.
Seleziona il ruolo Lettore Artifact Registry.
Fai clic su Salva.
gcloud
Concedi il ruolo roles/artifactregistry.reader sul repository:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY_NAME \
--member=serviceAccount:SERVICE_ACCOUNT_EMAIL \
--project=REPOSITORY_PROJECT_ID \
--role=roles/artifactregistry.reader
Sostituisci quanto segue:
REPOSITORY_NAME: il nome del repository Artifact Registry.SERVICE_ACCOUNT_EMAIL: l'indirizzo email del service account del nodo.REPOSITORY_PROJECT_ID: l'ID progetto del progetto che contiene il repository.
Config Connector
Nota: questo passaggio richiede Config Connector. Segui le istruzioni di installazione per installare Config Connector sul cluster.
Salva il seguente manifest come
policy-artifact-registry-reader.yaml:Sostituisci quanto segue:
- SA_NAME: il nome del account di servizio IAM.
- PROJECT_ID: il tuo ID progetto Google Cloud .
- REPOSITORY_NAME: il nome del repository Artifact Registry.
Concedi il ruolo Lettore Artifact Registry all'account di servizio:
kubectl apply -f policy-artifact-registry-reader.yaml
Passaggi successivi
- Creare un cluster Autopilot
- Crea un cluster regionale
- Aggiungi un pool di nodi a un cluster standard