Configurazione di cluster con VPC condiviso


Questa guida mostra come creare due cluster Google Kubernetes Engine (GKE), in progetti separati, che utilizzano un VPC condiviso. Per informazioni generali sul networking di GKE, consulta la Panoramica della rete.

Panoramica

Con VPC condiviso, designi un progetto come progetto host e puoi collegare altri progetti, chiamati progetti di servizio, al progetto host. Nel progetto host crei reti, subnet, intervalli di indirizzi secondari, regole firewall e altre risorse di rete. Poi condividi le subnet selezionate, inclusi gli intervalli secondari, con i progetti di servizio. I componenti in esecuzione in un progetto di servizio possono utilizzare il VPC condiviso per comunicare con i componenti in esecuzione negli altri progetti di servizio.

Puoi utilizzare VPC condiviso con cluster Autopilot e con cluster standard zonali e regionali.

I cluster standard che utilizzano VPC condiviso non possono utilizzare reti legacy e devono avere attivato il routing del traffico VPC nativo. I cluster Autopilot attivano sempre il routing del traffico VPC nativo.

Puoi configurare il VPC condiviso quando crei un nuovo cluster. GKE non supporta la conversione dei cluster esistenti al modello VPC condiviso.

Con la VPC condivisa si applicano determinate quote e limiti. Ad esempio, esiste una quota per il numero di reti in un progetto e un limite per il numero di progetti di servizio che possono essere associati a un progetto host. Per maggiori dettagli, consulta Quote e limiti.

Informazioni sugli esempi

Gli esempi in questa guida configurano l'infrastruttura per un'applicazione web a due livelli, come descritto nella Panoramica del VPC condiviso.

Prima di iniziare

Prima di iniziare a configurare un cluster con VPC condiviso:

  • Assicurati di avere un'organizzazione Google Cloud.
  • Assicurati che la tua organizzazione abbia tre progetti Google Cloud.
  • Assicurati di conoscere già i concetti di VPC condiviso, inclusi i vari ruoli IAM (Identity and Access Management) utilizzati da VPC condiviso. Le attività in questa guida devono essere eseguite da un amministratore VPC condiviso.
  • Assicurati di conoscere già tutti i vincoli dei criteri dell'organizzazione applicabili alla tua organizzazione, alla tua cartella o ai tuoi progetti. Un amministratore dei criteri dell'organizzazione potrebbe aver definito vincoli che limitano i progetti che possono essere progetti host VPC condiviso o che limitano le subnet che possono essere condivise. Per saperne di più, consulta i vincoli dei criteri dell'organizzazione.

Prima di eseguire gli esercizi in questa guida:

  • Scegli uno dei tuoi progetti come progetto host.
  • Scegli due dei tuoi progetti come progetti di servizio.

Ogni progetto ha un nome, un ID e un numero. In alcuni casi, il nome e l'ID sono uguali. Questa guida utilizza i seguenti nomi visualizzati e segnaposto per fare riferimento ai progetti:

Nome descrittivo Segnaposto ID progetto
Segnaposto numero progetto
Il tuo progetto host HOST_PROJECT_ID HOST_PROJECT_NUM
Il tuo primo progetto di servizio SERVICE_PROJECT_1_ID SERVICE_PROJECT_1_NUM
Il secondo progetto di servizio SERVICE_PROJECT_2_ID SERVICE_PROJECT_2_NUM

Trovare gli ID e i numeri dei progetti

Puoi trovare l'ID e i numeri del progetto utilizzando la gcloud CLI o la console Google Cloud.

Console

  1. Vai alla pagina Home della console Google Cloud.

    Vai alla home page

  2. Nel selettore dei progetti, seleziona il progetto che hai scelto come progetto host.

  3. In Informazioni sul progetto puoi vedere il nome, l'ID e il numero del progetto. Prendi nota dell'ID e del numero per riferimento futuro.

  4. Procedi allo stesso modo per ciascuno dei progetti che hai scelto come progetti di servizio.

