Bersiap untuk melakukan penyiapan dengan GKE Gateway API
Konfigurasi yang dijelaskan dalam dokumen ini didukung untuk pelanggan Pratinjau, tetapi kami tidak merekomendasikannya untuk pengguna Cloud Service Mesh baru. Untuk selengkapnya lihat ringkasan Cloud Service Mesh.
Panduan ini menjelaskan cara menyiapkan lingkungan untuk menggunakan Google Kubernetes Engine Gateway API dengan Cloud Service Mesh. Secara umum, Anda perlu lakukan langkah-langkah berikut:
- Aktifkan layanan Google Cloud API yang diperlukan.
- Men-deploy cluster GKE.
- Mengonfigurasi izin IAM.
- Instal definisi resource kustom (CRD) yang diperlukan.
- Daftarkan cluster ke fleet.
- [Opsional] Mengaktifkan Layanan multi-cluster (Penemuan Layanan Multi-Cluster).
- Aktifkan mesh layanan.
Jika Anda tidak menggunakan GKE, gunakan
API pemilihan rute layanan
dan buat resource Mesh
.
Sebelum memulai
Pastikan komponen deployment Anda memenuhi persyaratan berikut:
- GKE harus versi 1.20 atau yang lebih baru.
- Hanya pesawat data dengan
xDS versi 3 API
dan yang lebih baru didukung.
- Minimum Envoy versi 1.20.0
- Versi generator bootstrap gRPC minimum v0.14.0
- Cluster GKE harus berada dalam Mode VPC native (IP Alias).
- Cluster Kubernetes yang dikelola sendiri di Compute Engine, dibandingkan dengan GKE tidak didukung.
- Batasan tambahan apa pun yang tercantum untuk Fungsi gateway di GKE berlaku untuk integrasi Cloud Service Mesh GKE Gateway API.
- Akun layanan untuk node dan Pod GKE harus memiliki izin untuk mengakses Traffic Director API. Untuk informasi selengkapnya tentang izin yang diperlukan. Lihat Mengaktifkan akun layanan untuk mengakses Traffic Director API.
- Penggunaan resource per project dan batasan kuota layanan backend berlaku.
Mengaktifkan layanan Google Cloud API yang diperlukan
Jalankan perintah berikut untuk mengaktifkan API yang diperlukan, jika belum diaktifkan di project Anda:
gcloud services enable --project=PROJECT_ID \ container.googleapis.com \ gkehub.googleapis.com \ multiclusteringress.googleapis.com \ trafficdirector.googleapis.com \ networkservices.googleapis.com
Jika berencana untuk menyertakan lebih dari satu cluster di fleet Anda, aktifkan API
multiclusterservicediscovery
:gcloud services enable --project=PROJECT_ID \ multiclusterservicediscovery.googleapis.com
Menerapkan cluster GKE
Gunakan petunjuk ini untuk men-deploy cluster GKE.
Membuat cluster GKE bernama
gke-1
dius-west1-a
zona:gcloud container clusters create gke-1 \ --zone=us-west1-a \ --enable-ip-alias \ --workload-pool=PROJECT_ID.svc.id.goog \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --enable-mesh-certificates \ --release-channel=regular \ --project=PROJECT_ID
--enable-ip-alias
: Flag ini membuat cluster VPC native dan membuat Pod Alamat IP yang dapat dirutekan dalam jaringan VPC.--workload-pool
: Flag ini memungkinkan cluster Anda berpartisipasi dalam workload identity pool.--scopes
: Flag ini menentukan cakupan OAuth yang ditetapkan ke node cluster.--release-channel
: Tanda ini menentukan saluranregular
.--enable-mesh-certificates
: Flag ini mengaktifkan konfigurasi Cloud Service Mesh fitur mTLS otomatis jika berpotensi tersedia di masa mendatang.
Dapatkan kredensial cluster:
gcloud container clusters get-credentials gke-1 --zone=us-west1-a
Ganti nama konteks cluster:
kubectl config rename-context gke_PROJECT_ID_us-west1-a_gke-1 gke-1
Mengonfigurasi izin IAM untuk bidang data
Untuk deployment demonstrasi ini, Anda memberikan peran klien Cloud Service Mesh
roles/trafficdirector.client
untuk semua pengguna yang diautentikasi, termasuk semua layanan
Google Cloud, di cluster GKE. Peran IAM ini
yang diperlukan untuk memberikan otorisasi kepada klien Cloud Service Mesh di bidang data, seperti
Envoys, untuk menerima konfigurasi dari Cloud Service Mesh.
Jika Anda tidak ingin memberikan peran klien
ke semua pengguna yang diotentikasi dan
memilih membatasi peran ke akun layanan, lihat GKE
panduan identitas workload
untuk menyiapkan akun layanan Kubernetes khusus dengan peran
roles/trafficdirector.client
untuk layanan Anda.
Berikan peran
client
ke akun layanan:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"
Menginstal definisi resource kustom yang diperlukan
Instal definisi resource kustom (CRD) yang diperlukan untuk menggunakan Gateway API dengan Cloud Service Mesh:
kubectl apply -k "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.6.0"
kubectl kustomize "https://github.com/GoogleCloudPlatform/gke-networking-recipes.git/gateway-api/config/mesh/crd" \ | kubectl apply -f -
Pastikan bahwa CRD yang diperlukan diinstal secara otomatis di cluster dengan menjalankan perintah berikut:
kubectl get crds
Outputnya mencantumkan CRD berikut dan lainnya yang tidak terkait dengan Gateway API, semua dengan tanggal pembuatan yang berbeda:
NAME CREATED AT gatewayclasses.gateway.networking.k8s.io 2023-08-08T05:29:03Z gateways.gateway.networking.k8s.io 2023-08-08T05:29:03Z grpcroutes.gateway.networking.k8s.io 2023-08-08T05:29:03Z httproutes.gateway.networking.k8s.io 2023-08-08T05:29:03Z referencegrants.gateway.networking.k8s.io 2023-08-08T05:29:04Z tcproutes.gateway.networking.k8s.io 2023-08-08T05:29:04Z tdgrpcroutes.net.gke.io 2023-08-08T05:29:23Z tdmeshes.net.gke.io 2023-08-08T05:29:23Z tlsroutes.gateway.networking.k8s.io 2023-08-08T05:29:05Z udproutes.gateway.networking.k8s.io 2023-08-08T05:29:05Z
Resource kustom tdmeshes.net.gke.io
dan tdgrpcroutes.net.gke.io
telah diinstal
di langkah sebelumnya.
CRD yang merupakan bagian dari grup API net.gke.io
adalah
yang spesifik untuk GKE. Resource ini bukan bagian dari OSS
Implementasi Gateway API, yang ada dalam grup API networking.k8s.io
.
Mendaftarkan cluster ke fleet
Setelah cluster berhasil dibuat, Anda harus mendaftarkan cluster ke perangkat seluler. Dengan mendaftarkan cluster ke fleet, Anda dapat mengaktifkan fitur secara selektif pada cluster yang terdaftar.
Daftarkan cluster ke fleet:
gcloud container hub memberships register gke-1 \ --gke-cluster us-west1-a/gke-1 \ --location global \ --project=PROJECT_ID
Pastikan bahwa cluster terdaftar dengan perangkat Anda:
gcloud container hub memberships list --project=PROJECT_ID
Outputnya mirip dengan hal berikut ini:
NAME EXTERNAL_ID gke-1 657e835d-3b6b-4bc5-9283-99d2da8c2e1b
(Opsional) Mengaktifkan Penemuan Layanan Multi-Cluster
Fitur Penemuan Layanan Multi-Cluster memungkinkan Anda mengekspor cluster lokal ke semua cluster yang terdaftar dalam fleet. Langkah ini opsional jika Anda tidak berencana untuk menyertakan lebih dari satu cluster perangkat seluler.
Mengaktifkan Penemuan Layanan Multi-Cluster:
gcloud container hub multi-cluster-services enable \ --project PROJECT_ID
Berikan peran Identity and Access Management (IAM) yang diperlukan untuk Penemuan Layanan Multi-Cluster:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:PROJECT_ID.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role "roles/compute.networkViewer"
Pastikan Penemuan Layanan Multi-Cluster telah diaktifkan untuk cluster yang terdaftar. Ini mungkin butuh waktu beberapa menit hingga semua cluster ditampilkan:
gcloud container hub multi-cluster-services describe --project=PROJECT_ID
Anda akan melihat langganan untuk
gke-1
, yang mirip dengan berikut ini:createTime: '2021-04-02T19:34:57.832055223Z' membershipStates projects/PROJECT_NUM/locations/global/memberships/gke-1: state: code: OK description: Firewall successfully updated updateTime: '2021-05-27T11:03:07.770208064Z' name: projects/PROJECT_NUM/locations/global/features/multiclusterservicediscovery resourceState: state: ACTIVE spec: {} updateTime: '2021-04-02T19:34:58.983512446Z'
Mengaktifkan mesh layanan GKE Cloud Service Mesh
Di bagian ini, Anda akan mengaktifkan mesh layanan.
Mengaktifkan mesh layanan GKE Cloud Service Mesh cluster yang didaftarkan ke fleet Anda:
gcloud container hub ingress enable \ --config-membership=projects/PROJECT_ID/locations/global/memberships/gke-1 \ --project=PROJECT_ID
Pastikan fitur tersebut diaktifkan:
gcloud container hub ingress describe --project=PROJECT_ID
Anda akan melihat output yang mirip dengan berikut ini:
createTime: '2021-05-26T13:27:37.460383111Z' membershipStates: projects/PROJECT_NUM/locations/global/memberships/gke-1: state: code: OK updateTime: '2021-05-27T15:08:19.397896080Z' resourceState: state: ACTIVE spec: multiclusteringress: configMembership: projects/PROJECT_ID/locations/global/memberships/gke-1 state: state: code: OK description: Ready to use updateTime: '2021-05-26T13:27:37.899549111Z' updateTime: '2021-05-27T15:08:19.397895711Z'
Memberikan peran Identity and Access Management (IAM) berikut yang diperlukan oleh pengontrol Gateway API:
- roles/container.developer — Peran ini memungkinkan pengontrol untuk mengelola resource Kubernetes dalam cluster.
- roles/compute.networkAdmin — Peran ini memungkinkan pengontrol untuk mengelola mesh layanan Cloud Service Mesh konfigurasi standar.
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value (projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-multiclusteringress." \ --role "roles/container.developer"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-multiclusteringress." \ --role "roles/compute.networkAdmin"
Langkah selanjutnya
Untuk menyiapkan contoh deployment, baca panduan ini:
- Menyiapkan mesh layanan file bantuan Envoy
- Menyiapkan mesh layanan gRPC tanpa proxy
- Menyiapkan mesh layanan multi-cluster