Halaman ini menunjukkan cara mengaktifkan multi-cluster Pengontrol Gateway GKE, pengontrol yang dihosting Google yang menyediakan load balancer eksternal dan internal, untuk cluster GKE Anda. Untuk mempelajari cara menggunakan resource Gateway untuk container load balancing, lihat Men-deploy Gateway atau Men-deploy Gateway multi-cluster.
Pengontrol Gateway GKE multi-cluster menginstal GatewayClass multi-cluster di cluster Anda:
gke-l7-global-external-managed-mc
untuk Gateway multi-cluster eksternal globalgke-l7-regional-external-managed-mc
untuk Gateway multi-cluster eksternal regionalgke-l7-rilb-mc
untuk Gateway multi-cluster internal regionalgke-l7-gxlb-mc
untuk Gateway multi-cluster Klasik eksternal global
Pelajari lebih lanjut kemampuan berbagai GatewayClass di GKE.
Harga
Semua resource Compute Engine yang di-deploy melalui Pengontrol Gateway dikenai biaya dengan project tempat cluster GKE Anda berada. Pengontrol Gateway cluster tunggal ditawarkan tanpa biaya tambahan sebagai bagian dari harga GKE Standard dan Autopilot. Harga untuk Gateway multi-cluster dijelaskan dalam Halaman harga Multi Cluster Ingress dan Gateway.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Mengaktifkan 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
.
Persyaratan GKE Gateway Controller
- Untuk Standard, GKE versi 1.24 atau yang lebih baru.
- Untuk Autopilot, GKE versi 1.26 atau yang lebih baru.
- Google Cloud CLI versi 407.0.0 atau yang lebih baru.
- Gateway API hanya didukung di cluster native VPC.
- Jika menggunakan GatewayClass internal, Anda harus mengaktifkan subnet khusus proxy.
- Cluster Anda harus mengaktifkan add-on
HttpLoadBalancing
. - Jika menggunakan Istio, Anda harus mengupgrade Istio ke salah satu versi berikut:
- 1.15.2 atau yang lebih baru
- 1.14.5 atau yang lebih baru
- 1.13.9 atau yang lebih baru.
- Jika Anda menggunakan VPC Bersama, maka dalam project host, Anda perlu menetapkan peran
Compute Network User
ke akun Layanan GKE untuk project layanan.
Persyaratan Gateway Multi-cluster
Selain persyaratan pengontrol Gateway GKE, untuk deployment Gateway multi-cluster, pastikan Anda telah melakukan tugas-tugas berikut:
- Mengaktifkan Gateway API pada cluster konfigurasi Anda.
- Mengaktifkan Workload Identity Federation for GKE pada cluster Anda.
- Lengkapi prasyarat umum perangkat untuk mendaftarkan cluster.
Aktifkan API yang diperlukan Gateway multi-cluster berikut dalam project Anda:
- API Mesh Layanan Cloud
- Multi-cluster Services API
- API Multi Cluster Ingress
Jalankan perintah ini untuk mengaktifkan API yang diperlukan jika belum diaktifkan:
gcloud services enable \ trafficdirector.googleapis.com \ multiclusterservicediscovery.googleapis.com \ multiclusteringress.googleapis.com \ --project=PROJECT_ID
Ganti
PROJECT_ID
dengan project ID tempat cluster GKE Anda berjalan.
Batasan dan Batasan
Batasan dan masalah umum yang sama untuk Gateway cluster tunggal juga berlaku untuk Gateway multi-cluster.
Selain batasan Gateway cluster tunggal, batasan berikut berlaku untuk Gateway multi-cluster:
Load balancing ke backend di region yang berbeda tidak didukung dengan GatewayClass internal regional
gke-l7-rilb-mc
. Untuk mempelajari selengkapnya tentang fitur berbeda yang didukung oleh setiap GatewayClass, lihat Kemampuan GatewayClass.Service
tidak didukung sebagaibackendRefs
dengan Gateway multi-cluster. Gateway Multi-cluster hanya mendukungServiceImport
sebagaibackendRefs
yang valid.Load balancing lintas project tidak didukung. Semua cluster (cluster konfigurasi dan target cluster) yang terpasang ke Gateway multi-cluster yang sama harus di-deploy dalam project host VPC Bersama atau project layanan yang sama. Untuk selengkapnya informasi tentang topologi VPC Bersama yang didukung dengan Gateway, lihat Menggunakan Gateway multi-cluster dengan VPC Bersama.
Gateway Multi-Cluster bergantung pada MCS untuk menangani layanan lintas cluster penemuan. Dengan demikian, layanan yang diekspos ke Gateway Multi-Cluster tunduk pada semua layanan Multi Cluster Service Persyaratan.
Kuota
Gateway GKE menggunakan kuota Cloud Load Balancing untuk membatasi jumlah sumber daya yang dapat dibuat {i>Gateway controller<i} untuk mengelola traffic masuk yang dirutekan ke cluster GKE.
Menyiapkan lingkungan Anda untuk Gateway multi-cluster
Perlu beberapa cluster GKE untuk menyelesaikan contoh dalam Men-deploy Gateway multi-cluster. Semua cluster terdaftar ke armada yang sama sehingga Gateway dan Layanan multi-cluster dapat beroperasi di semua cluster tersebut.
Langkah-langkah berikut akan men-deploy tiga cluster GKE di dua region berbeda dalam project Anda:
us-west1-a/gke-west-1
us-west1-a/gke-west-2
us-east1-b/gke-east-1
Tindakan ini akan membuat topologi cluster berikut:
Cluster GKE ini digunakan untuk mendemonstrasikan load balancing multi-region dan pemisahan traffic multi-cluster berwarna biru-hijau menggunakan Gateway eksternal dan internal.
Men-deploy cluster
Pada langkah ini, Anda akan men-deploy tiga cluster GKE ke region us-east1
dan us-west1
.
Buat cluster GKE di
us-west1
bernamagke-west-1
:gcloud container clusters create gke-west-1 \ --gateway-api=standard \ --zone=us-west1-a \ --workload-pool=PROJECT_ID.svc.id.goog \ --cluster-version=VERSION \ --project=PROJECT_ID
Ganti kode berikut:
PROJECT_ID
: project ID tempat cluster GKE Anda berjalan.VERSION
: versi GKE, 1.24 atau yang lebih baru.
Buat cluster GKE lain di
us-west1
(atau region yang sama dengan cluster sebelumnya) bernamagke-west-2
:gcloud container clusters create gke-west-2 \ --gateway-api=standard \ --zone=us-west1-a \ --workload-pool=PROJECT_ID.svc.id.goog \ --cluster-version=VERSION \ --project=PROJECT_ID
Buat cluster GKE di
us-east1
(atau region yang berbeda dengan yang sebelumnya) bernamagke-east-1
gcloud container clusters create gke-east-1 \ --gateway-api=standard \ --zone=us-east1-b \ --workload-pool=PROJECT_ID.svc.id.goog \ --cluster-version=VERSION \ --project=PROJECT_ID
Mengonfigurasi kredensial cluster
Langkah ini akan mengonfigurasi kredensial cluster dengan nama yang mudah diingat. Hal ini mempermudah beralih antar-cluster saat men-deploy resource di beberapa cluster.
Ambil kredensial untuk cluster
gke-west-1
,gke-west-2
, dangke-east-1
:gcloud container clusters get-credentials gke-west-1 --zone=us-west1-a --project=PROJECT_ID gcloud container clusters get-credentials gke-west-2 --zone=us-west1-a --project=PROJECT_ID gcloud container clusters get-credentials gke-east-1 --zone=us-east1-b --project=PROJECT_ID
Tindakan ini akan menyimpan kredensial secara lokal sehingga Anda dapat menggunakan klien kubectl untuk mengakses server API cluster. Secara default, nama yang dibuat secara otomatis dibuat untuk kredensial.
Ganti nama konteks cluster agar lebih mudah dirujuk di lain waktu:
kubectl config rename-context gke_PROJECT_ID_us-west1-a_gke-west-1 gke-west-1 kubectl config rename-context gke_PROJECT_ID_us-west1-a_gke-west-2 gke-west-2 kubectl config rename-context gke_PROJECT_ID_us-east1-b_gke-east-1 gke-east-1
Ganti
PROJECT_ID
dengan project ID tempat cluster Anda di-deploy.
Mendaftarkan cluster ke fleet
Setelah ketiga cluster berhasil dibuat, Anda harus mendaftarkan cluster ini ke fleet project Anda. Dengan mengelompokkan cluster GKE Anda dalam satu fleet, cluster tersebut dapat ditarget oleh Gateway multi-cluster.
gcloud container fleet memberships register gke-west-1 \ --gke-cluster us-west1-a/gke-west-1 \ --enable-workload-identity \ --project=PROJECT_ID gcloud container fleet memberships register gke-west-2 \ --gke-cluster us-west1-a/gke-west-2 \ --enable-workload-identity \ --project=PROJECT_ID gcloud container fleet memberships register gke-east-1 \ --gke-cluster us-east1-b/gke-east-1 \ --enable-workload-identity \ --project=PROJECT_ID
Konfirmasi bahwa cluster telah berhasil didaftarkan ke fleet:
gcloud container fleet memberships list --project=PROJECT_ID
Outputnya akan mirip dengan berikut ini:
NAME EXTERNAL_ID LOCATION gke-east-1 45a80b37-4b00-49aa-a68b-b430fce1e3f0 us-east1 gke-west-2 ac7087a5-f5ee-401e-b430-57f3af141239 us-west1 gke-west-1 549efe3a-b18e-4eb9-8796-e50b7967cde2 us-west1
Mengaktifkan Layanan multi-cluster dalam fleet
Aktifkan Layanan multi-cluster di fleet Anda untuk cluster yang terdaftar. Langkah ini memungkinkan pengontrol MCS untuk tiga cluster yang terdaftar ke fleet Anda, sehingga pengontrol tersebut dapat mulai memproses dan mengekspor Layanan.
gcloud container fleet multi-cluster-services enable \ --project PROJECT_ID
Memberikan izin Identity and Access Management (IAM) yang diperlukan oleh pengontrol MCS:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:PROJECT_ID.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role "roles/compute.networkViewer" \ --project=PROJECT_ID
Ganti
PROJECT_ID
dengan project ID tempat cluster Anda di-deploy.Pastikan MCS sudah diaktifkan untuk cluster yang terdaftar. Anda akan melihat keanggotaan untuk tiga cluster yang terdaftar. Mungkin perlu waktu beberapa menit agar semua klaster dapat ditampilkan.
gcloud container fleet multi-cluster-services describe --project=PROJECT_ID
Outputnya mirip dengan hal berikut ini:
createTime: '2023-10-12T06:14:33.466903587Z' membershipStates: projects/441323991697/locations/us-east1/memberships/gke-east-1: state: code: OK description: Firewall successfully updated updateTime: '2023-10-12T06:15:28.395318091Z' projects/441323991697/locations/us-west1/memberships/gke-west-1: state: code: OK description: Firewall successfully updated updateTime: '2023-10-12T06:15:30.534594027Z' projects/441323991697/locations/us-west1/memberships/gke-west-2: state: code: OK description: Firewall successfully updated updateTime: '2023-10-12T06:15:29.110582109Z' name: projects/pierre-louis-playground/locations/global/features/multiclusterservicediscovery resourceState: state: ACTIVE spec: {} updateTime: '2023-10-12T06:15:31.027276757Z'
Mengaktifkan Gateway multi-cluster di fleet
Pengontrol Gateway GKE multi-cluster mengatur deployment Gateway multi-cluster.
Saat mengaktifkan pengontrol Gateway multi-cluster, Anda harus memilih cluster konfigurasi. Cluster konfigurasi adalah cluster GKE tempat Resource gateway (Gateway, Rute, Kebijakan) di-deploy. Ini adalah tempat terpusat yang mengontrol perutean di seluruh cluster Anda. Lihat Desain cluster Konfigurasi untuk membantu Anda memutuskan cluster mana yang akan dipilih sebagai cluster konfigurasi.
Aktifkan Gateway multi-cluster dan tentukan cluster konfigurasi di fleet Anda. Perhatikan bahwa Anda dapat mengupdate cluster konfigurasi kapan saja. Contoh ini menetapkan
gke-west-1
sebagai cluster konfigurasi yang akan menghosting resource untuk Gateway multi-cluster.gcloud container fleet ingress enable \ --config-membership=projects/PROJECT_ID/locations/us-west1/memberships/gke-west-1 \ --project=PROJECT_ID
Memberikan izin Identity and Access Management (IAM) yang diperlukan oleh multi-cluster Pengontrol gateway:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-multiclusteringress." \ --role "roles/container.admin" \ --project=PROJECT_ID
Ganti
PROJECT_ID
danPROJECT_NUMBER
dengan project ID dan nomor project tempat cluster di-deploy.Pastikan bahwa pengontrol Gateway GKE diaktifkan untuk perangkat Anda:
gcloud container fleet ingress describe --project=PROJECT_ID
Outputnya mirip dengan hal berikut ini:
createTime: '2023-10-12T06:23:06.732858524Z' membershipStates: projects/441323991697/locations/us-east1/memberships/gke-east-1: state: code: OK updateTime: '2023-10-12T06:30:08.815839024Z' projects/441323991697/locations/us-west1/memberships/gke-west-1: state: code: OK updateTime: '2023-10-12T06:30:08.815837031Z' projects/441323991697/locations/us-west1/memberships/gke-west-2: state: code: OK updateTime: '2023-10-12T06:30:08.815840985Z' name: projects/pierre-louis-playground/locations/global/features/multiclusteringress resourceState: state: ACTIVE spec: multiclusteringress: configMembership: projects/pierre-louis-playground/locations/us-west1/memberships/gke-west-1 state: state: code: OK description: Ready to use updateTime: '2023-10-12T06:23:51.317464415Z' updateTime: '2023-10-12T06:30:09.439319551Z'
Pastikan GatewayClasses ada di cluster konfigurasi Anda:
kubectl get gatewayclasses --context=gke-west-1
Outputnya mirip dengan hal berikut ini:
NAME CONTROLLER ACCEPTED AGE gke-l7-global-external-managed networking.gke.io/gateway True 78m gke-l7-global-external-managed-mc networking.gke.io/gateway True 4m22s gke-l7-gxlb networking.gke.io/gateway True 78m gke-l7-gxlb-mc networking.gke.io/gateway True 4m23s gke-l7-regional-external-managed networking.gke.io/gateway True 78m gke-l7-regional-external-managed-mc networking.gke.io/gateway True 4m22s gke-l7-rilb networking.gke.io/gateway True 78m gke-l7-rilb-mc networking.gke.io/gateway True 4m22s
Output ini mencakup GatewayClass gke-l7-global-external-managed-mc, gke-l7-regional-external-managed-mc, gke-l7-gxlb-mc untuk multi-cluster eksternal Gateway dan GatewayClass gke-l7-rilb-mc untuk Gateway multi-cluster internal.
Alihkan konteks kubectl ke cluster konfigurasi:
kubectl config use-context gke-west-1
Sekarang Anda siap untuk mulai men-deploy Gateway multi-cluster di cluster konfigurasi.
Pemecahan masalah
Bagian ini menampilkan cara menyelesaikan masalah yang terkait dengan multi-cluster Pengaktifan pengontrol gateway.
GatewayClass tidak tersedia di cluster konfigurasi
Error berikut mungkin terjadi saat Anda menjalankan perintah kubectl get gatewayclasses
:
error: the server doesn't have a resource type "gatewayclasses"
Untuk mengatasi masalah ini, instal Gateway API di cluster Anda:
gcloud container clusters update CLUSTER_NAME \
--gateway-api=standard \
--region=COMPUTE_REGION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.COMPUTE_REGION
: region Compute Engine Anda. Untuk cluster zona, gunakan--zone=COMPUTE_ZONE
.
Masalah Umum
- Ada masalah yang telah diketahui pada {i>controller<i} Gateway multi-cluster, yang mungkin gagal dimulai. Untuk menghindari masalah ini, aktifkan Gateway API di cluster konfigurasi dan menyertakan CRD sebelum traffic masuk Armada diaktifkan.
- Gateway Multi-cluster dapat membocorkan resource load balancer dalam skenario berikut:
- Fitur masuk Armada diperbarui dengan cluster konfigurasi baru
yang tidak memiliki semua resource
Gateway
yang ada di cluster konfigurasi. - Fitur masuk Armada dinonaktifkan saat resource
Gateway
yang mereferensikanGatewayClass
multi-cluster yang ada pada konfigurasi .
- Fitur masuk Armada diperbarui dengan cluster konfigurasi baru
yang tidak memiliki semua resource
- Multi-cluster Gateway berjalan sebagai layanan global. Jika Gateway multi-cluster mengalami kegagalan bidang kontrol Armada (Hub) regional, merespons dengan kegagalan statis dan tidak membuat perubahan load balancer lebih lanjut region telah dikembalikan ke layanan.
Langkah selanjutnya
- Untuk men-deploy load balancing multi-cluster, lihat Men-deploy Gateway multi-cluster.
- Untuk mempelajari pengontrol Gateway lebih lanjut, lihat Gateway.