gcloud

Elenca i tuoi progetti con il seguente comando:

gcloud projects list

L'output mostra i nomi, gli ID e i numeri dei progetti. Prendi nota dell'ID e del numero per riferimento futuro:

PROJECT_ID        NAME        PROJECT_NUMBER
host-123          host        1027xxxxxxxx
srv-1-456         srv-1       4964xxxxxxxx
srv-2-789         srv-2       4559xxxxxxxx

Attivazione dell'API GKE nei progetti

Prima di continuare con gli esercizi di questa guida, assicurati che l'API GKE sia abilitata in tutti e tre i progetti. L'attivazione dell'API in un progetto crea un account di servizio GKE per il progetto. Per eseguire le restanti attività di questa guida, ogni progetto deve avere un account di servizio GKE.

Puoi abilitare l'API GKE utilizzando la console Google Cloud o Google Cloud CLI.

Console

  1. Vai alla pagina API e servizi nella console Google Cloud.

    Vai ad API e servizi

  2. Nel selettore dei progetti, seleziona il progetto che hai scelto come progetto host.

  3. Se l'API Kubernetes Engine è nell'elenco delle API, è già abilitata e non devi fare nulla. Se non è presente nell'elenco, fai clic su Abilita API e servizi. Cerca Kubernetes Engine API. Fai clic sulla scheda API Kubernetes Engine e poi su Abilita.

  4. Ripeti questi passaggi per ogni progetto che hai scelto come progetto di servizio. Il completamento di ogni operazione potrebbe richiedere del tempo.

gcloud

Abilita l'API GKE per i tre progetti. Il completamento di ogni operazione potrebbe richiedere del tempo:

gcloud services enable container.googleapis.com --project HOST_PROJECT_ID
gcloud services enable container.googleapis.com --project SERVICE_PROJECT_1_ID
gcloud services enable container.googleapis.com --project SERVICE_PROJECT_2_ID

Creazione di una rete e due subnet

In questa sezione, eseguirai le seguenti attività:

  1. Nel progetto host, crea una rete denominata shared-net.
  2. Crea due subnet denominate tier-1 e tier-2.
  3. Per ogni subnet, crea due intervalli di indirizzi secondari: uno per i servizi e uno per i pod.

Console

  1. Vai alla pagina Reti VPC nella console Google Cloud.

    Vai a Reti VPC

  2. Nel selettore dei progetti, seleziona il progetto host.

  3. Fai clic su Crea rete VPC.

  4. In Nome, inserisci shared-net.

  5. In Modalità di creazione subnet, seleziona Personalizzata.

  6. Nella casella Nuova subnet, in Nome, inserisci tier-1.

  7. In Regione, seleziona una regione.

  8. In Tipo di stack IP, seleziona IPv4 (stack singolo).

  9. Per Intervallo IPv4, inserisci 10.0.4.0/22.

  10. Fai clic su Crea intervallo IPv4 secondario. Per Nome intervallo subnet, inserisci tier-1-services e per Intervallo IPv4 secondario, inserisci 10.0.32.0/20.

  11. Fai clic su Aggiungi intervallo IP. Per Nome intervallo subnet, inserisci tier-1-pods e per Intervallo IPv4 secondario, inserisci 10.4.0.0/14.

  12. Fai clic su Aggiungi subnet.

  13. In Nome, inserisci tier-2.

  14. In Regione, seleziona la stessa regione selezionata per la subnet precedente.

  15. Per Intervallo IPv4, inserisci 172.16.4.0/22.

  16. Fai clic su Crea intervallo IPv4 secondario. Per Nome intervallo subnet, inserisci tier-2-services e per Intervallo IPv4 secondario, inserisci 172.16.16.0/20.

  17. Fai clic su Aggiungi intervallo IP. Per Nome intervallo subnet, inserisci tier-2-pods e per Intervallo IPv4 secondario, inserisci 172.20.0.0/14.

  18. Fai clic su Crea.

