Creazione di un cluster privato


Questa pagina spiega come creare un cluster Google Kubernetes Engine (GKE) privato, che è un tipo di cluster nativo di VPC. In un cluster privato, i nodi hanno solo indirizzi IP interni, il che significa che i nodi e i pod sono isolati da internet per impostazione predefinita. Puoi scegliere di non avere accesso al client, di avere accesso limitato o di avere accesso illimitato al piano di controllo.

Restrizioni e limitazioni

I cluster privati devono essere cluster VPC nativi. I cluster VPC nativi non supportano le reti legacy.

Espandi le seguenti sezioni 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à, installa e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo gcloud components update.
  • Assicurati di disporre dell'autorizzazione corretta per creare cluster. Come minimo, devi avere il ruolo Amministratore cluster Kubernetes Engine.

  • Assicurati di avere una route per il gateway internet predefinito.

Creazione di un cluster privato senza accesso client all'endpoint pubblico

In questa sezione crei 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, inserisci my-subnet-0 in Nome.

  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, quindi nella sezione Standard o Autopilot fai clic su Configura.

  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 del 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 piano di controllo su 172.16.0.32/28.

  10. Fai clic su Crea.

gcloud

  • Per i cluster Autopilot, esegui il seguente 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 il seguente 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 consente a GKE di creare 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 obbligatorio 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 dell'API del piano di controllo.
  • --master-ipv4-cidr 172.16.0.32/28 specifica un intervallo di indirizzi IP interno per il piano di controllo (facoltativo per Autopilot). Questa impostazione è permanente per questo cluster e deve essere univoca all'interno della VPC. È supportato l'utilizzo di indirizzi IP interni non RFC 1918.

API

Per creare un cluster senza un piano di controllo raggiungibile pubblicamente, specifica il campo enablePrivateEndpoint: true nella risorsa privateClusterConfig.

A questo punto, 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 che tu abbia creato una VM nell'intervallo principale my-subnet-0. Quindi, su questa VM puoi configurare kubectl in modo che utilizzi 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 per avere accesso all'endpoint privato.

Supponiamo che tu abbia una VM nella rete predefinita, nella stessa regione del tuo 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 crei un cluster privato denominato private-cluster-1 in cui GKE genera automaticamente una subnet per i nodi del cluster. Nella subnet è abilitato l'accesso privato Google. 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 il seguente 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 il seguente 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 consente a GKE di creare 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 obbligatorio 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 piano di controllo (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 piano di controllo del cluster:

  • L'intervallo principale di my-subnet-1.
  • L'intervallo secondario utilizzato per i pod.

Supponiamo che tu abbia un gruppo di macchine al di fuori della tua rete VPC 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-1 \
    --enable-master-authorized-networks \
    --master-authorized-networks 203.0.113.0/29

Ora questi sono gli unici indirizzi IP che hanno accesso al piano di controllo:

  • 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 crei 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 del 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, inserisci my-subnet-2 in Nome.

  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 secondario. 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 utilizza la tua subnet:

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

    Vai a Google Kubernetes Engine

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

  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, mantieni selezionata la casella di controllo Accedi al piano di controllo utilizzando l'indirizzo IP esterno.

  7. (Facoltativo per Autopilot) Imposta Intervallo IP del piano di controllo su 172.16.0.16/28.

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

  9. Nell'elenco Subnet del 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 piano di controllo.

  14. Fai clic su Crea.

gcloud

Crea una rete

Per prima cosa, crea una rete per il cluster. Il seguente comando 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 il seguente 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 il seguente 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
    

A questo punto, 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

A questo punto, 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 usare Cloud Shell per accedere al tuo 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 tue 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 di 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 tuo 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 senza restrizioni all'endpoint pubblico

In questa sezione crei un cluster privato a cui qualsiasi indirizzo IP può accedere al piano di controllo.

Console

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

    Vai a Google Kubernetes Engine

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

  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 del piano di controllo su 172.16.0.32/28.

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

  9. Deseleziona la casella di controllo Abilita reti autorizzate piano di controllo.

  10. Fai clic su Crea.

