Creazione di un cluster privato


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

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

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC.

  3. In Nome, inserisci my-net-0.

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

  5. Nella sezione Nuova subnet, in Nome, inserisci my-subnet-0.

  6. Nell'elenco Regione, seleziona la regione che ti interessa.

  7. In Intervallo di indirizzi IP, inserisci 10.2.204.0/22.

  8. Imposta Accesso privato Google su On.

  9. Fai clic su Fine.

  10. Fai clic su Crea.

Creare un cluster privato

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

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea, poi fai clic su Configura nella sezione Standard o Autopilot.

  3. In Nome, specifica private-cluster-0.

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

  5. Nell'elenco Rete, seleziona my-net-0.

  6. Nell'elenco Subnet nodo, seleziona my-subnet-0.

  7. Seleziona il pulsante di opzione Cluster privato.

  8. Deseleziona la casella di controllo Accedi al control plane utilizzando l'indirizzo IP esterno.

  9. (Facoltativo per Autopilot): imposta Intervallo IP control plane su 172.16.0.32/28.

  10. 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 denominata my-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 denominata my-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 primario 192.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

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

    Vai a Reti VPC

  2. Fai clic su Crea rete VPC.

  3. In Nome, inserisci my-net-2.

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

  5. Nella sezione Nuova subnet, in Nome, inserisci my-subnet-2.

  6. Nell'elenco Regione, seleziona la regione che ti interessa.

  7. In Intervallo di indirizzi IP, inserisci 192.168.0.0/20.

  8. Fai clic su Crea intervallo IP secondari. In Nome intervallo subnet, inserisci my-services e in Intervallo IP secondario, inserisci 10.0.32.0/20.

  9. Fai clic su Aggiungi intervallo IP. In Nome intervallo subnet, inserisci my-pods e in Intervallo IP secondario, inserisci 10.4.0.0/14.

  10. Imposta Accesso privato Google su On.

  11. Fai clic su Fine.

  12. Fai clic su Crea.

Creare un cluster privato

Crea un cluster privato che utilizzi la tua subnet:

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

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea, poi fai clic su Configura nella sezione Standard o Autopilot.

  3. In Nome, inserisci private-cluster-2.

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

  5. Seleziona il pulsante di opzione Cluster privato.

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

  7. (Facoltativo per Autopilot) Imposta Intervallo IP control plane su 172.16.0.16/28.

  8. Nell'elenco Rete, seleziona my-net-2.

  9. Nell'elenco Subnet nodo, seleziona my-subnet-2.

  10. Deseleziona la casella di controllo Crea automaticamente intervalli secondari.

  11. Nell'elenco Intervallo CIDR secondario dei pod, seleziona my-pods.

  12. Nell'elenco Intervallo CIDR secondario dei servizi, seleziona my-services.

  13. Seleziona la casella di controllo Abilita reti autorizzate del control plane.

  14. 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:

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

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

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

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

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea, poi fai clic su Configura nella sezione Standard o Autopilot.

  3. In Nome, inserisci private-cluster-3.

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

  5. Seleziona l'opzione Cluster privato.

  6. Mantieni selezionata la casella di controllo Accedi al control plane utilizzando l'indirizzo IP esterno.

  7. (Facoltativo per Autopilot) Imposta Intervallo IP control plane su 172.16.0.32/28.

  8. Lascia Rete e Subnet del nodo impostati su default. In questo modo GKE genera una subnet per il cluster.

  9. Deseleziona la casella di controllo Abilita reti autorizzate control plane.

  10. 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 denominata my-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:

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

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

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del 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

  1. Vai alla pagina Policy firewall nella console Google Cloud .

    Vai a Criteri firewall

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

  1. Vai alla pagina Policy firewall nella console Google Cloud .

    Vai a Criteri firewall

  2. Fai clic su Crea regola firewall.

  3. In Nome, inserisci il nome della regola firewall.

  4. Nell'elenco Rete, seleziona la rete pertinente.

  5. In Direzione del traffico, fai clic su In entrata.

  6. In Azione in caso di corrispondenza, fai clic su Consenti.

  7. Nell'elenco Destinazioni, seleziona Tag di destinazione specificati.

  8. In Tag di destinazione, inserisci il valore target che hai annotato in precedenza.

  9. Nell'elenco Filtro di origine, seleziona Intervalli IPv4.

  10. In Intervalli IPv4 di origine, inserisci il blocco CIDR del control plane del cluster.

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

  12. 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 o udp.
  • 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

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

    Vai a Google Kubernetes Engine

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

  3. Per i cluster Autopilot, nella sezione Impostazioni di base del cluster, controlla il campo Endpoint esterno. Il valore è Disattivato.

Per i cluster standard:

  1. Nella pagina Cluster, fai clic sulla scheda Nodi.
  2. Nella sezione Pool di nodi, fai clic sul nome del pool di nodi.
  3. 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`.
  4. 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:

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

  2. Inserisci un nome.

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

  4. Seleziona Cluster privato.

  5. Seleziona la casella di controllo Abilita accesso globale control plane.

  6. Configura gli altri campi come preferisci.

  7. Fai clic su Crea.

Per abilitare l'accesso globale al control plane per un cluster privato esistente, esegui i seguenti passaggi:

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

    Vai a Google Kubernetes Engine

  2. Accanto al cluster che vuoi modificare, fai clic su Azioni, quindi su Modifica.

  3. Nella sezione Networking, accanto ad Accesso globale al control plane, fai clic su Modifica.

  4. Nella finestra di dialogo Modifica accesso globale control plane, seleziona la casella di controllo Abilita accesso globale control plane.

  5. 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:

Diagramma che mostra il routing tra il VPC on-premise e il piano di controllo del cluster

Per consentire ai sistemi di un'altra rete di connettersi all'endpoint privato del control plane di un cluster, completa i seguenti requisiti:

  1. 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:

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

  3. Crea una route per l'indirizzo IP privateEndpoint o l'intervallo di indirizzi IP masterIpv4CidrBlock nell'altra rete. Poiché l'indirizzo IP dell'endpoint privato del control plane rientra sempre nell'intervallo di indirizzi IPv4 masterIpv4CidrBlock, la creazione di una route per l'indirizzo IP privateEndpoint 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.

  4. 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 plane
    • CLUSTER_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 e 128.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

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

    Vai a Google Kubernetes Engine

  2. Seleziona ogni cluster.

  3. Fai clic su Elimina.

gcloud

gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3

Elimina la rete

Console

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

    Vai a Reti VPC

  2. Nell'elenco delle reti, fai clic su my-net-0.

  3. Nella pagina Dettagli rete VPC, fai clic su Elimina rete VPC.

  4. Nella finestra di dialogo Elimina una rete, fai clic su Elimina.

gcloud

gcloud compute networks delete my-net-0

Passaggi successivi