gcloud

Nel progetto host, crea una rete denominata shared-net:

gcloud compute networks create shared-net \
    --subnet-mode custom \
    --project HOST_PROJECT_ID

Nella nuova rete, crea una subnet denominata tier-1:

gcloud compute networks subnets create tier-1 \
    --project HOST_PROJECT_ID \
    --network shared-net \
    --range 10.0.4.0/22 \
    --region COMPUTE_REGION \
    --secondary-range tier-1-services=10.0.32.0/20,tier-1-pods=10.4.0.0/14

Crea un'altra subnet denominata tier-2:

gcloud compute networks subnets create tier-2 \
    --project HOST_PROJECT_ID \
    --network shared-net \
    --range 172.16.4.0/22 \
    --region COMPUTE_REGION \
    --secondary-range tier-2-services=172.16.16.0/20,tier-2-pods=172.20.0.0/14

Sostituisci COMPUTE_REGION con una regione Compute Engine.

Determinare i nomi degli account di servizio nei progetti di servizi

Hai due progetti di servizio, ciascuno con diversi account di servizio. Questa sezione riguarda i tuoi account di servizio GKE e i tuoi account di servizio API di Google. Per la sezione successiva, ti serviranno i nomi di questi account di servizio.

La tabella seguente elenca i nomi degli account di servizio GKE e Google API nei tuoi due progetti di servizio:

Tipo di account di servizio Nome account di servizio
GKE service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com
service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com
API di Google SERVICE_PROJECT_1_NUM@cloudservices.gserviceaccount.com
SERVICE_PROJECT_2_NUM@cloudservices.gserviceaccount.com

Attivazione della rete VPC condivisa e concessione dei ruoli

Per eseguire le attività in questa sezione, assicurati che la tua organizzazione abbia definito un ruolo Amministratore VPC condiviso.

In questa sezione, dovrai svolgere le seguenti attività:

  1. Nel progetto host, abilita la VPC condiviso.
  2. Collega i due progetti di servizio al progetto host.
  3. Concedi i ruoli IAM appropriati agli account di servizio appartenente ai tuoi progetti di servizio:
    • Nel primo progetto di servizio, concedi a due account di servizio il ruolo Compute Network User nella subnet tier-1 del progetto host.
    • Nel secondo progetto di servizio, concedi a due account di servizio il ruolo Compute Network User nella subnet tier-2 del progetto host.

Console

Per attivare la VPC condiviso, collegare i progetti di servizio e concedere i ruoli, svolgi i seguenti passaggi:

  1. Vai alla pagina Rete VPC condivisa nella console Google Cloud.

    Vai a Rete VPC condivisa

  2. Nel selettore dei progetti, seleziona il progetto host.

  3. Fai clic su Configura VPC condiviso. Viene visualizzata la schermata Attiva progetto host.

  4. Fai clic su Salva e continua. Viene visualizzata la pagina Seleziona subnet.

  5. In Modalità di condivisione, seleziona Singole subnet.

  6. In Subnet da condividere, seleziona tier-1 e tier-2. Deseleziona tutte le altre caselle di controllo.

  7. Fai clic su Continua. Viene visualizzata la pagina Concedi autorizzazioni.

  8. In Associa i progetti di servizio, seleziona il primo progetto di servizio e il secondo progetto di servizio. Deseleziona tutte le altre caselle di controllo in Associa i progetti di servizio.

  9. In Accesso a Kubernetes Engine, seleziona Abilitato.

  10. Fai clic su Salva. Viene visualizzata una nuova pagina.

  11. In Autorizzazioni per singole subnet, seleziona livello 1.

  12. Nel riquadro a destra, elimina gli account di servizio appartenenti al tuo secondo progetto di servizio. In altre parole, elimina tutti gli account di servizio contenenti SERVICE_PROJECT_2_NUM.

  13. Nel riquadro a destra, cerca i nomi degli account di servizio Kubernetes Engine e delle API di Google appartenenti al tuo primo progetto di servizio. Vuoi visualizzare entrambi i nomi degli account di servizio nell'elenco. Se uno di questi non è presente nell'elenco, inserisci il nome dell'account di servizio in Aggiungi membri e fai clic su Aggiungi.

  14. Nel riquadro centrale, in Autorizzazioni per singole subnet, seleziona livello 2 e deseleziona livello 1.

  15. Nel riquadro a destra, elimina gli account di servizio appartenenti al tuo primo progetto di servizio. In altre parole, elimina tutti gli account di servizio contenenti SERVICE_PROJECT_1_NUM.

  16. Nel riquadro a destra, cerca i nomi degli account di servizio Kubernetes Engine e delle API Google appartenenti al secondo progetto di servizio. Vuoi visualizzare entrambi i nomi degli account di servizio nell'elenco. Se uno di questi non è presente nell'elenco, inserisci il nome dell'account di servizio in Aggiungi membri e fai clic su Aggiungi.

