Menggunakan Public NAT dengan GKE
Halaman ini menunjukkan cara mengonfigurasi penyiapan NAT Publik contoh dengan Google Kubernetes Engine (GKE). Sebelum menyiapkan Public NAT, baca Ringkasan Public NAT.
Prasyarat
Anda harus melakukan hal berikut sebelum menyiapkan NAT Publik.
Mendapatkan izin IAM
Peran roles/compute.networkAdmin memberi Anda izin untuk membuat gateway NAT di Cloud Router, mencadangkan dan menetapkan alamat IP NAT, serta menentukan subnetwork (subnet) yang traffic-nya harus menggunakan terjemahan alamat jaringan oleh gateway NAT.
Menyiapkan Google Cloud
Sebelum memulai, siapkan item berikut di Google Cloud.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Di Google Cloud konsol, buka halaman VPC networks.
Klik Create VPC network.
Masukkan Nama
custom-network1
.Di bagian Subnets, tetapkan Subnet creation mode ke Custom.
Di bagian New subnet, masukkan Name
subnet-us-east-192
.Di bagian Region, pilih us-east4.
Masukkan rentang alamat IP
192.168.1.0/24
.Klik Selesai, lalu klik Buat.
Buat jaringan Virtual Private Cloud (VPC) mode kustom baru di project Anda:
gcloud compute networks create custom-network1 \ --subnet-mode custom
Output:
NAME MODE IPV4_RANGE GATEWAY_IPV4 custom-network1 custom
Tentukan awalan subnet untuk region pertama Anda. Dalam contoh ini, kita menetapkan
192.168.1.0/24
ke regionus-east4
.gcloud compute networks subnets create subnet-us-east-192 \ --network custom-network1 \ --region us-east4 \ --range 192.168.1.0/24
Output:
NAME REGION NETWORK RANGE subnet-us-east-192 us-east4 custom-network1 192.168.1.0/24
Di konsol Google Cloud , buka halaman Kubernetes clusters.
Klik Buat kluster.
Untuk Name, masukkan
nat-test-cluster
.Tetapkan Location type ke Zonal.
Setel Zone ke us-east4-c.
Di panel navigasi, klik Networking.
Pilih Cluster pribadi.
Hapus centang pada kotak Akses panel kontrol menggunakan alamat IP eksternalnya.
Masukkan Rentang IP bidang kontrol
172.16.0.0/28
.Setel Network ke
custom-network1
.Untuk membuat dan memulai cluster, klik Create.
Di konsol Google Cloud , buka halaman Firewall policies.
Klik Create firewall rule.
Masukkan Nama
allow-ssh
.Tentukan Network
custom-network1
.Tetapkan Direction of traffic ke Ingress.
Setel Tindakan jika ada kecocokan ke Izinkan.
Tetapkan Targets ke All instances in the network.
Tetapkan Source filter ke IPv4 ranges.
Tetapkan Rentang IP sumber ke
35.235.240.0/20
.Tetapkan Protocols and ports ke Specified protocols and ports.
Pilih kotak centang tcp, lalu masukkan port
22
.Klik Buat.
Di konsol Google Cloud , buka halaman Identity-Aware Proxy.
Pilih tab SSH and TCP resources.
Pilih kotak centang di samping node pertama dalam daftar di bagian All Tunnel Resources > us-east4-c. Namanya akan mirip dengan
gke-nat-test-cluster-default-pool-b50db58d-075t
.Tuliskan nama node; nanti Anda akan menggunakannya untuk menguji konektivitas.
Di panel kanan, klik Tambahkan prinsipal.
Untuk memberikan akses ke resource kepada pengguna, grup, atau akun layanan, masukkan alamat email mereka di kolom New principals.
Jika hanya menguji fitur ini, Anda dapat memasukkan alamat email Anda sendiri.
Untuk memberikan akses pokok ke resource melalui fitur penerusan TCP Cloud IAP, di daftar drop-down Role, pilih Cloud IAP > IAP-secured Tunnel User.
Klik Simpan.
Di konsol Google Cloud , buka halaman VM instances.
Temukan node yang Anda buat izin SSH IAP-nya. Di kolom Connect, klik panah drop-down SSH, lalu pilih Open in browser window.
Jika ini adalah pertama kalinya Anda terhubung ke instance,Google Cloud akan membuat kunci SSH untuk Anda.
Dari perintah node, temukan ID proses container
kube-dns
:pgrep '^kube-dns$'
Akses container:
sudo nsenter --target PROCESS_ID --net /bin/bash
Dari
kube-dns
, coba hubungkan ke internet:curl example.com
Anda tidak akan mendapatkan hasil apa pun. Jika Anda melakukannya, Anda mungkin belum membuat cluster sebagai cluster pribadi, atau mungkin ada masalah lain. Untuk memecahkan masalah, lihat VM dapat mengakses internet secara tidak terduga tanpa NAT Publik.
Untuk mengakhiri perintah, Anda mungkin harus memasukkan
Ctrl+C
.Temukan nama salah satu node cluster Anda:
gcloud compute instances list
Nama node terlihat seperti
gke-nat-test-cluster-default-pool-1a4cbd06-3m8v
. Catat nama node dan gunakan nama tersebut di mana pun Anda melihatNODE_NAME
dalam perintah berikut.Hubungkan ke node:
gcloud compute ssh NODE_NAME \ --zone us-east4-c \ --tunnel-through-iap
Dari perintah node, temukan ID proses container
kube-dns
:pgrep '^kube-dns$'
Akses container:
sudo nsenter --target PROCESS_ID --net /bin/bash
Dari
kube-dns
, coba hubungkan ke internet:curl example.com
Anda tidak akan mendapatkan hasil apa pun.Untuk mengakhiri perintah, Anda mungkin harus memasukkan
Ctrl+C
.Di konsol Google Cloud , buka halaman Cloud NAT.
Klik Mulai atau Create Cloud NAT gateway.
Masukkan Gateway name
nat-config
.Tetapkan VPC network ke
custom-network1
.Tetapkan Region ke us-east4.
Di bagian Cloud Router, pilih Create new router.
- Masukkan Nama
nat-router
. - Klik Buat.
- Masukkan Nama
Klik Buat.
Membuat cloud router
gcloud compute routers create nat-router \ --network custom-network1 \ --region us-east4
Tambahkan konfigurasi ke router:
gcloud compute routers nats create nat-config \ --router-region us-east4 \ --router nat-router \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
- Siapkan gateway Public NAT.
- Buat contoh penyiapan Compute Engine.
Menyiapkan contoh GKE
Gunakan contoh ini jika Anda ingin melihat konfigurasi Public NAT sederhana yang berfungsi dengan GKE.
Langkah 1: Buat jaringan dan subnet VPC
Jika sudah memiliki jaringan dan subnet, Anda dapat melewati langkah ini.
Konsol
gcloud
Terraform
Anda dapat menggunakan modul Terraform untuk membuat subnet dan jaringan Virtual Private Cloud kustom.
Langkah 2: Buat cluster pribadi
Konsol
gcloud
gcloud container clusters create "nat-test-cluster" \ --zone "us-east4-c" \ --username "admin" \ --cluster-version "latest" \ --machine-type "e2-medium" \ --disk-type "pd-standard" \ --disk-size "100" \ --scopes "https://www.googleapis.com/auth/compute","https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" \ --num-nodes "3" \ --enable-private-nodes \ --enable-private-endpoint \ --master-ipv4-cidr "172.16.0.0/28" \ --enable-ip-alias \ --network "projects/PROJECT_ID/global/networks/custom-network1" \ --subnetwork "projects/PROJECT_ID/regions/us-east4/subnetworks/subnet-us-east-192" \ --max-nodes-per-pool "110" \ --enable-master-authorized-networks \ --addons HorizontalPodAutoscaling,HttpLoadBalancing \ --enable-autoupgrade \ --enable-autorepair
Terraform
Anda dapat menggunakan resource Terraform untuk membuat cluster pribadi.
Langkah 3: Buat aturan firewall yang mengizinkan koneksi SSH
Konsol
gcloud
gcloud compute firewall-rules create allow-ssh \ --network custom-network1 \ --source-ranges 35.235.240.0/20 \ --allow tcp:22
Terraform
Anda dapat menggunakan resource Terraform untuk membuat aturan firewall.
Langkah 4: Buat izin SSH IAP untuk salah satu node Anda
Pada langkah selanjutnya, gunakan IAP untuk terhubung ke node Anda.
Konsol
gcloud
Untuk langkah ini, gunakan petunjuk Konsol.
Langkah 5: Login ke node dan konfirmasi bahwa node tidak dapat mengakses internet
Konsol
gcloud
Langkah 6: Buat konfigurasi NAT menggunakan Cloud Router
Anda harus membuat Cloud Router di region yang sama dengan instance yang menggunakan NAT Publik. NAT Publik hanya digunakan untuk menempatkan informasi NAT ke VM. Alamat ini tidak digunakan sebagai bagian dari gateway NAT yang sebenarnya.
Dengan konfigurasi ini, semua instance di region tersebut dapat menggunakan NAT Publik untuk semua rentang IP primer dan alias. Cloud Router juga otomatis mengalokasikan alamat IP eksternal untuk gateway NAT. Untuk mengetahui opsi lainnya, lihat dokumentasi Google Cloud CLI.
Konsol
gcloud
Terraform
Anda dapat menggunakan resource Terraform untuk membuat Cloud Router.
Anda dapat menggunakan modul Terraform untuk membuat konfigurasi NAT.
Langkah 7: Coba hubungkan ke internet lagi
Mungkin perlu waktu hingga tiga menit agar konfigurasi NAT diterapkan, jadi tunggu setidaknya satu menit sebelum mencoba mengakses internet lagi.
Jika Anda masih belum login ke kube-dns
, hubungkan kembali dengan menggunakan prosedur
di Langkah 5. Setelah Anda login, jalankan kembali perintah curl
:
curl example.com
Anda akan melihat output yang berisi konten berikut:
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You can use this domain in examples without prior coordination or asking for permission.</p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>