Questa pagina spiega come configurare i cluster creati in modalità Google Kubernetes Engine (GKE) Autopilot per eseguire il mascheramento IP con la policy NAT in uscita.
Per saperne di più sul mascheramento IP in modalità GKE Standard, consulta Configurare un agente di mascheramento IP.
Panoramica
La policy NAT in uscita di GKE consente di configurare il comportamento di mascheramento IP per i cluster Autopilot.
GKE supporta due policy NAT in uscita generate automaticamente:
- Gestite da GKE, che sono fisse e non modificabili.
- Policy predefinite che sono modificabili.
Questa pagina mostra come modificare ed eseguire il deployment di una policy NAT in uscita modificando la policy predefinita o creando una policy NAT in uscita. Questa pagina mostra anche come eliminare una policy NAT in uscita creata.
Per saperne di più sul comportamento della policy NAT in uscita, consulta il comportamento di mascheramento del traffico per i cluster Autopilot.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Per utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Assicurati di avere un cluster Autopilot che esegue la versione 1.23.4-gke.1600 o successive oppure la versione 1.22.7-gke.1500 o successive. Nel cluster deve essere abilitato GKE Dataplane V2.
Assicurati che nel cluster sia in esecuzione un carico di lavoro. Per saperne di più, consulta la pagina su come richiedere risorse.
Controllare lo stato della policy NAT in uscita
Puoi verificare se il cluster esegue la definizione di risorsa personalizzata (CRD) della policy NAT in uscita utilizzando lo strumento Google Cloud CLI:
Recupera le credenziali per il tuo cluster:
gcloud container clusters get-credentials CLUSTER-NAMESostituisci
CLUSTER_NAMEcon il nome del cluster.Verifica se la policy NAT in uscita è in esecuzione:
kubectl get crds egressnatpolicies.networking.gke.ioSe la policy NAT in uscita è in esecuzione, l'output è simile al seguente:
NAME CREATED AT egressnatpolicies.networking.gke.io 2022-03-16T21:05:43ZRecupera l'elenco delle policy NAT in uscita create:
kubectl get egressnatpoliciesL'output è simile al seguente:
NAME AGE default 44h gke-bbfa6c0e-1 44h
Modificare la policy predefinita esistente
GKE supporta due policy NAT generate automaticamente: la policy predefinita e la policy gestita da GKE. La policy predefinita è modificabile e configura le destinazioni predefinite non mascherate.
Per modificare la policy predefinita esistente, segui questi passaggi:
Recupera le credenziali per il tuo cluster:
gcloud container clusters get-credentials CLUSTER_NAMESostituisci
CLUSTER_NAMEcon il nome del cluster.Modifica la policy NAT in uscita predefinita:
kubectl edit egressnatpolicies defaultAggiungi o rimuovi le destinazioni con l'azione NoSNAT come attributo
cidrin formato CIDR:apiVersion: networking.gke.io/v1 kind: EgressNATPolicy metadata: name: default spec: action: NoSNAT destinations: - cidr: 10.0.0.0/8 - cidr: 172.16.0.0/12 - cidr: 192.168.0.0/16 - cidr: 240.0.0.0/4 - cidr: 192.0.2.0/24 - cidr: 198.51.100.0/24 - cidr: 203.0.113.0/24 - cidr: 100.64.0.0/10 - cidr: 198.18.0.0/15 - cidr: 192.0.0.0/24 - cidr: 192.88.99.0/24Quando i pacchetti vengono inviati a queste destinazioni, il cluster non maschera le origini degli indirizzi IP e conserva gli indirizzi IP dei pod di origine.
Verifica che la policy predefinita modificata sia stata eseguita controllando gli eventi di Kubernetes:
kubectl get eventsL'output è simile al seguente:
LAST SEEN TYPE REASON OBJECT MESSAGE 13s Normal EnsuringPolicy egressnatpolicy/default Ensuring IP masquerade config for policy "default"L'applicazione delle modifiche potrebbe richiedere fino a tre minuti.
Eseguire il deployment di una nuova policy NAT in uscita
Per aggiungere nuove destinazioni con l'azione NoSNAT, puoi utilizzare una delle seguenti opzioni:
- Puoi modificare la policy predefinita esistente.
- Puoi creare una nuova policy NAT in uscita.
Per creare una nuova policy NAT in uscita che non fa parte della policy predefinita, segui questi passaggi:
Salva il seguente manifest come
egress_nat_policy.yaml:kind: EgressNATPolicy apiVersion: networking.gke.io/v1 metadata: name: POLICY_NAME spec: action: NoSNAT destinations: - cidr: CIDR_1 - cidr: CIDR_2Sostituisci quanto segue:
POLICY_NAME: il nome della nuova policy.CIDR_1eCIDR_2: gli intervalli di indirizzi IP in formato CIDR. Quando i pacchetti vengono inviati a queste destinazioni, il cluster non maschera le origini degli indirizzi IP e conserva gli indirizzi IP dei pod di origine. Se hai bisogno di più di due CIDR, aggiungi altre voci all'elencodestinationsseguendo lo stesso formato.
Esegui il deployment della nuova policy:
kubectl create -f egress_nat_policy.yamlVerifica che la policy sia stata eseguita controllando gli eventi di Kubernetes:
kubectl get eventsL'output è simile al seguente:
LAST SEEN TYPE REASON OBJECT MESSAGE 13s Normal EnsuringPolicy egressnatpolicy/mypolicy Ensuring IP masquerade config for policy "mypolicy"
Eliminare una policy NAT in uscita
Per eliminare completamente una policy NAT in uscita, esegui il seguente comando:
kubectl delete egressnatpolicies POLICY_NAME
Sostituisci POLICY_NAME con il nome della policy che vuoi eliminare.
Passaggi successivi
- Scopri come creare un cluster nativo di VPC.
- Leggi la panoramica della rete GKE.
- Scopri di più sulla configurazione delle reti autorizzate.