gcloud

  1. Attiva la VPC condivisa nel progetto host. Il comando che utilizzi dipende dal ruolo amministrativo richiesto di cui disponi.

    Se disponi del ruolo Amministratore del VPC condiviso a livello di organizzazione:

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    

    Se disponi del ruolo Amministratore VPC condiviso a livello di cartella:

    gcloud beta compute shared-vpc enable HOST_PROJECT_ID
    
  2. Collega il tuo primo progetto di servizio al progetto host:

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_1_ID \
        --host-project HOST_PROJECT_ID
    
  3. Collega il secondo progetto di servizio al progetto host:

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_2_ID \
        --host-project HOST_PROJECT_ID
    
  4. Recupera il criterio IAM per la subnet tier-1:

    gcloud compute networks subnets get-iam-policy tier-1 \
       --project HOST_PROJECT_ID \
       --region COMPUTE_REGION
    

    L'output contiene un campo etag. Prendi nota del valore etag.

  5. Crea un file denominato tier-1-policy.yaml con i seguenti contenuti:

    bindings:
    - members:
      - serviceAccount:SERVICE_PROJECT_1_NUM@cloudservices.gserviceaccount.com
      - serviceAccount:service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com
      role: roles/compute.networkUser
    etag: ETAG_STRING
    

    Sostituisci ETAG_STRING con il valore etag che hai annotato in precedenza.

  6. Imposta il criterio IAM per la sottorete tier-1:

    gcloud compute networks subnets set-iam-policy tier-1 \
        tier-1-policy.yaml \
        --project HOST_PROJECT_ID \
        --region COMPUTE_REGION
    
  7. Recupera il criterio IAM per la subnet tier-2:

    gcloud compute networks subnets get-iam-policy tier-2 \
        --project HOST_PROJECT_ID \
        --region COMPUTE_REGION
    

    L'output contiene un campo etag. Prendi nota del valore etag.

  8. Crea un file denominato tier-2-policy.yaml con i seguenti contenuti:

    bindings:
    - members:
      - serviceAccount:SERVICE_PROJECT_2_NUM@cloudservices.gserviceaccount.com
      - serviceAccount:service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com
      role: roles/compute.networkUser
    etag: ETAG_STRING
    

    Sostituisci ETAG_STRING con il valore etag che hai annotato in precedenza.

  9. Imposta il criterio IAM per la sottorete tier-2:

    gcloud compute networks subnets set-iam-policy tier-2 \
        tier-2-policy.yaml \
        --project HOST_PROJECT_ID \
        --region COMPUTE_REGION
    

Gestione delle risorse del firewall

Se vuoi che un cluster GKE in un progetto di servizio crei e gestisca le risorse della firewall nel progetto host, all'account di servizio GKE del progetto di servizio devono essere concesse le autorizzazioni IAM appropriate utilizzando una delle seguenti strategie:

