Utilizzare la policy NAT in uscita per configurare la rappresentazione IP nei cluster Autopilot

Questa pagina spiega come configurare i cluster creati in modalità Google Kubernetes Engine (GKE) Autopilot per eseguire il mascheramento IP con il criterio NAT in uscita.

Per saperne di più sul mascheramento IP in modalità GKE Standard, vedi 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, sono fisse e non modificabili.
  • Policy predefinite modificabili.

Questa pagina mostra come modificare e implementare 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 Comportamento di mascheramento del traffico per i cluster Autopilot.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • 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 comando gcloud components update. 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 workload. Per saperne di più, consulta 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:

  1. Recupera le credenziali per il tuo cluster:

    gcloud container clusters get-credentials CLUSTER-NAME
    

    Sostituisci CLUSTER_NAME con il nome del cluster.

  2. Controlla se la policy NAT in uscita è in esecuzione:

    kubectl get crds egressnatpolicies.networking.gke.io
    

    Se la policy NAT in uscita è in esecuzione, l'output è simile al seguente:

     NAME                                  CREATED AT
     egressnatpolicies.networking.gke.io   2022-03-16T21:05:43Z
    
  3. Recupera l'elenco delle policy NAT in uscita create:

    kubectl get egressnatpolicies
    

    L'output è simile al seguente:

      NAME             AGE
      default          44h
      gke-bbfa6c0e-1   44h
    

Modificare la policy predefinita esistente

GKE supporta due policy NAT generate automaticamente: policy predefinita e policy gestita da GKE. Il criterio predefinito è modificabile e configura le destinazioni non mascherate predefinite.

Per modificare il criterio predefinito esistente:

  1. Recupera le credenziali per il tuo cluster:

    gcloud container clusters get-credentials CLUSTER_NAME
    

    Sostituisci CLUSTER_NAME con il nome del tuo cluster.

  2. Modifica la policy NAT in uscita predefinita:

    kubectl edit egressnatpolicies default
    
  3. Aggiungi o rimuovi destinazioni con l'azione NoSNAT come attributo cidr in 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/24
    

    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.

  4. Verifica che la policy predefinita modificata sia implementata controllando gli eventi Kubernetes:

    kubectl get events
    

    L'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.

Esegui il deployment di una nuova policy NAT in uscita

Per aggiungere nuove destinazioni con l'azione NoSNAT, puoi utilizzare una delle seguenti opzioni:

Per creare una nuova policy NAT in uscita che non fa parte della policy predefinita, segui questi passaggi:

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

    Sostituisci quanto segue:

    • POLICY_NAME: il nome della nuova policy.
    • CIDR_1 e CIDR_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'elenco destinations seguendo lo stesso formato.
  2. Esegui il deployment della nuova policy:

    kubectl create -f egress_nat_policy.yaml
    
  3. Verifica che il criterio sia stato implementato controllando gli eventi Kubernetes:

    kubectl get events
    

    L'output è simile al seguente:

    LAST SEEN   TYPE     REASON           OBJECT                              MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/mypolicy            Ensuring IP masquerade config for policy "mypolicy"
    

Elimina una policy NAT in uscita

Per eliminare completamente una policy NAT in uscita, esegui questo comando:

kubectl delete egressnatpolicies POLICY_NAME

Sostituisci POLICY_NAME con il nome della policy che vuoi eliminare.

Passaggi successivi