Questa pagina spiega come creare un cluster Google Kubernetes Engine (GKE) privato, un tipo di cluster nativo di VPC. In un cluster privato, i nodi hanno solo indirizzi IP interni, il che significa che nodi e pod sono isolati da internet per impostazione predefinita. Puoi scegliere di non avere accesso client, accesso limitato o accesso illimitato al piano di controllo.
Limitazioni e restrizioni
I cluster privati devono essere cluster VPC nativi. 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
.
Assicurati di disporre dell'autorizzazione corretta per creare cluster. Come minimo, devi disporre del ruolo Amministratore cluster Kubernetes Engine.
Assicurati di avere una route al gateway internet predefinito.
Creazione di un cluster privato senza accesso client all'endpoint pubblico
In questa sezione creerai le seguenti risorse:
- Un cluster privato denominato
private-cluster-0
con nodi privati e senza accesso client all'endpoint pubblico. - Una rete denominata
my-net-0
. - Una subnet denominata
my-subnet-0
.
Console
Crea una rete e una subnet
Vai alla pagina Reti VPC nella console Google Cloud .
Fai clic su add_box Crea rete VPC.
In Nome, inserisci
my-net-0
.In Modalità di creazione subnet, seleziona Personalizzata.
Nella sezione Nuova subnet, in Nome, inserisci
my-subnet-0
.Nell'elenco Regione, seleziona la regione che ti interessa.
In Intervallo di indirizzi IP, inserisci
10.2.204.0/22
.Imposta Accesso privato Google su On.
Fai clic su Fine.
Fai clic su Crea.
Creare un cluster privato
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su
Crea, poi fai clic su Configura nella sezione Standard o Autopilot.In Nome, specifica
private-cluster-0
.Nel riquadro di navigazione, fai clic su Networking.
Nell'elenco Rete, seleziona my-net-0.
Nell'elenco Subnet nodo, seleziona my-subnet-0.
Seleziona il pulsante di opzione Cluster privato.
Deseleziona la casella di controllo Accedi al control plane utilizzando l'indirizzo IP esterno.
(Facoltativo per Autopilot): imposta Intervallo IP control plane su
172.16.0.32/28
.Fai clic su Crea.
gcloud
Per i cluster Autopilot, esegui questo comando:
gcloud container clusters create-auto private-cluster-0 \ --create-subnetwork name=my-subnet-0 \ --enable-master-authorized-networks \ --enable-private-nodes \ --enable-private-endpoint
Per i cluster Standard, esegui questo comando:
gcloud container clusters create private-cluster-0 \ --create-subnetwork name=my-subnet-0 \ --enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --enable-private-endpoint \ --master-ipv4-cidr 172.16.0.32/28
dove:
--create-subnetwork name=my-subnet-0
fa sì che GKE crei automaticamente una subnet denominatamy-subnet-0
.--enable-master-authorized-networks
specifica che l'accesso all'endpoint pubblico è limitato agli intervalli di indirizzi IP che autorizzi.--enable-ip-alias
rende il cluster nativo di VPC (non richiesto per Autopilot).--enable-private-nodes
indica che i nodi del cluster non hanno indirizzi IP esterni.--enable-private-endpoint
indica che il cluster è gestito utilizzando l'indirizzo IP interno dell'endpoint API del control plane.--master-ipv4-cidr 172.16.0.32/28
specifica un intervallo di indirizzi IP interni per il control plane (facoltativo per Autopilot). Questa impostazione è permanente per questo cluster e deve essere univoca all'interno del VPC. È supportato l'utilizzo di indirizzi IP interni non RFC 1918.
API
Per creare un cluster senza un control plane raggiungibile pubblicamente, specifica il
campo enablePrivateEndpoint: true
nella risorsa privateClusterConfig
.
Al momento, questi sono gli unici indirizzi IP che hanno accesso al piano di controllo:
- L'intervallo principale di
my-subnet-0
. - L'intervallo secondario utilizzato per i pod.
Ad esempio, supponiamo di aver creato una VM nell'intervallo principale di my-subnet-0
.
Quindi, su quella VM, puoi
configurare kubectl
per utilizzare l'indirizzo IP interno
del control plane.
Se vuoi accedere al control plane dall'esterno di my-subnet-0
, devi
autorizzare almeno un intervallo di indirizzi ad accedere all'endpoint privato.
Supponiamo di avere una VM nella rete predefinita, nella stessa regione del cluster, ma non in my-subnet-0
.
Ad esempio:
my-subnet-0
:10.0.0.0/22
- Intervallo secondario del pod:
10.52.0.0/14
- Indirizzo VM:
10.128.0.3
Puoi autorizzare la VM ad accedere al control plane utilizzando questo comando:
gcloud container clusters update private-cluster-0 \
--enable-master-authorized-networks \
--master-authorized-networks 10.128.0.3/32
Creazione di un cluster privato con accesso limitato all'endpoint pubblico
Quando crei un cluster privato utilizzando questa configurazione, puoi scegliere di utilizzare una subnet generata automaticamente o una subnet personalizzata.
Utilizzo di una subnet generata automaticamente
In questa sezione, creerai un cluster privato denominato private-cluster-1
in cui
GKE genera automaticamente una subnet per i nodi del cluster.
L'accesso privato Google è abilitato per la subnet. Nella subnet,
GKE crea automaticamente due intervalli secondari: uno per i pod
e uno per i servizi.
Puoi utilizzare Google Cloud CLI o l'API GKE.
gcloud
Per i cluster Autopilot, esegui questo comando:
gcloud container clusters create-auto private-cluster-1 \ --create-subnetwork name=my-subnet-1 \ --enable-master-authorized-networks \ --enable-private-nodes
Per i cluster Standard, esegui questo comando:
gcloud container clusters create private-cluster-1 \ --create-subnetwork name=my-subnet-1 \ --enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.0/28
dove:
--create-subnetwork name=my-subnet-1
fa sì che GKE crei automaticamente una subnet denominatamy-subnet-1
.--enable-master-authorized-networks
specifica che l'accesso all'endpoint pubblico è limitato agli intervalli di indirizzi IP che autorizzi.--enable-ip-alias
rende il cluster nativo di VPC (non richiesto per Autopilot).--enable-private-nodes
indica che i nodi del cluster non hanno indirizzi IP esterni.--master-ipv4-cidr 172.16.0.0/28
specifica un intervallo di indirizzi IP interni per il control plane (facoltativo per Autopilot). Questa impostazione è permanente per questo cluster e deve essere univoca all'interno del VPC. È supportato l'utilizzo di indirizzi IP interni non RFC 1918.
API
Specifica il campo privateClusterConfig
nella risorsa API Cluster
:
{
"name": "private-cluster-1",
...
"ipAllocationPolicy": {
"createSubnetwork": true,
},
...
"privateClusterConfig" {
"enablePrivateNodes": boolean # Creates nodes with internal IP addresses only
"enablePrivateEndpoint": boolean # false creates a cluster control plane with a publicly-reachable endpoint
"masterIpv4CidrBlock": string # CIDR block for the cluster control plane
"privateEndpoint": string # Output only
"publicEndpoint": string # Output only
}
}
A questo punto, questi sono gli unici indirizzi IP che hanno accesso al control plane del cluster:
- L'intervallo principale di
my-subnet-1
. - L'intervallo secondario utilizzato per i pod.
Supponiamo di avere un gruppo di macchine, al di fuori della tua rete VPC, che hanno indirizzi nell'intervallo 203.0.113.0/29
. Puoi autorizzare queste macchine ad accedere all'endpoint pubblico inserendo questo comando:
gcloud container clusters update private-cluster-1 \
--enable-master-authorized-networks \
--master-authorized-networks 203.0.113.0/29
Ora questi sono gli unici indirizzi IP che hanno accesso al control plane:
- L'intervallo principale di
my-subnet-1
. - L'intervallo secondario utilizzato per i pod.
- Intervalli di indirizzi che hai autorizzato, ad esempio
203.0.113.0/29
.
Utilizzo di una subnet personalizzata
In questa sezione creerai le seguenti risorse:
- Un cluster privato denominato
private-cluster-2
. - Una rete denominata
my-net-2
. - Una subnet denominata
my-subnet-2
, con intervallo primario192.168.0.0/20
, per i nodi del cluster. La tua subnet ha i seguenti intervalli di indirizzi secondari:my-pods
per gli indirizzi IP dei pod.my-services
per gli indirizzi IP del servizio.
Console
Crea una rete, una subnet e intervalli secondari
Vai alla pagina Reti VPC nella console Google Cloud .
Fai clic su add_box Crea rete VPC.
In Nome, inserisci
my-net-2
.In Modalità di creazione subnet , seleziona Personalizzata.
Nella sezione Nuova subnet, in Nome, inserisci
my-subnet-2
.Nell'elenco Regione, seleziona la regione che ti interessa.
In Intervallo di indirizzi IP, inserisci
192.168.0.0/20
.Fai clic su Crea intervallo IP secondari. In Nome intervallo subnet, inserisci
my-services
e in Intervallo IP secondario, inserisci10.0.32.0/20
.Fai clic su Aggiungi intervallo IP. In Nome intervallo subnet, inserisci
my-pods
e in Intervallo IP secondario, inserisci10.4.0.0/14
.Imposta Accesso privato Google su On.
Fai clic su Fine.
Fai clic su Crea.
Creare un cluster privato
Crea un cluster privato che utilizzi la tua subnet:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su
Crea, poi fai clic su Configura nella sezione Standard o Autopilot.In Nome, inserisci
private-cluster-2
.Nel riquadro di navigazione, fai clic su Networking.
Seleziona il pulsante di opzione Cluster privato.
Per creare un control plane accessibile da intervalli IP esterni autorizzati, lascia selezionata la casella di controllo Accedi al control plane utilizzando l'indirizzo IP esterno.
(Facoltativo per Autopilot) Imposta Intervallo IP control plane su
172.16.0.16/28
.Nell'elenco Rete, seleziona my-net-2.
Nell'elenco Subnet nodo, seleziona my-subnet-2.
Deseleziona la casella di controllo Crea automaticamente intervalli secondari.
Nell'elenco Intervallo CIDR secondario dei pod, seleziona my-pods.
Nell'elenco Intervallo CIDR secondario dei servizi, seleziona my-services.
Seleziona la casella di controllo Abilita reti autorizzate del control plane.
Fai clic su Crea.
gcloud
Crea una rete
Per prima cosa, crea una rete per il cluster. Il comando seguente crea una
rete, my-net-2
:
gcloud compute networks create my-net-2 \
--subnet-mode custom
Crea una subnet e intervalli secondari
Successivamente, crea una subnet, my-subnet-2
, nella rete my-net-2
, con
intervalli secondari my-pods
per i pod e my-services
per i servizi:
gcloud compute networks subnets create my-subnet-2 \
--network my-net-2 \
--range 192.168.0.0/20 \
--secondary-range my-pods=10.4.0.0/14,my-services=10.0.32.0/20 \
--enable-private-ip-google-access
Creare un cluster privato
Ora crea un cluster privato, private-cluster-2
, utilizzando la rete,
la subnet e gli intervalli secondari che hai creato.
Per i cluster Autopilot, esegui questo comando:
gcloud container clusters create-auto private-cluster-2 \ --enable-master-authorized-networks \ --network my-net-2 \ --subnetwork my-subnet-2 \ --cluster-secondary-range-name my-pods \ --services-secondary-range-name my-services \ --enable-private-nodes
Per i cluster Standard, esegui questo comando:
gcloud container clusters create private-cluster-2 \ --enable-master-authorized-networks \ --network my-net-2 \ --subnetwork my-subnet-2 \ --cluster-secondary-range-name my-pods \ --services-secondary-range-name my-services \ --enable-private-nodes \ --enable-ip-alias \ --master-ipv4-cidr 172.16.0.16/28 \ --no-enable-basic-auth \ --no-issue-client-certificate
Al momento, questi sono gli unici indirizzi IP che hanno accesso al piano di controllo:
- L'intervallo principale di
my-subnet-2
. - L'intervallo secondario
my-pods
.
Supponiamo di avere un gruppo di macchine, al di fuori di my-net-2
, con indirizzi
nell'intervallo 203.0.113.0/29
. Puoi autorizzare queste macchine ad accedere all'endpoint pubblico inserendo questo comando:
gcloud container clusters update private-cluster-2 \
--enable-master-authorized-networks \
--master-authorized-networks 203.0.113.0/29
Al momento, questi sono gli unici indirizzi IP che hanno accesso al piano di controllo:
- L'intervallo principale di
my-subnet-2
. - L'intervallo secondario
my-pods
. - Intervalli di indirizzi che hai autorizzato, ad esempio
203.0.113.0/29
.
Utilizzo di Cloud Shell per accedere a un cluster privato
Se hai attivato un endpoint privato, non puoi accedere al piano di controllo GKE con Cloud Shell.
Se vuoi utilizzare Cloud Shell per accedere al cluster, devi aggiungere l'indirizzo IP esterno di Cloud Shell all'elenco delle reti autorizzate del cluster.
Per farlo:
Nella finestra della riga di comando di Cloud Shell, utilizza
dig
per trovare l'indirizzo IP esterno di Cloud Shell:dig +short myip.opendns.com @resolver1.opendns.com
Aggiungi l'indirizzo esterno di Cloud Shell all'elenco delle reti autorizzate del tuo cluster:
gcloud container clusters update CLUSTER_NAME \ --enable-master-authorized-networks \ --master-authorized-networks EXISTING_AUTH_NETS,SHELL_IP/32
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del tuo cluster.EXISTING_AUTH_NETS
: gli indirizzi IP del tuo elenco esistente di reti autorizzate. Puoi trovare le reti autorizzate nella console o eseguendo il seguente comando:gcloud container clusters describe CLUSTER_NAME --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])"
SHELL_IP
: l'indirizzo IP esterno della tua Cloud Shell.
Recupera le credenziali per poter utilizzare
kubectl
per accedere al 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
Creazione di un cluster privato con accesso illimitato all'endpoint pubblico
In questa sezione, crei un cluster privato in cui qualsiasi indirizzo IP può accedere al control plane.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Fai clic su
Crea, poi fai clic su Configura nella sezione Standard o Autopilot.In Nome, inserisci
private-cluster-3
.Nel riquadro di navigazione, fai clic su Networking.
Seleziona l'opzione Cluster privato.
Mantieni selezionata la casella di controllo Accedi al control plane utilizzando l'indirizzo IP esterno.
(Facoltativo per Autopilot) Imposta Intervallo IP control plane su
172.16.0.32/28
.Lascia Rete e Subnet del nodo impostati su
default
. In questo modo GKE genera una subnet per il cluster.Deseleziona la casella di controllo Abilita reti autorizzate control plane.
Fai clic su Crea.
gcloud
Per i cluster Autopilot, esegui questo comando:
gcloud container clusters create-auto private-cluster-3 \ --create-subnetwork name=my-subnet-3 \ --no-enable-master-authorized-networks \ --enable-private-nodes
Per i cluster Standard, esegui questo comando:
gcloud container clusters create private-cluster-3 \ --create-subnetwork name=my-subnet-3 \ --no-enable-master-authorized-networks \ --enable-ip-alias \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.32/28
dove:
--create-subnetwork name=my-subnet-3
fa sì che GKE crei automaticamente una subnet denominatamy-subnet-3
.--no-enable-master-authorized-networks
disabilita le reti autorizzate per il cluster.--enable-ip-alias
rende il cluster nativo di VPC (non richiesto per Autopilot).--enable-private-nodes
indica che i nodi del cluster non hanno indirizzi IP esterni.--master-ipv4-cidr 172.16.0.32/28
specifica un intervallo di indirizzi IP interni per il control plane (facoltativo per Autopilot). Questa impostazione è permanente per questo cluster e deve essere univoca all'interno del VPC. È supportato l'utilizzo di indirizzi IP interni non RFC 1918.
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
Verifica che i nodi non abbiano indirizzi IP esterni
Dopo aver creato un cluster privato, verifica che i nodi del cluster non abbiano indirizzi IP esterni.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Nell'elenco dei cluster, fai clic sul nome del cluster.
Per i cluster Autopilot, nella sezione Impostazioni di base del cluster, controlla il campo Endpoint esterno. Il valore è Disattivato.
Per i cluster standard:
- Nella pagina Cluster, fai clic sulla scheda Nodi.
- Nella sezione Pool di nodi, fai clic sul nome del pool di nodi.
- Nella pagina Dettagli del pool di nodi, fai clic sul nome del gruppo di istanze nella sezione Gruppi di istanze. Ad esempio, gke-private-cluster-0-default-pool-5c5add1f-grp`.
- Nell'elenco delle istanze, verifica che le tue istanze non abbiano indirizzi IP esterni.
gcloud
Esegui questo comando:
kubectl get nodes --output wide
La colonna EXTERNAL-IP
dell'output è vuota:
STATUS ... VERSION EXTERNAL-IP OS-IMAGE ...
Ready v.8.7-gke.1 Container-Optimized OS
Ready v1.8.7-gke.1 Container-Optimized OS
Ready v1.8.7-gke.1 Container-Optimized OS
Verifica il riutilizzo del peering VPC nel cluster
Tutti i cluster privati creati dopo il 15 gennaio 2020 riutilizzano le connessioni di peering di rete VPC.
Puoi verificare se il tuo cluster privato riutilizza le connessioni di peering di rete VPC utilizzando gcloud CLI o la console Google Cloud .
Console
Controlla la riga Peering VPC nella pagina Dettagli cluster. Se il cluster riutilizza le connessioni di peering VPC, l'output inizia con gke-n
.
Ad esempio: gke-n34a117b968dee3b2221-93c6-40af-peer
.
gcloud
gcloud container clusters describe CLUSTER_NAME \
--format="value(privateClusterConfig.peeringName)"
Se il cluster riutilizza le connessioni di peering VPC, l'output
inizia con gke-n
. Ad esempio, gke-n34a117b968dee3b2221-93c6-40af-peer
.
Configurazioni avanzate del cluster
Questa sezione descrive alcune configurazioni avanzate che potresti voler utilizzare quando crei un cluster privato.
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.
Creazione di un cluster privato in una rete VPC condiviso
Per scoprire come creare un cluster privato in una rete VPC condiviso, consulta Creazione di un cluster privato in un VPC condiviso.
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.
Accesso globale all'endpoint privato del control plane
L'endpoint privato del control plane viene implementato da un bilanciatore del carico di rete passthrough interno nella rete VPC del control plane. I client interni o connessi tramite tunnel Cloud VPN e collegamenti VLAN Cloud Interconnect possono accedere ai bilanciatori del carico di rete passthrough interni.
Per impostazione predefinita, questi client devono trovarsi nella stessa regione del bilanciatore del carico.
Quando abiliti l'accesso globale al control plane, il bilanciatore del carico di rete passthrough interno è accessibile a livello globale: le VM client e i sistemi on-premise possono connettersi all'endpoint privato del control plane, in base alla configurazione delle reti autorizzate, da qualsiasi regione.
Per ulteriori informazioni sui bilanciatori del carico di rete passthrough interni e sull'accesso globale, consulta Bilanciatori del carico interni e reti connesse.
Abilitazione dell'accesso globale all'endpoint privato del control plane
Per impostazione predefinita, l'accesso globale non è abilitato per l'endpoint privato del piano di controllo quando crei un cluster privato. Per abilitare l'accesso globale al control plane, utilizza i seguenti strumenti in base alla modalità del cluster:
- Per i cluster Standard, puoi utilizzare
Google Cloud CLI
o la console Google Cloud . - Per i cluster Autopilot, puoi utilizzare la risorsa Terraform
google_container_cluster
.
Console
Per creare un nuovo cluster privato con l'accesso globale al control plane abilitato, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Crea un cluster Autopilot.
Vai a Crea un cluster Autopilot
Puoi completare questa attività anche creando un cluster Standard.
Inserisci un nome.
Nel riquadro di navigazione, fai clic su Networking.
Seleziona Cluster privato.
Seleziona la casella di controllo Abilita accesso globale control plane.
Configura gli altri campi come preferisci.
Fai clic su Crea.
Per abilitare l'accesso globale al control plane per un cluster privato esistente, esegui i seguenti passaggi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Accanto al cluster che vuoi modificare, fai clic su more_vert Azioni, quindi su edit Modifica.
Nella sezione Networking, accanto ad Accesso globale al control plane, fai clic su edit Modifica.
Nella finestra di dialogo Modifica accesso globale control plane, seleziona la casella di controllo Abilita accesso globale control plane.
Fai clic su Salva modifiche.
gcloud
Aggiungi il flag --enable-master-global-access
per creare un cluster privato con
l'accesso globale all'endpoint privato del control plane abilitato:
gcloud container clusters create CLUSTER_NAME \
--enable-private-nodes \
--enable-master-global-access
Puoi anche abilitare l'accesso globale all'endpoint privato del control plane per un cluster privato esistente:
gcloud container clusters update CLUSTER_NAME \
--enable-master-global-access
Verifica dell'accesso globale all'endpoint privato del control plane
Puoi verificare che l'accesso globale all'endpoint privato del control plane sia abilitato eseguendo il seguente comando e osservando il relativo output.
gcloud container clusters describe CLUSTER_NAME
L'output include una sezione privateClusterConfig
in cui puoi vedere lo
stato di masterGlobalAccessConfig
.
privateClusterConfig:
enablePrivateNodes: true
masterIpv4CidrBlock: 172.16.1.0/28
peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer
privateEndpoint: 172.16.1.2
publicEndpoint: 34.68.128.12
masterGlobalAccessConfig:
enabled: true
Accesso all'endpoint privato del control plane da altre reti
Quando crei un
cluster privato GKE
e disattivi l'endpoint pubblico del control plane, devi amministrare il cluster
con strumenti come kubectl
utilizzando l'endpoint privato del control plane. Puoi
accedere all'endpoint privato del control plane del cluster da un'altra rete, tra cui:
- Una rete on-premise connessa alla rete VPC del cluster utilizzando tunnel Cloud VPN o collegamenti VLAN di Cloud Interconnect
- Un'altra rete VPC connessa alla rete VPC del cluster tramite tunnel Cloud VPN
Il seguente diagramma mostra un percorso di routing tra una rete on-premise e i nodi del control plane GKE:
Per consentire ai sistemi di un'altra rete di connettersi all'endpoint privato del control plane di un cluster, completa i seguenti requisiti:
Identifica e registra le informazioni di rete pertinenti per il cluster e l'endpoint privato del control plane.
gcloud container clusters describe CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --format="yaml(network, privateClusterConfig)"
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.COMPUTE_LOCATION
: la posizione di Compute Engine del cluster
Dall'output del comando, identifica e registra le seguenti informazioni da utilizzare nei passaggi successivi:
network
: il nome o l'URI della rete VPC del cluster.privateEndpoint
: l'indirizzo IPv4 dell'endpoint privato del control plane o l'intervallo CIDR IPv4 racchiuso (masterIpv4CidrBlock
).peeringName
: il nome della connessione di peering di rete VPC utilizzata per connettere la rete VPC del cluster alla rete VPC del piano di controllo.
L'output è simile al seguente:
network: cluster-network privateClusterConfig: enablePrivateNodes: true masterGlobalAccessConfig: enabled: true masterIpv4CidrBlock: 172.16.1.0/28 peeringName: gke-1921aee31283146cdde5-9bae-9cf1-peer privateEndpoint: 172.16.1.2 publicEndpoint: 34.68.128.12
Valuta la possibilità di abilitare l'accesso globale all'endpoint privato del control plane per consentire ai pacchetti di entrare da qualsiasi regione nella rete VPC del cluster. L'abilitazione dell'accesso globale all'endpoint privato del control plane consente di connettersi all'endpoint privato utilizzando tunnel Cloud VPN o collegamenti VLAN Cloud Interconnect che si trovano in qualsiasi regione, non solo in quella del cluster.
Crea una route per l'indirizzo IP
privateEndpoint
o l'intervallo di indirizzi IPmasterIpv4CidrBlock
nell'altra rete. Poiché l'indirizzo IP dell'endpoint privato del control plane rientra sempre nell'intervallo di indirizzi IPv4masterIpv4CidrBlock
, la creazione di una route per l'indirizzo IPprivateEndpoint
o per il relativo intervallo contenitore fornisce un percorso per i pacchetti dall'altra rete all'endpoint privato del control plane se:L'altra rete si connette alla rete VPC del cluster utilizzando i collegamenti VLAN di Cloud Interconnect o i tunnel Cloud VPN che utilizzano route dinamiche (BGP): utilizza una route personalizzata annunciata da router Cloud. Per saperne di più, consulta la sezione Annunciare intervalli di indirizzi personalizzati nella documentazione del router Cloud.
L'altra rete si connette alla rete VPC del cluster utilizzando tunnel VPN classica che non utilizzano route dinamici: devi configurare una route statica nell'altra rete.
Configura la rete VPC del cluster per esportare le route personalizzate nella relazione di peering con la rete VPC del control plane. Google Cloud Configura sempre la rete VPC del control plane per importare route personalizzate dalla rete VPC del cluster. Questo passaggio fornisce un percorso per i pacchetti dall'endpoint privato del control plane all'altra rete.
Per abilitare l'esportazione di route personalizzate dalla rete VPC del cluster, utilizza questo comando:
gcloud compute networks peerings update PEERING_NAME \ --network=CLUSTER_VPC_NETWORK \ --export-custom-routes
Sostituisci quanto segue:
PEERING_NAME
: il nome del peering che connette la rete VPC del cluster alla rete VPC del control planeCLUSTER_VPC_NETWORK
: il nome o l'URI della rete VPC del cluster
Quando l'esportazione di route personalizzate è abilitata per il VPC, la creazione di route che si sovrappongono a intervalli di Google Cloud IP potrebbe danneggiare il cluster.
Per ulteriori dettagli su come aggiornare lo scambio di route per le connessioni di peering di rete VPC esistenti, consulta Aggiornare la connessione di peering.
Le route personalizzate nella rete VPC del cluster includono route le cui destinazioni sono intervalli di indirizzi IP in altre reti, ad esempio una rete on-premise. Per assicurarti che queste route diventino effettive come route personalizzate di peering nella rete VPC del control plane, consulta Destinazioni supportate dall'altra rete.
Destinazioni supportate dell'altra rete
Gli intervalli di indirizzi che l'altra rete invia ai router Cloud nella rete VPC del cluster devono rispettare le seguenti condizioni:
Anche se il VPC del cluster potrebbe accettare una route predefinita (
0.0.0.0/0
), la rete VPC del control plane rifiuta sempre le route predefinite perché ne ha già una locale. Se l'altra rete invia una route predefinita alla tua rete VPC, deve inviare anche le destinazioni specifiche dei sistemi che devono connettersi all'endpoint privato del control plane. Per maggiori dettagli, vedi Ordine di routing.Se la rete VPC del control plane accetta route che sostituiscono effettivamente una route predefinita, queste route interrompono la connettività alle API e ai serviziGoogle Cloud , interrompendo il control plane del cluster. Come esempio rappresentativo, l'altra rete non deve pubblicizzare itinerari con destinazioni
0.0.0.0/1
e128.0.0.0/1
. Fai riferimento al punto precedente per un'alternativa.
Monitora i limiti del router Cloud, in particolare il numero massimo di destinazioni univoche per route apprese.
Protezione di un cluster privato con i Controlli di servizio VPC
Per proteggere ulteriormente i tuoi cluster privati GKE, puoi utilizzare i Controlli di servizio VPC.
I Controlli di servizio VPC forniscono ulteriore sicurezza per i tuoi cluster privati GKE per contribuire a mitigare il rischio di esfiltrazione di dati. Utilizzando Controlli di servizio VPC, puoi aggiungere progetti ai perimetri di servizio che proteggono risorse e servizi dalle richieste provenienti dall'esterno del perimetro.
Per scoprire di più sui perimetri di servizio, consulta Dettagli e configurazione dei perimetri di servizio.
Se utilizzi Artifact Registry con il tuo cluster privato GKE in un perimetro di servizio Controlli di servizio VPC, devi configurare il routing all'IP virtuale con limitazioni per impedire l'esfiltrazione di dati.
Pulizia
Dopo aver completato le attività in questa pagina, segui questi passaggi per rimuovere le risorse per evitare addebiti indesiderati sul tuo account:
Elimina i cluster
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud .
Seleziona ogni cluster.
Fai clic su delete Elimina.
gcloud
gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3
Elimina la rete
Console
Vai alla pagina Reti VPC nella console Google Cloud .
Nell'elenco delle reti, fai clic su
my-net-0
.Nella pagina Dettagli rete VPC, fai clic su delete Elimina rete VPC.
Nella finestra di dialogo Elimina una rete, fai clic su Elimina.
gcloud
gcloud compute networks delete my-net-0
Passaggi successivi
- Scopri le configurazioni avanzate con i cluster privati.
- Scopri come creare cluster nativi di VPC.
- Scopri di più sul peering di rete VPC.
- Segui il tutorial sull'accesso ai cluster GKE privati con i pool privati di Cloud Build.