Console

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Seleziona il progetto host.

  3. Fai clic su Concedi l'accesso, poi inserisciservice-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com, l'entità dell'account di servizio GKE del progetto di servizio.

  4. Seleziona il ruolo Compute Security Admin dall'elenco a discesa.

  5. Fai clic su Salva.

gcloud

Concedi all'account di servizio GKE del progetto di servizio il ruolo Compute Security Admin all'interno del progetto host:

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member=serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com \
    --role=roles/compute.securityAdmin

Sostituisci quanto segue:

  • HOST_PROJECT_ID: l'ID progetto host della VPC condivisa
  • SERVICE_PROJECT_NUM: l'ID del progetto di servizio contenente l'account di servizio GKE
  • Per un approccio più granulare, crea un ruolo IAM personalizzato che includa solo le seguenti autorizzazioni: compute.networks.updatePolicy, compute.firewalls.list, compute.firewalls.get, compute.firewalls.create, compute.firewalls.update e compute.firewalls.delete. Concedi al service account GKE del progetto di servizio il ruolo personalizzato al progetto host.

Console

Crea un ruolo personalizzato all'interno del progetto host contenente le autorizzazioni IAM menzionate in precedenza:

  1. Nella console Google Cloud, vai alla pagina Ruoli.

    Vai alla pagina Ruoli

  2. Utilizza l'elenco a discesa nella parte superiore della pagina per selezionare il progetto ospitante.

  3. Fai clic su Crea ruolo.

  4. Inserisci un Titolo, una Descrizione, un ID e una Fase di lancio del ruolo per il ruolo. Il nome del ruolo non può essere modificato dopo la creazione.

  5. Fai clic su Aggiungi autorizzazioni.

  6. Filtra per compute.networks e seleziona le autorizzazioni IAM precedentemente menzionate.

  7. Dopo aver selezionato tutte le autorizzazioni richieste, fai clic su Aggiungi.

  8. Fai clic su Crea.

Concedi all'account di servizio GKE del progetto di servizio il ruolo personalizzato appena creato nel progetto host:

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai a IAM

  2. Seleziona il progetto host.

  3. Fai clic su Concedi accesso, quindi inserisci il principale dell'account di servizio GKE del progetto di servizio, service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com.

  4. Filtra per Titolo del ruolo personalizzato appena creato e selezionalo.

  5. Fai clic su Salva.

gcloud

  1. Crea un ruolo personalizzato all'interno del progetto host contenente le autorizzazioni IAM menzionate in precedenza:

    gcloud iam roles create ROLE_ID \
        --title="ROLE_TITLE" \
        --description="ROLE_DESCRIPTION" \
        --stage=LAUNCH_STAGE \
        --permissions=compute.networks.updatePolicy,compute.firewalls.list,compute.firewalls.get,compute.firewalls.create,compute.firewalls.update,compute.firewalls.delete \
        --project=HOST_PROJECT_ID
    
  2. Concedi all'account di servizio GKE del progetto di servizio il ruolo personalizzato appena creato nel progetto host:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member=serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com \
        --role=projects/HOST_PROJECT_ID/roles/ROLE_ID
    

    Sostituisci quanto segue:

    • ROLE_ID: il nome del ruolo, ad esempio gkeFirewallAdmin
    • ROLE_TITLE: un titolo facile da ricordare per il ruolo, ad esempio GKE Firewall Admin
    • ROLE_DESCRIPTION: una breve descrizione del ruolo, ad esempio GKE service account FW permissions
    • LAUNCH_STAGE: la fase di lancio del ruolo nel suo ciclo di vita, ad esempio ALPHA, BETA o GA
    • HOST_PROJECT_ID: l'ID progetto host della VPC condivisa
    • SERVICE_PROJECT_NUM: l'ID del progetto di servizio contenente l'account di servizio GKE

Se hai cluster in più di un progetto di servizio, devi scegliere una delle strategie e ripeterla per ogni account di servizio GKE del progetto di servizio.

Riepilogo dei ruoli concessi nelle subnet

Ecco un riepilogo dei ruoli concessi alle sottoreti:

