Buat gateway Cloud NAT

Ringkasan

Dalam kasus penggunaan ini, kita akan membuat gateway Cloud NAT dengan beberapa IP keluar yang ditetapkan. Gateway ini akan mengirim traffic keluar dari pod dan VM yang cocok dengan label yang cocok yang dikonfigurasi di gateway. Gateway akan otomatis menetapkan IP keluar ke setiap endpoint yang dapat mengirim traffic keluar melalui gateway tersebut.

Contoh penyiapan gateway dengan beberapa IP keluar

Prasyarat

Sebelum menyiapkan gateway, Anda harus mendapatkan izin Identity and Access Management (IAM) yang sesuai, memastikan project Anda memiliki kebijakan jaringan yang sesuai, dan mengaktifkan traffic keluar.

Lihat Sebelum memulai Cloud NAT untuk mengetahui detailnya.

Gateway Cloud NAT menggunakan subnet leaf eksternal sebagai input. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi subnet eksternal untuk Cloud NAT, lihat Membuat subnet eksternal untuk Cloud NAT.

Memastikan konfigurasi pod atau VM yang kompatibel

Seperti yang disebutkan dalam Ringkasan NAT, Cloud NAT tidak kompatibel dengan konfigurasi traffic keluar project default. Pastikan pod atau VM yang ingin Anda gunakan dengan Cloud NAT TIDAK memiliki label egress.networking.gke.io/enabled:true.

Secara default, Virtual Machine External Access (VMEA) mengonfigurasi VM untuk mengirim traffic keluar menggunakan konfigurasi traffic keluar project default. Dengan kata lain, VMEA otomatis menambahkan label egress.networking.gke.io/enabled:"true" ke VM. Jika VM tersebut juga dikonfigurasi untuk mengirim traffic keluar menggunakan gateway Cloud NAT, hal ini akan menyebabkan konflik antara konfigurasi NAT. Untuk menghindari konflik ini: untuk setiap VMEA yang terkait dengan VM yang dikonfigurasi untuk mengirim traffic keluar melalui gateway Cloud NAT, pastikan VMEA yang terkait dengan VM tersebut memiliki anotasi egress.networking.gke.io/use-cloud-nat:"true". VM terkait kemudian akan mengirim traffic keluar secara eksklusif melalui gateway Cloud NAT.

Membuat gateway Cloud NAT

Contoh berikut menentukan gateway Cloud NAT dengan dua subnet leaf eksternal (subnet-1 dan subnet-2). Gateway akan menggunakan semua IP di subnet tersebut, satu dari subnet-1 dan empat dari subnet-2, serta otomatis menetapkannya ke endpoint dari setiap VM atau pod dengan label yang ditentukan. Beberapa pod atau VM dapat mendapatkan IP keluar yang sama.

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

Memeriksa status gateway

Periksa status gateway dengan menjalankan perintah kubectl berikut.

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

Jika dikonfigurasi dengan benar, kolom kondisi status gateway Cloud NAT akan menampilkan kondisi jenis Ready yang ditetapkan ke true dan subnet yang ditandai sebagai OK, seperti yang ditunjukkan dalam contoh output berikut.

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

Status gateway Cloud NAT berisi 4 kondisi dari jenis berikut:

  • Ready: Kondisi ini meringkas status gateway Cloud NAT. Kondisi ini ditetapkan ke benar (true) jika gateway telah disiapkan sepenuhnya.
  • SubnetsReady: Kondisi ini menunjukkan apakah subnet yang ditetapkan ke gateway valid atau tidak.
  • PerimeterConfigurationReady: Kondisi ini menunjukkan apakah konfigurasi perimeter telah dikonfigurasi atau belum (misalnya, IP eksternal yang ditetapkan ke node yang menghadap ke eksternal, dll.).
  • EgressRoutesReady: Kondisi ini menunjukkan apakah rute untuk mengirim traffic keluar dari endpoint sumber telah dikonfigurasi atau belum.

Menguji Traffic

Kita dapat menguji traffic dengan mengeluarkan perintah curl dari salah satu pod atau VM yang ditetapkan ke gateway menuju endpoint eksternal. Endpoint penerima akan melihat salah satu IP keluar yang terkait dengan gateway.