Membuat gateway Cloud NAT

Ringkasan

Dalam kasus penggunaan ini, kita akan membuat gateway Cloud NAT dengan beberapa IP keluar yang ditetapkan. Gateway ini akan mengirimkan traffic keluar dari pod dan VM yang cocok dengan label pencocokan yang dikonfigurasi di gateway. Gateway akan otomatis menetapkan IP keluar ke setiap endpoint yang dapat keluar dari traffic 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 keluar.

Lihat Sebelum Anda memulai dengan 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 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, konfigurasi Akses Eksternal Mesin Virtual (VMEA) mengonfigurasi VM untuk keluar dari traffic menggunakan konfigurasi keluar project default. Dengan kata lain, label egress.networking.gke.io/enabled:"true" akan otomatis ditambahkan ke VM. Jika VM tersebut dikonfigurasi untuk keluar dari traffic menggunakan gateway Cloud NAT juga, hal ini akan menyebabkan konflik antara konfigurasi NAT. Untuk menghindari tabrakan ini: untuk setiap VMEA yang terkait dengan VM yang dikonfigurasi untuk keluar dari traffic 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 mengirimkan traffic keluar secara eksklusif melalui gateway Cloud NAT.

Buat 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, dan secara otomatis menetapkannya ke endpoint dari setiap VM atau pod dengan label yang ditentukan. Beberapa pod atau VM dapat mendapatkan IP keluar yang sama yang ditetapkan.

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

Periksa 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 pada 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 merangkum status gateway Cloud NAT. Kondisi ini ditetapkan ke benar jika gateway telah disiapkan sepenuhnya.
  • SubnetsReady: Kondisi ini menunjukkan apakah subnet yang ditetapkan ke gateway valid.
  • PerimeterConfigurationReady: Kondisi ini menunjukkan apakah konfigurasi perimeter telah dikonfigurasi (misalnya, IP eksternal yang ditetapkan ke node yang menghadap eksternal, dll.).
  • EgressRoutesReady: Kondisi ini menunjukkan apakah rute untuk keluar traffic dari endpoint sumber telah dikonfigurasi.

Traffic Pengujian

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.