Service account Ruolo Subnet
service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com Compute Network User tier-1
SERVICE_PROJECT_1_NUM@cloudservices.gserviceaccount.com Compute Network User tier-1
service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com Compute Network User tier-2
SERVICE_PROJECT_2_NUM@cloudservices.gserviceaccount.com Compute Network User tier-2

Accesso a Kubernetes Engine

Quando colleghi un progetto di servizio, l'attivazione dell'accesso a Kubernetes Engine concede all'account di servizio GKE del progetto di servizio le autorizzazioni per eseguire operazioni di gestione della rete nel progetto host.

GKE assegna automaticamente il seguente ruolo nel progetto host quando viene attivato l'accesso a Kubernetes Engine:

Membro Ruolo Risorsa
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com Utente agente di servizio host Account di servizio GKE nel progetto host

Tuttavia, per accedere alla rete host, devi aggiungere manualmente l'autorizzazione IAM Compute Network User all'account di servizio GKE del progetto di servizio.

Membro Ruolo Risorsa
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com Compute Network User Subnet specifica o intero progetto host

Se un progetto di servizio è stato collegato senza abilitare l'accesso a Kubernetes Engine, supponendo che l'API Kubernetes Engine sia già stata abilitata sia nel progetto di servizio sia nel progetto host, puoi assegnare manualmente le autorizzazioni all'account di servizio GKE del progetto di servizio aggiungendo le seguenti associazioni di ruoli IAM nel progetto host:

Membro Ruolo Risorsa
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com Compute Network User Subnet specifica o intero progetto host
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com Utente agente di servizio host Account di servizio GKE nel progetto host

Concedere il ruolo Utente agente di servizio host

L'account di servizio GKE di ogni progetto di servizio deve avere un'associazione per il ruolo Host Service Agent User nel progetto host. L'account di servizio GKE ha il seguente formato:

service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com

dove SERVICE_PROJECT_NUM è il numero del progetto del tuo progetto di servizio.

Questa associazione consente all'account di servizio GKE del progetto di servizio di eseguire operazioni di gestione della rete nel progetto host, come se fosse l'account di servizio GKE del progetto host. Questo ruolo può essere concesso solo all'account di servizio GKE di un progetto di servizio.

Console

Se utilizzi la console Google Cloud, non devi concedere esplicitamente il ruolo Utente agente di servizio host. Questa operazione è stata eseguita automaticamente quando hai utilizzato la console Google Cloud per collegare i progetti di servizio al tuo progetto host.

gcloud

  1. Per il primo progetto, concedi il ruolo Utente agente di servizio host all'account di servizio GKE del progetto. Questo ruolo viene concesso nel tuo progetto host:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member serviceAccount:service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com \
        --role roles/container.hostServiceAgentUser
    
  2. Per il secondo progetto, concedi il ruolo Utente agente di servizio host all'account di servizio GKE del progetto. Questo ruolo viene concesso nel tuo progetto host:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member serviceAccount:service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com \
        --role roles/container.hostServiceAgentUser
    

Verificare le subnet utilizzabili e gli intervalli di indirizzi IP secondari

Quando crei un cluster, devi specificare una subnet e gli intervalli di indirizzi IP secondari da utilizzare per i pod e i servizi del cluster. Esistono diversi motivi per cui un intervallo di indirizzi IP potrebbe non essere disponibile per l'utilizzo. Indipendentemente dal fatto che tu stia creando il cluster con la console Google Cloud o con gcloud CLI, devi specificare intervalli di indirizzi IP utilizzabili.

Un intervallo di indirizzi IP è utilizzabile per i servizi del nuovo cluster se non è già in uso. L'intervallo di indirizzi IP specificato per i pod del nuovo cluster può essere un intervallo non utilizzato o un intervallo condiviso con i pod degli altri cluster. Gli intervalli di indirizzi IP creati e gestiti da GKE non possono essere utilizzati dal cluster.

