Questa pagina spiega come configurare l'isolamento di rete per i cluster Google Kubernetes Engine (GKE) quando crei o aggiorni il cluster.
Pianifica e progetta l'isolamento della rete del cluster con gli architetti di rete, gli amministratori di rete o qualsiasi altro team di ingegneri di rete della tua organizzazione responsabile della definizione, dell'implementazione e della manutenzione dell'architettura di rete.
Come funziona l'isolamento di rete del cluster
In un cluster GKE, l'isolamento di rete dipende da chi può accedere ai componenti del cluster e in che modo. Puoi controllare:
- Accesso al control plane: puoi personalizzare l'accesso esterno, l'accesso limitato o l'accesso illimitato al control plane.
- Networking del cluster: puoi scegliere chi può accedere ai nodi nei cluster standard o ai workload nei cluster Autopilot.
Prima di creare il cluster, tieni presente quanto segue:
- Chi può accedere al control plane e come viene esposto?
- Come vengono esposti i tuoi nodi o carichi di lavoro?
Per rispondere a queste domande, segui le linee guida per la pianificazione e la progettazione in Informazioni sull'isolamento di rete.
Limitazioni e restrizioni
Per impostazione predefinita, GKE crea i cluster come cluster nativi di VPC. I cluster VPC nativi non supportano le reti legacy.
Intervalli secondari dei pod a livello di node pool: quando crei un cluster GKE, se specifichi un intervallo secondario dei pod inferiore a /24
per pool di nodi utilizzando la UI, potresti riscontrare il seguente errore:
Getting Pod secondary range 'pod' must have a CIDR block larger or equal to /24
GKE non supporta la specifica di un intervallo inferiore a /24
a livello di pool di nodi. Tuttavia, è supportata la specifica di un intervallo più piccolo a livello di cluster. Questa operazione può essere eseguita utilizzando Google Cloud CLI con l'argomento
--cluster-ipv4-cidr
. Per saperne di più, consulta la sezione Creazione di un cluster con un intervallo CIDR specifico.
Espandi le sezioni seguenti per visualizzare le regole relative agli intervalli di indirizzi IP e al traffico durante la creazione di un cluster.
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
inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo
gcloud components update
.
Configura l'accesso al control plane
Quando crei un cluster GKE in qualsiasi versione utilizzando Google Cloud CLI o nella versione 1.29 e successive utilizzando la console, il control plane è accessibile tramite le seguenti interfacce:
Endpoint basato sul DNS
L'accesso al control plane dipende dalla risoluzione DNS del traffico di origine. Abilita l'endpoint basato su DNS per ottenere i seguenti vantaggi:
- Crea un criterio di accesso dinamico basato sui criteri IAM.
- Accedi al control plane da altre reti VPC o da località esterne senza la necessità di configurarebastion hostn o nodi proxy.
Per configurare l'accesso all'endpoint basato su DNS, consulta Definisci l'accesso all'endpoint basato su DNS.
Endpoint basati su IP
L'accesso agli endpoint del control plane dipende dall'indirizzo IP di origine ed è controllato dalle reti autorizzate. Puoi gestire l'accesso agli endpoint basati su IP del control plane, tra cui:
- Attiva o disattiva l'endpoint basato su IP.
- Attiva o disattiva l'endpoint esterno per consentire l'accesso dal traffico esterno. L'endpoint interno è sempre abilitato quando abiliti gli endpoint basati su IP del control plane.
- Aggiungi reti autorizzate alla lista consentita o nega l'accesso dagli indirizzi IP pubblici. Se non configuri le reti autorizzate, il control plane è accessibile da qualsiasi indirizzo IP esterno. Ciò include indirizzi IP esterni o di internet pubblico senza restrizioni. Google Cloud
- Consenti o nega l'accesso da uno o tutti gli indirizzi IP privati nel cluster.
- Consenti o nega l'accesso da Google Cloud indirizzi IP esterni, ovvero indirizzi IP esterni assegnati a qualsiasi VM utilizzata da qualsiasi cliente ospitato su Google Cloud.
- Consenti o nega l'accesso da indirizzi IP in altre regioni Google Cloud .
Prima di definire l'accesso al control plane, esamina le limitazioni dell'utilizzo di endpoint basati su IP.
Crea un cluster e definisci l'accesso al control plane
Per creare o aggiornare un cluster Autopilot o Standard, utilizza Google Cloud CLI o la console Google Cloud .
Console
Per creare un cluster, completa i seguenti passaggi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su add_box Crea.
Configura gli attributi del cluster in base alle esigenze del progetto.
Nel menu di navigazione, fai clic su Networking.
In Accesso al control plane, configura gli endpoint del control plane:
- Seleziona la casella di controllo Accesso tramite DNS per abilitare gli endpoint basati su DNS del control plane.
- Seleziona la casella di controllo Accedi mediante indirizzi IPv4 per abilitare gli endpoint basati su IP del control plane. Utilizza la configurazione inclusa in Definisci gli indirizzi IP che possono accedere al control plane per personalizzare l'accesso agli endpoint basati su IP.
gcloud
Per i cluster Autopilot, esegui questo comando:
gcloud container clusters create-auto CLUSTER_NAME \
--enable-ip-access \
--enable-dns-access
Per i cluster Standard, esegui questo comando:
gcloud container clusters create CLUSTER_NAME \
--enable-ip-access \
--enable-dns-access
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.
Entrambi i comandi includono flag che consentono di:
enable-dns-access
: consente l'accesso al control plane utilizzando l'endpoint del control plane basato su DNS.enable-ip-access
: consente l'accesso al control plane utilizzando indirizzi IPv4. Se vuoi disattivare sia gli endpoint interni che quelli esterni del control plane, utilizza il flagno-enable-ip-access
.
Utilizza i flag elencati in Definisci gli indirizzi IP che possono accedere al control plane per personalizzare l'accesso agli endpoint basati su IP.
Definisci l'accesso all'endpoint basato su DNS
Puoi gestire l'autenticazione e l'autorizzazione all'endpoint basato su DNS configurando l'autorizzazione IAM container.clusters.connect
. Per
configurare questa autorizzazione, assegna uno dei seguenti ruoli IAM al tuo progettoGoogle Cloud :
roles/container.developer
roles/container.viewer
Se vuoi, puoi gestire la raggiungibilità dell'endpoint basato su DNS utilizzando le seguenti funzionalità:
Controlli di servizio VPC: l'endpoint basato su DNS supporta i controlli di servizio VPC per aggiungere un livello di sicurezza all'accesso al piano di controllo. I Controlli di servizio VPC funzionano in modo coerente in tutte le Google Cloud API.
Accesso all'endpoint basato su DNS da client senza accesso a internet pubblico: l'endpoint basato su DNS è accessibile tramite le API Google Cloud disponibili su internet pubblico. Per accedere all'endpoint basato su DNS da client privati, puoi utilizzare l'accesso privato Google, il gateway Cloud NAT o Private Service Connect per le Google Cloud API.
Quando utilizzi Private Service Connect per le API, GKE reindirizza le richieste per gli indirizzi
gke.goog
all'indirizzo IP interno aggiunto da Private Service Connect per le API di Google, non all'indirizzo IP pubblico predefinito di Google. Google Cloud Per configurare Private Service Connect per le Google Cloud API, completa i passaggi descritti in Accedere alle API di Google tramite endpoint.Accesso all'endpoint basato su DNS dai client on-premise: l'endpoint basato su DNS è accessibile dai client on-premise tramite l'accesso privato Google. Per configurare l'accesso privato Google, completa i passaggi descritti in Configurazione dell'accesso privato Google per gli host on-premise.
Definisci gli indirizzi IP che possono accedere al control plane
Per definire gli indirizzi IP che possono accedere al control plane:
Console
- Nella sezione Accesso al control plane, seleziona Abilita reti autorizzate.
- Fai clic su Aggiungi rete autorizzata.
- Inserisci un nome per la rete.
- In Rete, inserisci un intervallo CIDR a cui vuoi concedere l'accesso al control plane del cluster.
- Fai clic su Fine.
- Se necessario, aggiungi altre reti autorizzate.
Definisci le regole firewall per l'indirizzo IP del control plane
Per definire le regole firewall dell'indirizzo IP del control plane, completa i seguenti passaggi:
- Espandi la sezione Mostra regole firewall per indirizzo IP.
Seleziona la casella di controllo Accedi mediante l'indirizzo IP esterno del control plane per consentire l'accesso al control plane da indirizzi IP pubblici.
Best practice: Definisci le reti autorizzate del control plane per limitare l'accesso al control plane.
Seleziona la casella di controllo Accedi mediante l'indirizzo IP interno del control plane da qualsiasi regione. Gli indirizzi IP interni di qualsiasi Google Cloud regione possono accedere all'endpoint interno del control plane.
Seleziona Applica le reti autorizzate sull'endpoint interno del control plane. Solo gli indirizzi IP definiti nell'elenco Aggiungi reti autorizzate possono accedere all'endpoint interno del control plane. L'endpoint interno è abilitato per impostazione predefinita.
Seleziona Aggiungi Google Cloud indirizzi IP esterni alle reti autorizzate. Tutti gli indirizzi IP pubblici di Google Cloud possono accedere al control plane.
gcloud
Puoi configurare gli indirizzi IP che possono accedere agli endpoint esterni e interni del control plane utilizzando i seguenti flag:
enable-private-endpoint
: specifica che l'accesso all'endpoint esterno è disabilitato. Ometti questo flag se vuoi consentire l'accesso al control plane da indirizzi IP esterni. In questo caso, ti consigliamo vivamente di controllare l'accesso all'endpoint esterno con il flagenable-master-authorized-networks
.enable-master-authorized-networks:
Specifica che l'accesso all'endpoint esterno è limitato agli intervalli di indirizzi IP che autorizzi.master-authorized-networks
: elenca i valori CIDR per le reti autorizzate. Questo elenco è delimitato da virgole. Ad esempio,8.8.8.8/32,8.8.8.0/24
.Best practice: Utilizza il flag
enable-master-authorized-networks
in modo che l'accesso al control plane sia limitato.enable-authorized-networks-on-private-endpoint
: specifica che l'accesso all'endpoint interno è limitato agli intervalli di indirizzi IP che autorizzi con il flagenable-master-authorized-networks
.no-enable-google-cloud-access
: nega l'accesso al control plane da Google Cloud indirizzi IP esterni.enable-master-global-access
: consente l'accesso da indirizzi IP in altre regioniGoogle Cloud .Puoi continuare a configurare la rete del cluster definendo l'isolamento di nodi o pod a livello di cluster.
Puoi anche creare un cluster e definire gli attributi a livello di cluster, ad esempio la rete e la subnet dei nodi, il tipo di stack IP e l'allocazione degli indirizzi IP. Per saperne di più, consulta Crea un cluster nativo di VPC.
Modifica l'accesso al control plane
Per modificare l'accesso al control plane di un cluster, utilizza gcloud CLI o la console Google Cloud .
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Nell'elenco dei cluster, fai clic sul nome del cluster.
Nella scheda Dettagli cluster, in Networking del control plane, fai clic su edit.
Nella finestra di dialogo Modifica networking del control plane, modifica l'accesso al control plane in base ai requisiti del tuo caso d'uso.
gcloud
Esegui questo comando e aggiungi i flag che soddisfano il tuo caso d'uso. Puoi utilizzare i seguenti flag:
enable-dns-access
: consente l'accesso al control plane utilizzando l'endpoint del control plane basato su DNS.enable-ip-access
: consente l'accesso al control plane utilizzando indirizzi IPv4. Se vuoi disattivare sia gli endpoint interni che quelli esterni del control plane, utilizza il flagno-enable-ip-access
.enable-private-endpoint
: specifica che l'accesso all'endpoint esterno è disabilitato. Ometti questo flag se vuoi consentire l'accesso al control plane da indirizzi IP esterni. In questo caso, ti consigliamo vivamente di controllare l'accesso all'endpoint esterno con il flagenable-master-authorized-networks
.enable-master-authorized-networks:
Specifica che l'accesso all'endpoint esterno è limitato agli intervalli di indirizzi IP che autorizzi.master-authorized-networks
: elenca i valori CIDR per le reti autorizzate. Questo elenco è delimitato da virgole. Ad esempio,8.8.8.8/32,8.8.8.0/24
.Best practice: Utilizza il flag
enable-master-authorized-networks
in modo che l'accesso al control plane sia limitato.enable-authorized-networks-on-private-endpoint
: specifica che l'accesso all'endpoint interno è limitato agli intervalli di indirizzi IP che autorizzi con il flagenable-master-authorized-networks
.no-enable-google-cloud-access
: nega l'accesso al control plane da Google Cloud indirizzi IP esterni.enable-master-global-access
: consente l'accesso da indirizzi IP in altre regioniGoogle Cloud .gcloud container clusters update CLUSTER_NAME
Sostituisci
CLUSTER_NAME
con il nome del cluster.
Verificare la configurazione del control plane
Puoi visualizzare gli endpoint del cluster utilizzando gcloud CLI o la consoleGoogle Cloud .
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Nell'elenco dei cluster, fai clic sul nome del cluster.
Nella scheda Dettagli cluster, in Piano di controllo, puoi controllare le seguenti caratteristiche degli endpoint del piano di controllo:
- Endpoint DNS include il nome dell'endpoint basato su DNS del tuo cluster, se lo hai attivato.
- Controlla l'accesso al control plane mediante indirizzi IPv4, che include lo stato dell'endpoint basato su IP. Se abilitata, puoi visualizzare le informazioni degli endpoint pubblici e privati.
- Accedi mediante l'indirizzo IP interno del control plane da qualsiasi regione mostra lo stato Attivato quando è possibile accedere al control plane tramite indirizzi IP Google di altre regioni.
- Reti autorizzate mostra l'elenco dei CIDR che possono accedere al control plane, se hai abilitato le reti autorizzate.
- L'opzione Applica le reti autorizzate sull'endpoint interno del control plane mostra lo stato Attivato se solo i CIDR nel campo Reti autorizzate possono accedere all'endpoint interno.
- Aggiungi Google Cloud indirizzi IP esterni alle reti autorizzate mostra lo stato Attivato se gli indirizzi IP esterni di Google Cloud possono accedere al control plane.
Per modificare un attributo, fai clic su edit Controlla l'accesso al control plane mediante indirizzi IPv4 e modificalo in base al tuo caso d'uso.
gcloud
Per verificare la configurazione del control plane, esegui questo comando:
gcloud container clusters describe CLUSTER_NAME
L'output ha un blocco controlPlaneEndpointsConfig
che descrive la
definizione di rete. Puoi vedere un output simile al seguente:
controlPlaneEndpointsConfig:
dnsEndpointConfig:
allowExternalTraffic: true
endpoint: gke-dc6d549babec45f49a431dc9ca926da159ca-518563762004.us-central1-c.autopush.gke.goog
ipEndpointsConfig:
authorizedNetworksConfig:
cidrBlocks:
- cidrBlock: 8.8.8.8/32
- cidrBlock: 8.8.8.0/24
enabled: true
gcpPublicCidrsAccessEnabled: false
privateEndpointEnforcementEnabled: true
enablePublicEndpoint: false
enabled: true
globalAccess: true
privateEndpoint: 10.128.0.13
In questo esempio, il cluster ha la seguente configurazione:
- Sono abilitati sia gli endpoint basati su DNS sia quelli basati su indirizzo IP.
- Le reti autorizzate sono abilitate e gli intervalli CIDR sono definiti. Queste reti autorizzate vengono applicate all'indirizzo IP interno.
- L'accesso al control plane da Google Cloud indirizzi IP esterni è negato.
Esempi di configurazione dell'accesso al control plane
Questa sezione descrive in dettaglio la configurazione dei seguenti esempi di isolamento di rete. Valuta questi esempi per verificare se sono simili al tuo caso d'uso:
- Esempio 1: il control plane è accessibile da determinati indirizzi IP che definisci. Questi potrebbero includere indirizzi IP di altre Google Cloud regioni o indirizzi IP riservati a Google.
- Esempio 2: il control plane non è accessibile da alcun indirizzo IP esterno.
Esempio 1: il control plane è accessibile da determinati indirizzi IP
In questa sezione, crea un cluster con le seguenti configurazioni di isolamento di rete:
- Il control plane ha l'endpoint basato su DNS abilitato.
- Il control plane ha l'endpoint esterno abilitato oltre all'endpoint interno abilitato per impostazione predefinita.
- Il control plane ha reti autorizzate definite, consentendo solo alle
seguenti reti autorizzate di raggiungere il control plane:
- Un intervallo di indirizzi IP esterni che definisci.
- Tutti gli indirizzi IP interni del cluster.
- Google Cloud Indirizzi IP esterni.
Per creare questo cluster, utilizza Google Cloud CLI o la console Google Cloud .
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su add_box Crea.
Configura il cluster in base ai tuoi requisiti.
Nel menu di navigazione, fai clic su Networking.
In Accesso al control plane, configura gli endpoint del control plane:
- Seleziona la casella di controllo Accesso tramite DNS.
- Seleziona la casella di controllo Accesso mediante indirizzi IPv4.
Seleziona Abilita reti autorizzate.
Fai clic su Aggiungi rete autorizzata.
Inserisci un nome per la rete.
In Rete, inserisci un intervallo CIDR a cui vuoi concedere l'accesso al control plane del cluster.
Fai clic su Fine.
Se necessario, aggiungi altre reti autorizzate.
Espandi la sezione Mostra regole firewall per indirizzo IP.
Seleziona Accedi mediante l'indirizzo IP interno del control plane da qualsiasi regione. Gli indirizzi IP interni di qualsiasi Google Cloud regione possono accedere al control plane tramite l'indirizzo IP interno.
Seleziona Aggiungi Google Cloud indirizzi IP esterni alle reti autorizzate. Tutti gli indirizzi IP esterni di Google Cloud possono accedere al control plane.
Puoi continuare a configurare la rete del cluster definendo l'isolamento dei nodi o dei pod a livello di cluster.
gcloud
Esegui questo comando:
gcloud container clusters create-auto CLUSTER_NAME \
--enable-dns-access \
--enable-ip-access \
--enable-master-authorized-networks \
--enable-master-global-access \
--master-authorized-networks CIDR1,CIDR2,...
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster GKE.CIDR1,CIDR2,...
: un elenco separato da virgole di valori CIDR per le reti autorizzate. Ad esempio,8.8.8.8/32,8.8.8.0/24
.
Esempio 2: il control plane è accessibile dagli indirizzi IP interni
In questa sezione, crea un cluster con le seguenti configurazioni di isolamento di rete:
- Il control plane ha l'endpoint basato su DNS abilitato.
- L'endpoint esterno del control plane è disattivato.
- Le reti autorizzate del control plane sono abilitate.
- È consentito l'accesso al control plane tramite l'indirizzo IP interno da qualsiasi regioneGoogle Cloud .
- Gli Google Cloud indirizzi IP esterni non hanno accesso al tuo cluster.
Puoi creare questo cluster utilizzando Google Cloud CLI o la console Google Cloud .
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su add_box Crea.
Configura il cluster in base ai tuoi requisiti.
Nel menu di navigazione, fai clic su Networking.
In Accesso al control plane, configura gli endpoint del control plane:
- Seleziona la casella di controllo Accesso tramite DNS.
- Seleziona la casella di controllo Accesso mediante indirizzi IPv4.
Espandi la sezione Mostra regole firewall per indirizzo IP.
Deseleziona Accedi mediante l'indirizzo IP esterno del control plane. Il control plane non è accessibile da alcun indirizzo IP esterno.
Nella sezione Accesso al control plane, seleziona Abilita reti autorizzate.
Seleziona la casella di controllo Accedi mediante l'indirizzo IP interno del control plane da qualsiasi regione. Gli indirizzi IP interni di qualsiasi Google Cloud regione possono accedere al control plane tramite l'indirizzo IP interno.
Puoi continuare la configurazione della rete del cluster definendo l'isolamento di nodi o pod a livello di cluster.
gcloud
Esegui questo comando:
gcloud container clusters create-auto CLUSTER_NAME \
--enable-dns-access \
--enable-ip-access \
--enable-private-endpoint \
--enable-master-authorized-networks \
--master-authorized-networks CIDR1,CIDR2,... \
--no-enable-google-cloud-access \
--enable-master-global-access
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.CIDR1,CIDR2,...
: un elenco separato da virgole di valori CIDR per le reti autorizzate. Ad esempio,8.8.8.8/32,8.8.8.0/24
.
Configura il networking per il cluster
In questa sezione, configuri il cluster in modo che abbia nodi con accesso interno (privato) o esterno (pubblico). GKE ti consente di combinare la configurazione di rete dei nodi a seconda del tipo di cluster che utilizzi:
- Cluster standard: puoi creare o aggiornare i pool di nodi per eseguire il provisioning di nodi privati o pubblici nello stesso cluster. Ad esempio, se crei un pool di nodi con nodi privati, GKE esegue il provisioning dei nodi solo con indirizzi IP interni. GKE non modifica i node pool esistenti. Puoi anche definire la configurazione di rete predefinita a livello di cluster. GKE applica questa configurazione di rete predefinita solo quando i nuovi node pool non hanno alcuna configurazione di rete definita.
- Cluster Autopilot: puoi creare o aggiornare il cluster per definire la configurazione di rete predefinita per tutti i tuoi carichi di lavoro. GKE pianifica i carichi di lavoro nuovi ed esistenti su nodi pubblici o privati in base alla tua configurazione. Puoi anche definire esplicitamente la configurazione della rete del cluster di un singolo carico di lavoro.
Configura il cluster
In questa sezione, configura il networking del cluster a livello di cluster. GKE prende in considerazione questa configurazione quando il pool di nodi o il workload non la definiscono.
Per definire la configurazione a livello di cluster, utilizza Google Cloud CLI o la consoleGoogle Cloud .
Console
Crea un cluster
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su add_box Crea, poi fai clic su Configura nella sezione Standard o Autopilot.
Configura il cluster in base ai tuoi requisiti.
Nel menu di navigazione, fai clic su Networking.
Nella sezione Networking del cluster, completa quanto segue in base al tuo caso d'uso:
- Seleziona Abilita nodi privati per eseguire il provisioning dei nodi solo con indirizzi IP interni (nodi privati), che impediscono ai client esterni di accedere ai nodi. Puoi modificare queste impostazioni in qualsiasi momento.
- Deseleziona Abilita nodi privati per eseguire il provisioning dei nodi con solo indirizzi IP esterni (pubblici), il che consente ai client esterni di accedere ai nodi.
Nella sezione Opzioni di networking avanzate, configura attributi VPC nativi aggiuntivi. Per saperne di più, consulta Crea un cluster nativo di VPC.
Fai clic su Crea.
Aggiornare un cluster esistente
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Nell'elenco dei cluster, fai clic sul nome del cluster.
In Nodi privati, nella scheda Configurazione predefinita del nuovo node pool, fai clic su edit Modifica nodi privati.
Nella finestra di dialogo Modifica nodi privati, esegui una delle seguenti operazioni:
- Seleziona Abilita nodi privati per eseguire il provisioning dei nodi solo con indirizzi IP interni (nodi privati), che impediscono ai client esterni di accedere ai nodi. Puoi modificare queste impostazioni in qualsiasi momento.
- Deseleziona Abilita nodi privati per eseguire il provisioning dei nodi con solo indirizzi IP esterni (pubblici), il che consente ai client esterni di accedere ai nodi.
Fai clic su Salva modifiche.
gcloud
Utilizza uno dei seguenti flag per definire il networking del cluster:
enable-private-nodes
: per eseguire il provisioning dei nodi solo con indirizzi IP interni (nodi privati). Quando utilizzi questo flag, tieni presenti le seguenti condizioni:- Il flag
enable-ip-alias
è obbligatorio quando utilizzienable-private-nodes
. - Il flag
master-ipv4-cidr
è facoltativo per creare subnet private. Se utilizzi questo flag, GKE crea una nuova subnet che utilizza i valori che hai definito inmaster-ipv4-cidr
e utilizza la nuova subnet per eseguire il provisioning dell'indirizzo IP interno per il control plane.
- Il flag
no-enable-private-nodes
: per eseguire il provisioning dei nodi con solo indirizzi IP esterni (nodi pubblici).
Nei cluster Autopilot, crea o aggiorna il cluster con il flag enable-private-nodes
.
Per creare un cluster, utilizza il seguente comando:
gcloud container clusters create-auto CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-alias
Per aggiornare un cluster, utilizza il comando seguente.
gcloud container clusters update CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-alias
L'aggiornamento del cluster ha effetto solo dopo che tutti i pool di nodi sono stati ripianificati. Questa procedura potrebbe richiedere diverse ore.
Nei cluster standard, crea o aggiorna il cluster con il flag
enable-private-nodes
.
Per creare un cluster, utilizza il seguente comando:
gcloud container clusters create CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-alias
Per aggiornare un cluster, utilizza il comando seguente:
gcloud container clusters update CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-alias
L'aggiornamento del cluster ha effetto solo sui nuovi node pool. GKE non aggiorna questa configurazione sui pool di nodi esistenti.
La configurazione del cluster viene sovrascritta dalla configurazione di rete nel node pool o a livello di workload.
Configura i pool di nodi o i workload
Per configurare nodi privati o pubblici a livello di workload per i cluster Autopilot o i pool di nodi per i cluster Standard, utilizza Google Cloud CLI o la consoleGoogle Cloud . Se non definisci la configurazione di rete a livello di workload o pool di nodi, GKE applica la configurazione predefinita a livello di cluster.
Console
Nei cluster standard, completa i seguenti passaggi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Nella pagina Dettagli cluster, fai clic sul nome del cluster da modificare.
Fai clic su add_box Aggiungi pool di nodi.
Configura la casella di controllo Abilita nodi privati in base al tuo caso d'uso:
- Seleziona Abilita nodi privati per eseguire il provisioning dei nodi solo con indirizzi IP interni (nodi privati).
- Deseleziona Abilita nodi privati per eseguire il provisioning dei nodi con solo indirizzi IP esterni (pubblici), il che consente ai client esterni di accedere ai nodi. Puoi modificare questa configurazione in qualsiasi momento.
Configura il nuovo pool di nodi.
Fai clic su Crea.
Per scoprire di più sulla gestione pool di nodi, consulta Aggiungere e gestire i node pool.
gcloud
Nei cluster Autopilot e nei pool di nodi Standard che utilizzano il provisioning automatico dei nodi, aggiungi il seguente
nodeSelector
alla specifica del pod:cloud.google.com/private-node=true
Utilizza
private-node=true
per pianificare un pod sui nodi che hanno solo indirizzi IP interni (nodi privati).GKE ricrea i pod su nodi privati o pubblici, in base alla configurazione. Per evitare interruzioni del carico di lavoro, esegui la migrazione di ogni carico di lavoro in modo indipendente e monitora la migrazione.
Nei cluster Standard, per eseguire il provisioning dei nodi tramite indirizzi IP privati in un pool di nodi esistente, esegui questo comando:
gcloud container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --enable-private-nodes \ --enable-ip-alias
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del pool di nodi che vuoi modificare.CLUSTER_NAME
: il nome del cluster esistente.
Utilizza uno dei seguenti flag per definire la configurazione di rete del pool di nodi:
enable-private-nodes
: per eseguire il provisioning dei nodi solo con indirizzi IP interni (nodi privati).no-enable-private-nodes
: per eseguire il provisioning dei nodi con solo indirizzi IP esterni (nodi pubblici).
Configurazioni avanzate
Le sezioni seguenti descrivono le configurazioni avanzate che potresti voler utilizzare quando configuri l'isolamento di rete del cluster.
Utilizzo di Cloud Shell per accedere a un cluster con endpoint esterno disabilitato
Se l'endpoint esterno del control plane del cluster è disabilitato, non puoi accedere al control plane GKE con Cloud Shell. Se vuoi utilizzare Cloud Shell per accedere al cluster, ti consigliamo di abilitare l'endpoint basato su DNS.
Per verificare l'accesso al cluster, completa i seguenti passaggi:
Se hai abilitato l'endpoint basato su DNS, esegui il comando seguente per ottenere le credenziali per il cluster:
gcloud container clusters get-credentials CLUSTER_NAME \ --dns-endpoint
Se hai abilitato l'endpoint basato su IP, esegui il seguente comando per ottenere le credenziali per il cluster:
gcloud container clusters get-credentials CLUSTER_NAME \ --project=PROJECT_ID \ --internal-ip
Sostituisci
PROJECT_ID
con l'ID progetto.Utilizza
kubectl
in Cloud Shell per accedere al cluster:kubectl get nodes
L'output è simile al seguente:
NAME STATUS ROLES AGE VERSION gke-cluster-1-default-pool-7d914212-18jv Ready <none> 104m v1.21.5-gke.1302 gke-cluster-1-default-pool-7d914212-3d9p Ready <none> 104m v1.21.5-gke.1302 gke-cluster-1-default-pool-7d914212-wgqf Ready <none> 104m v1.21.5-gke.1302
Il comando get-credentials
utilizza automaticamente l'endpoint basato su DNS se l'accesso all'endpoint basato su IP è disattivato.
Aggiungi regole firewall per casi d'uso specifici
Questa sezione spiega come aggiungere una regola firewall a un cluster. Per
impostazione predefinita, le regole del firewall limitano il piano di controllo del cluster all'avvio di connessioni TCP
ai nodi e ai pod sulle porte 443
(HTTPS) e 10250
(kubelet).
Per alcune funzionalità di Kubernetes, potrebbe essere necessario aggiungere regole firewall per consentire
l'accesso su porte aggiuntive. Non creare regole firewall o
regole dei criteri firewall gerarchici
con una
priorità più alta rispetto alle
regole firewall create automaticamente.
Le funzionalità di Kubernetes che richiedono regole firewall aggiuntive includono:
- Webhook di ammissione
- Server API aggregati
- Conversione webhook
- Configurazione dell'audit dinamico
- In genere, qualsiasi API con un campo ServiceReference richiede regole firewall aggiuntive.
L'aggiunta di una regola firewall consente il traffico dal control plane del cluster a tutti i seguenti elementi:
- La porta specificata di ogni nodo (hostPort).
- La porta specificata di ogni pod in esecuzione su questi nodi.
- La porta specificata di ogni servizio in esecuzione su questi nodi.
Per informazioni sulle regole firewall, consulta Regole firewall nella documentazione di Cloud Load Balancing.
Per aggiungere una regola firewall in un cluster, devi registrare il blocco CIDR del control plane del cluster e la destinazione utilizzata. Dopo aver registrato questo valore, puoi creare la regola.
Visualizza il blocco CIDR del control plane
Per aggiungere una regola firewall, devi disporre del blocco CIDR del control plane del cluster.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Nell'elenco dei cluster, fai clic sul nome del cluster.
Nella scheda Dettagli, nella sezione Networking, prendi nota del valore nel campo Intervallo di indirizzi del control plane.
gcloud
Esegui questo comando:
gcloud container clusters describe CLUSTER_NAME
Sostituisci CLUSTER_NAME
con il nome del tuo
cluster.
Nell'output del comando, prendi nota del valore nel campo masterIpv4CidrBlock.
Visualizzare le regole firewall esistenti
Devi specificare la destinazione (in questo caso, i nodi di destinazione) utilizzata dalle regole firewall esistenti del cluster.
Console
Vai alla pagina Policy firewall nella console Google Cloud .
Per Tabella filtri per Regole firewall VPC, inserisci
gke-CLUSTER_NAME
.
Nei risultati, prendi nota del valore nel campo Target.
gcloud
Esegui questo comando:
gcloud compute firewall-rules list \
--filter 'name~^gke-CLUSTER_NAME' \
--format 'table(
name,
network,
direction,
sourceRanges.list():label=SRC_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
targetTags.list():label=TARGET_TAGS
)'
Nell'output del comando, prendi nota del valore nel campo Targets.
Per visualizzare le regole firewall per un VPC condiviso, aggiungi il
flag --project HOST_PROJECT_ID
al comando.
Aggiungere una regola firewall
Console
Vai alla pagina Policy firewall nella console Google Cloud .
Fai clic su add_box Crea regola firewall.
In Nome, inserisci il nome della regola firewall.
Nell'elenco Rete, seleziona la rete pertinente.
In Direzione del traffico, fai clic su In entrata.
In Azione in caso di corrispondenza, fai clic su Consenti.
Nell'elenco Destinazioni, seleziona Tag di destinazione specificati.
In Tag di destinazione, inserisci il valore target che hai annotato in precedenza.
Nell'elenco Filtro di origine, seleziona Intervalli IPv4.
In Intervalli IPv4 di origine, inserisci il blocco CIDR del control plane del cluster.
In Protocolli e porte, fai clic su Protocolli e porte specificati, seleziona la casella di controllo per il protocollo pertinente (TCP o UDP) e inserisci il numero di porta nel campo del protocollo.
Fai clic su Crea.
gcloud
Esegui questo comando:
gcloud compute firewall-rules create FIREWALL_RULE_NAME \
--action ALLOW \
--direction INGRESS \
--source-ranges CONTROL_PLANE_RANGE \
--rules PROTOCOL:PORT \
--target-tags TARGET
Sostituisci quanto segue:
FIREWALL_RULE_NAME
: il nome che scegli per la regola firewall.CONTROL_PLANE_RANGE
: l'intervallo di indirizzi IP del control plane del cluster (masterIpv4CidrBlock
) che hai raccolto in precedenza.PROTOCOL:PORT
: la porta e il relativo protocollo,tcp
oudp
.TARGET
: il valore target (Targets
) che hai raccolto in precedenza.
Per aggiungere una regola firewall per un VPC condiviso, aggiungi i seguenti flag al comando:
--project HOST_PROJECT_ID
--network NETWORK_ID
Concessione dell'accesso a internet in uscita ai nodi privati
Per fornire l'accesso a internet in uscita per i nodi privati, ad esempio per eseguire il pull delle immagini da un registro esterno, utilizza Cloud NAT per creare e configurare un router Cloud. Cloud NAT consente ai nodi privati di stabilire connessioni in uscita su internet per inviare e ricevere pacchetti.
Il router Cloud consente a tutti i nodi nella regione di utilizzare Cloud NAT per tutti gli intervalli IP primari e alias. Inoltre, alloca automaticamente gli indirizzi IP esterni per il gateway NAT.
Per istruzioni su come creare e configurare un router Cloud, consulta Creare una configurazione Cloud NAT utilizzando il router Cloud nella documentazione di Cloud NAT.
Deployment di un'applicazione container Windows Server
Per scoprire come eseguire il deployment di un'applicazione container Windows Server in un cluster con nodi privati, consulta la documentazione sul pool di nodi Windows.