gcloud

  • Per i cluster Autopilot, esegui il seguente 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 il seguente 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 consente a GKE di creare automaticamente una subnet denominata my-subnet-3.
  • --no-enable-master-authorized-networks disattiva le reti autorizzate per il cluster.
  • --enable-ip-alias rende il cluster nativo di VPC (non obbligatorio 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 interno per il piano di controllo (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.

Aggiungere 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 control plane del cluster a iniziare solo connessioni TCP ai nodi e ai pod sulle porte 443 (HTTPS) e 10250 (kubelet). Per alcune funzionalità di Kubernetes, potrebbe essere necessario aggiungere regole del firewall per consentire l'accesso su porte aggiuntive. Non creare regole firewall o regole dei criteri firewall gerarchici che hanno una priorità più alta rispetto alle regole firewall create automaticamente.

Le funzionalità Kubernetes che richiedono regole firewall aggiuntive includono:

L'aggiunta di una regola firewall consente il traffico dal piano di controllo 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 la sezione 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 il target utilizzato. Dopo aver registrato questa azione, puoi creare la regola.

Visualizza il blocco CIDR del piano di controllo

Per aggiungere una regola firewall, devi disporre del blocco CIDR del piano di controllo 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, in Networking, prendi nota del valore nel campo Intervallo di indirizzi del piano di controllo.

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.

Visualizza le regole firewall esistenti

Devi specificare il target (in questo caso, i nodi di destinazione) utilizzato dalle regole firewall esistenti del cluster.

Console

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

    Vai a Policy del firewall

  2. Per Tabella dei filtri per le 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 (Destinazioni).

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 Criteri firewall nella console Google Cloud.

    Vai a Policy del 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 piano di controllo 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 scelto per la regola firewall.
  • CONTROL_PLANE_RANGE: l'intervallo di indirizzi IP (masterIpv4CidrBlock) del piano di controllo del cluster che hai raccolto in precedenza.
  • PROTOCOL:PORT: la porta e il suo protocollo, tcp o udp.
  • TARGET: il valore target (Targets) raccolto in precedenza.

Per aggiungere una regola firewall per una 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 Nozioni di base sul cluster, controlla il campo Endpoint esterno. Il valore è Disattivato.

Per i cluster standard:

  1. Nella pagina Cluster, fai clic sulla scheda Nodi.
  2. In 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 in Gruppi di istanze. Ad esempio, gke-private-cluster-0-default-pool-5c5add1f-grp`.
  4. Nell'elenco delle istanze, verifica che le 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

Verificare 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 in peering della rete VPC utilizzando la 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.

Concedere l'accesso a internet in uscita ai nodi privati

Per fornire l'accesso a internet in uscita per i tuoi nodi privati, ad esempio per estrarre le immagini da un registry 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 della regione di utilizzare Cloud NAT per tutti gli intervalli IP principali e gli alias IP. Allo stesso modo, 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 condivisa, consulta Creare un cluster privato in un VPC condiviso.

Deployment di un'applicazione container Windows Server

Per scoprire come eseguire il deployment di un'applicazione contenitore Windows Server in un cluster con nodi privati, consulta la documentazione del pool di nodi Windows.

Accesso all'endpoint privato del piano di controllo a livello globale

L'endpoint privato del control plane è implementato da un bilanciatore del carico di rete passthrough interno nella rete VPC del control plane. I client interni o collegati 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 essere localizzati nella stessa regione del bilanciatore del carico.

Quando attivi l'accesso globale al piano di controllo, il bilanciatore del carico di rete passthrough interno è accessibile a livello mondiale: le VM client e i sistemi on-premise possono connettersi all'endpoint privato del piano di controllo, 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 collegate.

Attivazione 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 del piano di controllo, 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 del control plane abilitato, segui questi passaggi:

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

    Vai a Google Kubernetes Engine

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

  3. Inserisci un nome.

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

  5. Seleziona Cluster privato.

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

  7. Configura gli altri campi come preferisci.

  8. Fai clic su Crea.

Per abilitare l'accesso globale al control plane per un cluster privato esistente, svolgi 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 e poi su Modifica.

  3. Nella sezione Networking, accanto a Accesso globale al piano di controllo, 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 accesso globale all'endpoint privato del piano di controllo abilitato:

gcloud container clusters create CLUSTER_NAME \
    --enable-private-nodes \
    --enable-master-global-access

Puoi anche attivare l'accesso globale all'endpoint privato del piano di controllo per un cluster privato esistente:

gcloud container clusters update CLUSTER_NAME \
    --enable-master-global-access

Verifica dell'accesso globale all'endpoint privato del piano di controllo

Puoi verificare che l'accesso globale all'endpoint privato del piano di controllo sia attivo eseguendo il seguente comando e controllandone l'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 piano di controllo da altre reti

Quando crei un cluster privato GKE e disattivi l'endpoint pubblico del piano di controllo, devi amministrare il cluster con strumenti come kubectl utilizzando l'endpoint privato del piano di controllo. Puoi accedere all'endpoint privato del piano di controllo del cluster da un'altra rete, tra cui:

  • Una rete on-premise connessa alla rete VPC del cluster tramite tunnel Cloud VPN o collegamenti VLAN Cloud Interconnect
  • Un'altra rete VPC connessa alla rete VPC del cluster tramite i 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 piano di controllo di un cluster, soddisfa i seguenti requisiti:

  1. Identifica e registra le informazioni di rete pertinenti per il cluster e per l'endpoint privato del suo piano di controllo.

    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 che lo racchiude (masterIpv4CidrBlock).
    • peeringName: il nome della connessione di peering di rete VPC utilizzata per collegare la rete VPC del cluster alla rete VPC del control plane.

    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 piano di controllo per consentire l'ingresso dei pacchetti da qualsiasi regione nella rete VPC del cluster. L'attivazione dell'accesso globale all'endpoint privato del piano di controllo ti consente di connetterti all'endpoint privato utilizzando i tunnel Cloud VPN o i collegamenti VLAN Cloud Interconnect situati in qualsiasi regione, non solo nella regione del cluster.

  3. Crea una route per l'indirizzo IP privateEndpoint o per l'intervallo di indirizzi IP masterIpv4CidrBlock nell'altra rete. Poiché l'indirizzo IP dell'endpoint privato del piano di controllo rientra sempre nell'intervallo di indirizzi IPv4 masterIpv4CidrBlock, la creazione di una route per l'indirizzo IP privateEndpoint o per l'intervallo che lo racchiude fornisce un percorso per i pacchetti dall'altra rete all'endpoint privato del piano di controllo se:

    • L'altra rete si connette alla rete VPC del cluster utilizzando i collegamenti VLAN Cloud Interconnect o i tunnel Cloud VPN che utilizzano route dinamiche (BGP): utilizza una route pubblicizzata personalizzata del router Cloud. Per ulteriori informazioni, consulta Annunci di 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 dinamiche: devi configurare una route statica nell'altra rete.

  4. Configura la rete VPC del cluster in modo da esportare le route personalizzate nel rapporto di peering con la rete VPC del piano di controllo. Google Cloud configura sempre la rete VPC del piano di controllo per importare le route personalizzate dalla rete VPC del cluster. Questo passaggio fornisce un percorso per i pacchetti dall'endpoint privato del piano di controllo all'altra rete.

    Per abilitare l'esportazione delle route personalizzate dalla rete VPC del cluster, utilizza il seguente 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 collega la rete VPC del cluster alla rete VPC del piano di controllo
    • CLUSTER_VPC_NETWORK: il nome o l'URI della rete VPC del cluster

    Quando l'esportazione delle route personalizzate è abilitata per il VPC, la creazione di route che si sovrappongono agli intervalli di indirizzi IP di Google Cloud potrebbe causare il malfunzionamento del 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 piano di controllo, consulta Destinazioni supportate dall'altra rete.

Destinazioni supportate dall'altra emittente

Gli intervalli di indirizzi inviati dall'altra rete ai router Cloud nella rete VPC del cluster devono rispettare le seguenti condizioni:

  • Sebbene il VPC del cluster possa accettare una route predefinita (0.0.0.0/0), la rete VPC del piano di controllo rifiuta sempre le route predefinite perché ha già una route predefinita 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 piano di controllo. Per maggiori dettagli, consulta Ordine di routing.

  • Se la rete VPC del piano di controllo accetta route che sostituiscono effettivamente una route predefinita, queste route interrompono la connettività ai servizi e alle API di Google Cloud, interrompendo il piano di controllo del cluster. Come esempio rappresentativo, l'altra rete non deve pubblicizzare percorsi con destinazione 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 le route apprese.

Protezione di un cluster privato con i Controlli di servizio VPC

Per aumentare la sicurezza dei tuoi cluster privati GKE, puoi proteggerli utilizzando i Controlli di servizio VPC.

I Controlli di servizio VPC offrono una maggiore sicurezza per i tuoi cluster GKE privati per contribuire a ridurre il rischio di esfiltrazione di dati. Con Controlli di servizio VPC, puoi aggiungere progetti ai perimetri di servizio che proteggono le risorse e i 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 limitato per impedire l'esfiltrazione dei dati.

Pulizia

Dopo aver completato le attività in questa pagina, segui questi passaggi per rimuovere le risorse ed 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