Crea un gateway Cloud NAT

Panoramica

In questo caso d'uso creeremo un gateway Cloud NAT con più IP di uscita assegnati. Questi gateway eseguiranno l'uscita del traffico dai pod e dalle VM che corrispondono alle etichette corrispondenti configurate nel gateway. Il gateway assegnerà automaticamente un IP di uscita a ogni endpoint che può inviare traffico tramite il gateway.

Esempio di configurazione del gateway con più IP in uscita

Prerequisiti

Prima di configurare un gateway, devi ottenere le autorizzazioni Identity and Access Management (IAM) appropriate, assicurarti che il tuo progetto disponga di un criterio di rete appropriato e abilitare l'uscita.

Per informazioni dettagliate, consulta Prima di iniziare a utilizzare Cloud NAT.

Il gateway Cloud NAT utilizza le subnet esterne leaf come input. Per ulteriori informazioni sulla configurazione delle subnet esterne per Cloud NAT, vedi Crea subnet esterne per Cloud NAT.

Assicurati una configurazione di pod o VM compatibile

Come indicato nella panoramica di NAT, Cloud NAT non è compatibile con la configurazione di uscita predefinita del progetto. Assicurati che nessun pod o VM che vuoi utilizzare con Cloud NAT abbia l'etichetta egress.networking.gke.io/enabled:true.

Per impostazione predefinita, una configurazione di accesso esterno alla macchina virtuale (VMEA) configura una VM per l'uscita del traffico utilizzando la configurazione di uscita predefinita del progetto. In altre parole, aggiunge automaticamente l'etichetta egress.networking.gke.io/enabled:"true" alla VM. Se la VM è configurata per il traffico in uscita utilizzando anche un gateway Cloud NAT, si verifica una collisione tra le configurazioni NAT. Per evitare questo conflitto: per ogni VMEA associato a una VM configurata per il traffico in uscita tramite un gateway Cloud NAT, assicurati che il VMEA associato a quella VM abbia l'annotazione egress.networking.gke.io/use-cloud-nat:"true". La VM associata invierà quindi il traffico in uscita esclusivamente tramite il gateway Cloud NAT.

Crea i gateway Cloud NAT

L'esempio seguente definisce un gateway Cloud NAT con due subnet foglia esterne (subnet-1 e subnet-2). Il gateway utilizzerà tutti gli IP in queste subnet, uno da subnet-1 e quattro da subnet-2, e li assegnerà automaticamente agli endpoint di ogni VM o pod con le etichette specificate. A più pod o VM può essere assegnato lo stesso IP di uscita.

apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
  namespace: project-1
  name: gateway-1
spec:
  workloadSelector:  # Immutable
    labelSelector:
      workloads:
        matchLabels:
          app: aa
  subnetRefs:        # Mutable
  - subnet-1
  - subnet-2

Controllare lo stato dei gateway

Controlla lo stato dei gateway eseguendo il seguente comando kubectl.

export MGMT_KUBECONFIG=<path_to_management_kubeconfig>
kubectl get cloudnatgateways gateway-1 -n project-1 --kubeconfig "${MGMT_KUBECONFIG:?}"

Se configurato correttamente, il campo della condizione di stato del gateway Cloud NAT deve mostrare la condizione di tipo Ready impostata su true e le subnet contrassegnate come OK, come mostrato nell'output di esempio seguente.

apiVersion: networking.gdc.goog/v1
kind: CloudNATGateway
metadata:
  namespace: project-1
  name: gateway-1
spec:
  workloadSelector:
    labelSelector:
      workloads:
        matchLabels:
          app: aa
  subnetRefs:
  - subnet-1
  - subnet-2
status:
  conditions:
  - lastTransitionTime: "2025-08-20T21:31:36Z"
    message: ""
    observedGeneration: 1
    reason: Ready
    status: "True"
    type: Ready
  - lastTransitionTime: "2025-08-20T21:31:36Z"
    message: ""
    observedGeneration: 1
    reason: Ready
    status: "True"
    type: SubnetsReady
  - lastTransitionTime: "2025-08-20T21:31:36Z"
    message: ""
    observedGeneration: 1
    reason: Ready
    status: "True"
    type: PerimeterConfigurationReady
  - lastTransitionTime: "2025-08-20T21:31:36Z"
    message: ""
    observedGeneration: 1
    reason: Ready
    status: "True"
    type: EgressRoutesReady
  subnets:
  - name: subnet-1
    status: OK
  - name: subnet-2
    status: OK

Lo stato del gateway Cloud NAT contiene quattro condizioni dei seguenti tipi:

  • Ready: questa condizione riassume lo stato del gateway Cloud NAT. Questa condizione è impostata su true se il gateway è completamente configurato.
  • SubnetsReady: questa condizione indica se le subnet assegnate al gateway sono valide.
  • PerimeterConfigurationReady: questa condizione indica se la configurazione del perimetro è già stata configurata (ad es.IP esterni assegnati a nodi esterni, ecc.).
  • EgressRoutesReady: questa condizione indica se le route per il traffico di uscita dagli endpoint di origine sono già state configurate.

Traffico di test

Possiamo testare il traffico eseguendo un comando curl da uno dei pod o delle VM assegnati al gateway verso un endpoint esterno. L'endpoint di ricezione dovrebbe visualizzare uno degli IP di uscita associati al gateway.