Puoi elencare le subnet e gli intervalli di indirizzi IP secondari utilizzabili di un progetto utilizzando gcloud CLI.

gcloud

gcloud container subnets list-usable \
    --project SERVICE_PROJECT_ID \
    --network-project HOST_PROJECT_ID

Sostituisci SERVICE_PROJECT_ID con l'ID del progetto del servizio.

Se ometti l'opzione --project o --network-project, il comando gcloud CLI utilizza il progetto predefinito della configurazione attiva. Poiché il progetto di destinazione e il progetto di rete sono distinti, devi specificare uno o entrambi i valori --project e --network-project.

L'output è simile al seguente:

PROJECT: xpn-host
REGION: REGION_NAME
NETWORK: shared-net
SUBNET: tier-2
RANGE: 172.16.4.0/22

SECONDARY_RANGE_NAME: tier-2-services
IP_CIDR_RANGE: 172.20.0.0/14
STATUS: usable for pods or services

SECONDARY_RANGE_NAME: tier-2-pods
IP_CIDR_RANGE: 172.16.16.0/20
STATUS: usable for pods or services

PROJECT: xpn-host
REGION: REGION_NAME
NETWORK: shared-net
SUBNET: tier-1
RANGE: 10.0.4.0/22

SECONDARY_RANGE_NAME: tier-1-services
IP_CIDR_RANGE: 10.0.32.0/20
STATUS: usable for pods or services

SECONDARY_RANGE_NAME: tier-1-pods
IP_CIDR_RANGE: 10.4.0.0/14
STATUS: usable for pods or services

Il comando list-usable restituisce un elenco vuoto nelle seguenti situazioni:

  • Quando l'account di servizio Kubernetes Engine del progetto di servizio non ha il ruolo Host Service Agent User per il progetto host.
  • Quando l'account di servizio Kubernetes Engine nel progetto host non esiste (ad esempio, se lo hai eliminato per errore).
  • Quando l'API Kubernetes Engine non è abilitata nel progetto host, il che implica che l'account di servizio Kubernetes Engine nel progetto host non è presente.

Per ulteriori informazioni, consulta la sezione relativa alla risoluzione dei problemi.

Note sugli intervalli secondari

Puoi creare 30 intervalli secondari in una determinata subnet. Per ogni cluster, sono necessari due intervalli secondari: uno per i pod e uno per i servizi.

Creazione di un cluster nel primo progetto di servizio

Per creare un cluster nel tuo primo progetto di servizio, segui questi passaggi utilizzando gcloud CLI o la console Google Cloud.

Console

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

    Vai a Google Kubernetes Engine

  2. Nel selettore di progetti, seleziona il tuo primo progetto di servizio.

  3. Fai clic su Crea.

  4. Nella sezione Autopilot o Standard, fai clic su Configura.

  5. In Nome, inserisci tier-1-cluster.

  6. Nell'elenco a discesa Regione, seleziona la stessa regione utilizzata per le subnet.

  7. Nel riquadro di navigazione, fai clic su Networking.

  8. In Networking del cluster, seleziona shared-net.

  9. Per Subnet nodo, seleziona tier-1.

  10. In Opzioni di rete avanzate, seleziona tier-1-pods per Intervallo di indirizzi dei pod predefiniti del cluster.

  11. Per Intervallo di indirizzi dei servizi, seleziona tier-1-services.

  12. Fai clic su Crea.

  13. Al termine della creazione, nell'elenco dei cluster, fai clic su tier-1-cluster.

  14. Nella pagina Dettagli cluster, fai clic sulla scheda Nodi.

  15. In Pool di nodi, fai clic sul nome del pool di nodi che vuoi controllare.

  16. In Gruppi di istanze, fai clic sul nome del gruppo di istanze da esaminare. Ad esempio, gke-tier-1-cluster-default-pool-5c5add1f-grp.

  17. Nell'elenco delle istanze, verifica che gli indirizzi IP interni dei tuoi node rientrino nell'intervallo principale della subnet di primo livello: 10.0.4.0/22.

