Tutorial ini menunjukkan cara menerapkan alamat IP publik (PUPI) yang digunakan secara pribadi ke blok alamat Pod Google Kubernetes Engine (GKE).
Alamat IP Publik yang Digunakan Secara Pribadi (PUPI) adalah alamat yang dapat Anda gunakan secara pribadi dalam jaringan Virtual Private Cloud (VPC) Google Cloud. Alamat IP ini bukan milik Google. Anda tidak perlu memiliki alamat IP publik ini untuk menggunakannya secara pribadi.
Ringkasan
Cluster GKE memerlukan rentang alamat IP khusus untuk node, Pod, dan Layanan. Seiring berkembangnya infrastruktur, Anda mungkin akan kehabisan ruang alamat IP internal standar (RFC 1918). Salah satu cara untuk meminimalkan kehabisan alamat RFC 1918 pribadi adalah dengan menggunakan alamat IP publik yang digunakan secara pribadi (PUPI) untuk blok CIDR Pod GKE. PUPI memberikan alternatif untuk jaringan Pod GKE Anda, dengan mencadangkan alamat IP pribadi untuk komponen cluster lainnya.
Cluster Tunggal: Jika hanya membuat satu cluster GKE, Anda dapat mengaktifkan PUPI dengan mengaktifkan rentang alamat IP eksternal yang digunakan secara pribadi.
Beberapa Cluster: Jika Anda menggunakan beberapa cluster GKE yang terhubung melalui peering VPC (skenario umum untuk penyedia layanan), Anda memerlukan konfigurasi yang lebih kompleks. Diagram berikut menunjukkan contoh cara perusahaan (produser) menawarkan layanan terkelola menggunakan PUPI dengan peering VPC kepada pelanggan (konsumen).
Diagram sebelumnya melibatkan pertimbangan berikut:
- Blok CIDR utama: Blok CIDR non-PUPI yang digunakan untuk node dan load balancer internal (ILB) dan tidak boleh tumpang-tindih di seluruh VPC.
- Blok CIDR sekunder produsen: Blok CIDR PUPI yang digunakan untuk Pod (misalnya,
45.45.0.0/16
). - Blok CIDR sekunder konsumen: Blok CIDR PUPI lainnya di sisi konsumen (misalnya,
5.5.0.0/16
).
Cara PUPI digunakan dalam skenario Penyedia layanan
Penyedia layanan (produsen) menjalankan layanan terkelolanya di cluster GKE (gke-2) dalam VPC (vpc-producer
). Cluster ini menggunakan rentang PUPI 45.0.0.0/8
untuk alamat IP Pod-nya.
Pelanggan (konsumen) juga memiliki cluster GKE (gke-1) di VPC (vpc-consumer
) mereka sendiri, menggunakan rentang PUPI yang berbeda, 5.0.0.0/8
, untuk alamat IP Pod-nya.
Kedua VPC ini terhubung menggunakan peering VPC, tetapi masing-masing terus menggunakan alamat IP pribadi standar (RFC 1918) untuk node, layanan, dan load balancer internal.
Memastikan komunikasi antar-VPC
- Konsumen ke Produsen: Secara default, VPC konsumen secara otomatis membagikan rute RFC 1918-nya (tetapi bukan PUPI) dengan produsen. Hal ini memungkinkan resource di VPC konsumen mengakses layanan di VPC produsen (biasanya melalui load balancer internal).
- Produsen ke Konsumen: Agar Pod produsen dapat menjangkau resource di VPC konsumen, konfigurasi eksplisit diperlukan.
- Tidak Tumpang-Tindih: Produsen dan konsumen harus memastikan bahwa rentang PUPI konsumen tidak bertentangan dengan alamat IP apa pun yang digunakan di VPC produsen.
- Ekspor/Impor: Produsen harus mengaktifkan ekspor rute PUPI-nya, dan konsumen harus mengaktifkan impor rute tersebut melalui koneksi peering.
Mengaktifkan komunikasi saat rentang PUPI tumpang-tindih
Jika VPC konsumen sudah menggunakan rentang PUPI yang sama dengan produsen, komunikasi langsung dari Pod produsen tidak dapat dilakukan. Sebagai gantinya, produsen dapat mengaktifkan penyamaran alamat IP, dengan alamat IP Pod disembunyikan di balik alamat IP node produsen.
Tabel berikut menunjukkan setelan impor dan ekspor default untuk setiap VPC. Anda dapat mengubah setelan peering VPC default
menggunakan perintah gcloud compute networks peerings update
.
Jaringan VPC | Impor setelan | Setelan ekspor | Catatan |
---|---|---|---|
Produser | Perilaku default (dinonaktifkan): Tidak mengimpor rute subnet dengan alamat IP publik |
Perilaku default (diaktifkan): Mengekspor rute subnet dengan alamat IP publik |
Flag yang dikontrol melalui jaringan layanan. |
Konsumen | Nonaktif (default) | Diaktifkan (default) | Biasanya dikelola oleh pelanggan, tidak perlu diubah melalui jaringan layanan |
Setelan ini menghasilkan hal berikut:
- VPC produsen melihat semua rute pelanggan.
- VPC konsumen tidak melihat rute PUPI yang dikonfigurasi di subnet Pod di VPC produsen.
- Traffic yang berasal dari Pod produsen ke jaringan
vpc-consumer
harus diterjemahkan di balik alamat node di cluster produsen.
Prasyarat
Agar komunikasi antara Pod VPC dan VPC lain berhasil, pastikan prasyarat dan konfigurasi berikut terpenuhi:
- Cluster GKE Anda harus memenuhi persyaratan versi minimum berikut:
- Cluster Autopilot: GKE versi 1.22 atau yang lebih baru
- Cluster standar: GKE versi 1.14 atau yang lebih baru
- Pilih rentang PUPI yang tidak dapat dirutekan secara publik atau dimiliki oleh Google.
- Pastikan alamat IP node dan rentang alamat IP utama dari kedua VPC tidak tumpang-tindih.
- Jika Anda memerlukan komunikasi Pod ke Pod langsung antara VPC
pelanggan dan layanan terkelola, ikuti langkah-langkah berikut:
- Cluster Autopilot: Konfigurasikan SNAT untuk PUPI guna memastikan komunikasi Pod-ke-Pod. Anda tidak memerlukan konfigurasi tambahan.
- Cluster standar: Menerjemahkan alamat IP Pod ke alamat IP node yang sesuai menggunakan SNAT. Aktifkan SNAT untuk traffic PUPI. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan rentang alamat IP eksternal yang digunakan secara pribadi.
Mengonfigurasi alamat IP publik yang digunakan secara pribadi untuk cluster GKE
Untuk mengonfigurasi alamat PUPI untuk cluster GKE:
- Konfigurasikan dua jaringan Virtual Private Cloud.
- Konfigurasikan satu subnet di dalam setiap jaringan Virtual Private Cloud.
- Konfigurasikan rentang alamat PUPI pada rentang alamat sekunder di setiap subnet.
- Buat hubungan peering Virtual Private Cloud antara dua jaringan Virtual Private Cloud dengan setelan impor dan ekspor yang tepat.
- Periksa rute dalam setiap Virtual Private Cloud.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Hanya gunakan cluster native VPC.
Siapkan spesifikasi IPAM yang diperlukan untuk peering VPC.
Menyiapkan Jaringan dan cluster
Buat jaringan VPC:
Buat dua jaringan VPC berikut dengan RFC-1918 sebagai rentang utama untuk node dan rentang PUPI untuk Pod. Tetapkan rentang alamat IP utama dari ruang alamat pribadi RFC 1918 (misalnya,
10.x.x.x
,172.16.x.x
, atau192.168.x.x
) ke kedua VPC. Rentang ini biasanya digunakan untuk node pekerja dalam cluster GKE Anda. Selain rentang alamat IP internal, tentukan rentang alamat IP Publik yang Digunakan Secara Pribadi (PUPI) terpisah untuk setiap VPC. Rentang PUPI ini digunakan secara eksklusif untuk alamat IP Pod dalam cluster GKE yang sesuai.Jaringan VPC konsumen: VPC ini menghosting cluster GKE tempat aplikasi atau beban kerja konsumen berjalan. Anda dapat menggunakan konfigurasi yang mirip dengan berikut:
Network: consumer Subnetwork: consumer-subnet Primary range: 10.129.0.0/24 Service range name and cidr: consumer-services, 172.16.5.0/24 Pod range name and cidr: consumer-pods, 5.5.5.0/24 Cluster name: consumer-cluster
Jaringan VPC produsen: VPC ini menghosting cluster GKE yang bertanggung jawab untuk menyediakan layanan yang digunakan konsumen. Anda dapat menggunakan konfigurasi yang mirip dengan berikut:
Network: producer Subnetwork: producer-subnet Primary range: 10.128.0.0/24 Service range name and cidr: producer-services, 172.16.45.0/24 Pod range name and cidr: producer-pods, 45.45.45.0/24 Cluster name: producer-cluster
Untuk mengetahui informasi selengkapnya tentang cara membuat jaringan VPC, lihat Membuat jaringan VPC.
Dengan jaringan dan subnet VPC yang dibuat dengan rentang PUPI pada langkah sebelumnya, Anda dapat membuat dua cluster GKE (
producer
danconsumer
).Buat cluster
producer
dengan jaringan dan subnet produsen sebagai berikut:gcloud container clusters create PRODUCER_CLUSTER_NAME \ --enable-ip-alias \ --network=NETWORK_NAME \ --subnetwork=SUBNETWORK_NAME \ --cluster-secondary-range-name=PRODUCER_PODS \ --services-secondary-range-name=PRODUCER_SERVICES \ --num-nodes=1 \ --zone=PRODUCER_ZONE_NAME \ --project=PRODUCER_PROJECT_NAME
Ganti kode berikut:
PRODUCER_CLUSTER_NAME
: nama cluster produsen GKE.COMPUTE_LOCATION
: lokasi Compute Engine untuk cluster.PRODUCER_SUBNET_NAME
: nama subnet yang ada. Rentang alamat IP utama subnet digunakan untuk node. Subnet harus ada di region yang sama dengan yang digunakan oleh cluster. Jika dihilangkan, GKE akan mencoba menggunakan subnet dalam jaringan VPCdefault
di region cluster.- Jika metode penetapan rentang sekunder dikelola oleh GKE:
POD_IP_RANGE
: rentang alamat IP dalam notasi CIDR, seperti10.0.0.0/14
, atau ukuran subnet mask blok CIDR, seperti/14
. Rentang alamat IP ini digunakan untuk membuat rentang alamat IP sekunder subnet untuk Pod. Jika Anda menghilangkan opsi--cluster-ipv4-cidr
, GKE akan memilih rentang/14
(218 alamat) secara otomatis. Rentang yang dipilih secara otomatis akan ditentukan secara acak dari10.0.0.0/8
(rentang 224 alamat).SERVICES_IP_RANGE
: rentang alamat IP dalam notasi CIDR (misalnya,10.4.0.0/19
) atau ukuran subnet mask blok CIDR (misalnya,/19
). Rentang alamat ini digunakan untuk membuat rentang alamat IP sekunder subnet pada Layanan.
- Jika metode penetapan rentang sekunder dikelola pengguna:
SECONDARY_RANGE_PODS
: nama rentang alamat IP sekunder yang ada dalamSUBNET_NAME
yang ditentukan. GKE menggunakan seluruh rentang alamat IP sekunder subnet untuk Pod cluster.SECONDARY_RANGE_SERVICES
: nama rentang alamat IP sekunder yang ada dalam yang ditentukan.
Buat cluster
consumer
dengan jaringan dan subnet konsumen sebagai berikut:gcloud container clusters create CONSUMER_CLUSTER_NAME \ --enable-ip-alias \ --network=CONSUMER_NETWORK_NAME \ --subnetwork=CONSUMER_SUBNETWORK_NAME \ --cluster-secondary-range-name=CONSUMER_PODS \ --services-secondary-range-name=CONSUMER_SERVICES \ --num-nodes=1 \ --zone=CONSUMER_ZONE \ --project=CONSUMER_PROJECT
Ganti kode berikut:
CONSUMER_CLUSTER_NAME
: nama cluster konsumen GKE.COMPUTE_LOCATION
: lokasi Compute Engine untuk cluster.CONSUMER_SUBNET_NAME
: nama subnet yang ada. Rentang alamat IP utama subnet digunakan untuk node. Subnet harus ada di region yang sama dengan yang digunakan oleh cluster. Jika dihilangkan, GKE akan mencoba menggunakan subnet dalam jaringan VPCdefault
di region cluster.- Jika metode penetapan rentang sekunder dikelola oleh GKE:
POD_IP_RANGE
: rentang alamat IP dalam notasi CIDR, seperti10.0.0.0/14
, atau ukuran subnet mask blok CIDR, seperti/14
. Parameter ini digunakan untuk membuat rentang alamat IP sekunder subnet untuk Pod. Jika Anda menghilangkan opsi--cluster-ipv4-cidr
, GKE akan memilih rentang/14
(218 alamat) secara otomatis. Rentang yang dipilih secara otomatis akan ditentukan secara acak dari10.0.0.0/8
(rentang 224 alamat) dan tidak akan menyertakan rentang alamat IP yang dialokasikan untuk VM, rute yang ada, atau rentang yang dialokasikan ke cluster lain. Rentang yang dipilih secara otomatis mungkin bertentangan dengan alamat IP yang direservasi, rute dinamis, atau rute dalam VPC yang di-peering dengan cluster ini. Jika menggunakan salah satu dari hal tersebut, Anda harus menentukan--cluster-ipv4-cidr
untuk mencegah konflik.SERVICES_IP_RANGE
: rentang alamat IP dalam notasi CIDR (misalnya,10.4.0.0/19
) atau ukuran subnet mask blok CIDR (misalnya,/19
). Rentang alamat ini digunakan untuk membuat rentang alamat IP sekunder subnet pada Layanan.
- Jika metode penetapan rentang sekunder dikelola pengguna:
SECONDARY_RANGE_PODS
: nama rentang alamat IP sekunder yang ada dalamSUBNET_NAME
yang ditentukan. GKE menggunakan seluruh rentang alamat IP sekunder subnet untuk Pod cluster.SECONDARY_RANGE_SERVICES
: nama rentang alamat IP sekunder yang ada dalam yang ditentukan.
Untuk informasi selengkapnya tentang cara membuat cluster, lihat Membuat cluster.
Buat hubungan peering VPC antara jaringan VPC konsumen dan jaringan VPC produsen sebagai berikut:
Untuk menghubungkan jaringan
consumer
ke produsen, jalankan perintah berikut:gcloud compute networks peerings create PEERING_NAME \ --project=consumer_project \ --network=consumer \ --peer-network=producer
Untuk menghubungkan jaringan
producer
ke konsumen, jalankan perintah berikut:gcloud compute networks peerings create PEERING_NAME \ --project=producer_project \ --network=producer \ --peer-network=consumer \ --no-export-subnet-routes-with-public-ip \ --import-subnet-routes-with-public-ip
Ganti kode berikut:
PEERING_NAME
: nama cluster konsumen GKE.CONSUMER_CLUSTER_NAME
: nama cluster konsumen GKE.
Secara default, VPC konsumen mengekspor alamat PUPI. Saat membuat VPC produsen, Anda menggunakan argumen berikut untuk mengonfigurasi VPC agar mengimpor alamat PUPI, tetapi tidak mengekspornya:
--no-export-subnet-routes-with-public-ip --import-subnet-routes-with-public-ip
Memverifikasi jaringan dan subnetwork
Verifikasi jaringan produsen:
gcloud compute networks describe producer \ --project=producer_project
Outputnya mirip dengan hal berikut ini:
... kind: compute#network name: producer peerings: - autoCreateRoutes: true exchangeSubnetRoutes: true exportCustomRoutes: false exportSubnetRoutesWithPublicIp: false importCustomRoutes: false importSubnetRoutesWithPublicIp: true name: producer-peer-consumer …
Verifikasi subjaringan produsen:
gcloud compute networks subnets describe producer-subnet \ --project=producer_project\ --region=producer_region
Outputnya mirip dengan hal berikut ini:
... ipCidrRange: 10.128.0.0/24 kind: compute#subnetwork name: producer-subnet … secondaryIpRanges: - ipCidrRange: 172.16.45.0/24 rangeName: producer-services - ipCidrRange: 45.45.45.0/24 rangeName: producer-pods …
Verifikasi jaringan konsumen:
gcloud compute networks subnets describe consumer-subnet \ --project=consumer_project \ --region=consumer_region
Outputnya mirip dengan hal berikut ini:
... kind: compute#network name: consumer peerings: - autoCreateRoutes: true exchangeSubnetRoutes: true exportCustomRoutes: false exportSubnetRoutesWithPublicIp: true importCustomRoutes: false importSubnetRoutesWithPublicIp: false name: consumer-peer-producer ...
Verifikasi subjaringan konsumen:
gcloud compute networks describe consumer \ --project=consumer_project
Outputnya mirip dengan hal berikut ini:
... ipCidrRange: 10.129.0.0/24 kind: compute#subnetwork name: consumer-subnet ... secondaryIpRanges: - ipCidrRange: 172.16.5.0/24 rangeName: consumer-services - ipCidrRange: 5.5.5.0/24 rangeName: consumer-pods ...
Memverifikasi cluster GKE dan resource-nya
Dapatkan kredensial cluster konsumen:
gcloud container clusters get-credentials consumer-cluster \ --project=consumer_project \ --zone=consumer_zone
Outputnya mirip dengan hal berikut ini:
... Fetching cluster endpoint and auth data. kubeconfig entry generated for consumer-cluster. ...
Instal dan verifikasi helloapp.
Atau, Anda dapat menyimpan manifes berikut sebagai
deployment.yaml
:kubectl apply -f - <<'EOF' apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: labels: app: hello tier: web spec: containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports: - containerPort: 8080 resources: requests: cpu: 200m EOF
Terapkan deployment.yaml:
kubectl apply -f
Verifikasi deployment
helloweb
:kubectl get deployment helloweb
Outputnya mirip dengan hal berikut ini:
... NAME READY UP-TO-DATE AVAILABLE AGE helloweb 1/1 1 1 10s ...
Memverifikasi solusi
Validasi bahwa Anda berhasil membuat peering VPC:
gcloud compute networks peerings list
Outputnya mirip dengan berikut ini, yang menampilkan peering yang diberi nama konsumen dan produsen:
NAME NETWORK PEER_PROJECT PEER_NETWORK STACK_TYPE PEER_MTU IMPORT_CUSTOM_ROUTES EXPORT_CUSTOM_ROUTES STATE STATE_DETAILS consumer-peer-producer consumer <project_name> producer IPV4_ONLY 1460 False False ACTIVE [2023-08-07T13:14:57.178-07:00]: Connected. producer-peer-consumer producer <project_name> consumer IPV4_ONLY 1460 False False ACTIVE [2023-08-07T13:14:57.178-07:00]: Connected.
Validasi bahwa VPC konsumen mengekspor rute PUPI:
gcloud compute networks peerings list-routes consumer-peer-producer \ --direction=OUTGOING \ --network=consumer \ --region=<consumer_region>
Outputnya mirip dengan berikut ini, yang menampilkan ketiga blok CIDR konsumen:
DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS 10.129.0.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted by peer 172.16.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted by peer 5.5.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted by peer
Validasi rute PUPI yang diimpor oleh VPC produsen:
gcloud compute networks peerings list-routes producer-peer-consumer \ --direction=INCOMING \ --network=producer \ --region=<producer_region>
Outputnya mirip dengan berikut ini, yang menampilkan ketiga blok CIDR konsumen:
DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS 10.129.0.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted 172.16.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted 5.5.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted
Validasi bahwa Pod GKE memiliki alamat PUPI:
kubectl get pod -o wide
Outputnya mirip dengan berikut ini, yang menunjukkan bahwa alamat IP Pod berada dalam rentang 5.5.5/24.
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES helloweb-575d78464d-xfklj 1/1 Running 0 28m 5.5.5.16 gke-consumer-cluster-default-pool-e62b6542-dp5f <none> <none>
Langkah selanjutnya
- Baca panduan Mengonfigurasi akses layanan pribadi.
- Baca panduan Memulai Service Networking API.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.