gcloud

Crea un cluster denominato tier-1-cluster nel tuo primo progetto di servizio:

gcloud container clusters create-auto tier-1-cluster \
    --project=SERVICE_PROJECT_1_ID \
    --location=COMPUTE_REGION \
    --network=projects/HOST_PROJECT_ID/global/networks/shared-net \
    --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/tier-1 \
    --cluster-secondary-range-name=tier-1-pods \
    --services-secondary-range-name=tier-1-services

Al termine della creazione, verifica che i nodi del cluster si trovino nell'intervallo principale della subnet di primo livello: 10.0.4.0/22.

gcloud compute instances list --project SERVICE_PROJECT_1_ID

L'output mostra gli indirizzi IP interni dei nodi:

NAME                    ZONE           ... INTERNAL_IP
gke-tier-1-cluster-...  ZONE_NAME      ... 10.0.4.2
gke-tier-1-cluster-...  ZONE_NAME      ... 10.0.4.3
gke-tier-1-cluster-...  ZONE_NAME      ... 10.0.4.4

Creazione di un cluster nel secondo progetto di servizio

Per creare un cluster nel secondo progetto di servizio, esegui i passaggi riportati di seguito utilizzando gcloud CLI o la console Google Cloud.

Console

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

    Vai a Google Kubernetes Engine

  2. Nel selettore dei progetti, seleziona il secondo progetto di servizio.

  3. Fai clic su Crea.

  4. Nella sezione Standard o Autopilot, fai clic su Configura.

  5. In Nome, inserisci tier-2-cluster.

  6. Nell'elenco a discesa Regione, seleziona la stessa regione utilizzata per le subnet.

  7. Nel riquadro di navigazione, fai clic su Networking.

  8. In Rete, seleziona shared-net.

  9. In Subnet nodo, seleziona tier-2.

  10. Per Intervallo di indirizzi dei pod predefiniti del cluster, seleziona tier-2-pods.

  11. Per Intervallo di indirizzi dei servizi, seleziona tier-2-services.

  12. Fai clic su Crea.

  13. Al termine della creazione, nell'elenco dei cluster, fai clic su tier-2-cluster.

  14. Nella pagina Dettagli cluster, fai clic sulla scheda Nodi.

  15. In Pool di nodi, fai clic sul nome del pool di nodi che vuoi controllare.

  16. In Gruppi di istanze, fai clic sul nome del gruppo di istanze da esaminare. Ad esempio, gke-tier-2-cluster-default-pool-5c5add1f-grp.

  17. Nell'elenco delle istanze, verifica che gli indirizzi IP interni dei tuoi node rientrino nell'intervallo principale della subnet di livello 2: 172.16.4.0/22.

gcloud

Crea un cluster denominato tier-2-cluster nel secondo progetto di servizio:

gcloud container clusters create-auto tier-2-cluster \
    --project=SERVICE_PROJECT_2_ID \
    --location=COMPUTE_REGION \
    --network=projects/HOST_PROJECT_ID/global/networks/shared-net \
    --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/tier-2 \
    --cluster-secondary-range-name=tier-2-pods \
    --services-secondary-range-name=tier-2-services

Al termine della creazione, verifica che i nodi del cluster si trovino nell'intervallo principale della subnet di secondo livello: 172.16.4.0/22.

gcloud compute instances list --project SERVICE_PROJECT_2_ID

L'output mostra gli indirizzi IP interni dei nodi:

NAME                    ZONE           ... INTERNAL_IP
gke-tier-2-cluster-...  ZONE_NAME      ... 172.16.4.2
gke-tier-2-cluster-...  ZONE_NAME      ... 172.16.4.3
gke-tier-2-cluster-...  ZONE_NAME      ... 172.16.4.4

Creazione di regole firewall

Per consentire il traffico all'interno della rete e tra i cluster al suo interno, devi creare firewall. Le sezioni seguenti mostrano come creare e aggiornare le regole firewall: