Halaman ini berisi penjelasan mengenai skenario Multi-cluster Services (MCS) umum. Skenario yang ditampilkan pada halaman ini memiliki karakteristik berikut:
- Dua cluster GKE: Cluster GKE pertama terdaftar ke fleet project miliknya sendiri. Ini adalah project host fleet. Cluster GKE kedua didaftarkan ke fleet yang sama, meskipun pada skenario tertentu cluster tersebut tidak akan berada dalam project yang sama. Kedua cluster GKE tersebut adalah cluster VPC native.
- Jaringan VPC yang sama: Kedua cluster GKE menggunakan subnet di jaringan VPC Bersama yang sama.
- Workload Identity Federation for GKE diaktifkan di kedua cluster tersebut.
Terminologi
Istilah project host VPC Bersama dan project host fleet GKE memiliki arti yang berbeda.
- Project host VPC Bersama adalah project yang berisi jaringan VPC Bersama.
- Project host fleet GKE adalah project yang berisi fleet, sebagai tempat Anda mendaftarkan cluster.
Skenario
Tabel berikut menjelaskan skenario MCS umum:
Skenario | Project host fleet (project yang berisi cluster pertama) | Lokasi cluster kedua |
---|---|---|
Cluster di project layanan VPC Bersama yang sama | Project layanan VPC Bersama | Project layanan VPC Bersama yang sama seperti pada cluster pertama |
Project host VPC Bersama sebagai project host fleet (Satu cluster di project host VPC Bersama, cluster kedua di project layanan VPC Bersama) | Project host VPC Bersama | Project layanan VPC Bersama |
Cluster di project layanan VPC Bersama yang berbeda | Project layanan VPC Bersama | Project layanan VPC Bersama yang berbeda |
Prasyarat
Sebelum menyiapkan konfigurasi lintas-project MCS, pastikan Anda sudah memahami:
Cluster di project layanan VPC Bersama yang sama
Bagian ini memberikan contoh konfigurasi MCS yang melibatkan dua cluster GKE yang ada di project layanan VPC Bersama yang sama:
- Kedua cluster tersebut menggunakan jaringan VPC Bersama yang sama di
SHARED_VPC_HOST_PROJ
. - Cluster GKE VPC native pertama
FIRST_CLUSTER_NAME
, dengan Workload Identity Federation untuk GKE yang aktif, dibuat diFLEET_HOST_PROJ
. Project host fleet adalah project layanan yang terhubung keSHARED_VPC_HOST_PROJ
dalam skenario ini. - Cluster GKE VPC native kedua
SECOND_CLUSTER_NAME
, dengan Workload Identity Federation untuk GKE yang aktif, juga dibuat diFLEET_HOST_PROJ
.
Mengaktifkan API yang diperlukan
Mengaktifkan API yang diperlukan. Output Google Cloud CLI akan menunjukkan apakah API sudah diaktifkan atau belum.
Aktifkan Cloud DNS API:
gcloud services enable dns.googleapis.com \ --project SHARED_VPC_HOST_PROJ
Dalam skenario ini, project host fleet adalah project layanan yang terhubung ke project host VPC Bersama. Cloud DNS API harus diaktifkan di project host VPC Bersama sebagai tempat jaringan VPC Bersama berada. GKE membuat zona pribadi yang dikelola Cloud DNS di project host dan memberikan otorisasi untuk mengakses jaringan VPC Bersama.
Mengaktifkan GKE Hub (fleet) API. GKE Hub API harus diaktifkan hanya di project host fleet.
gcloud services enable gkehub.googleapis.com \ --project FLEET_HOST_PROJ
Dengan mengaktifkan API ini di project host fleet, Anda akan membuat atau memastikan akun layanan berikut ada:
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com
.Aktifkan Cloud Service Mesh, Resource Manager, dan Multi-cluster Service Discovery API di project host fleet:
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project FLEET_HOST_PROJ
Mengaktifkan layanan Multi-cluster di project host fleet
Aktifkan layanan multi-cluster di project host fleet:
gcloud container fleet multi-cluster-services enable \ --project FLEET_HOST_PROJ
Dengan mengaktifkan layanan multi-cluster di project host fleet, Anda akan membuat atau memastikan akun layanan berikut ada:
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com
.
Membuat binding IAM
Buat binding IAM yang memberikan peran MCS Service Agent kepada akun layanan MCS project host fleet pada project host VPC Bersama:
gcloud projects add-iam-policy-binding SHARED_VPC_HOST_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Buat binding IAM yang memberikan peran Network User kepada akun layanan MCS project host fleet pada project miliknya sendiri:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJ \ --member "serviceAccount:FLEET_HOST_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
Skenario ini menggunakan Workload Identity Federation untuk GKE, sehingga akun layanan GKE Pengimpor MCS pada project host fleet tersebut memerlukan peran Network User untuk project miliknya sendiri.
Ganti kode berikut:
SHARED_VPC_HOST_PROJ
: adalah ID project dari project host VPC BersamaFLEET_HOST_PROJ_NUMBER
: nomor project pada project host fleet, yang merupakan project layanan VPC Bersama untuk skenario iniFLEET_HOST_PROJ
: project ID dari project cluster pertama.
Mendaftarkan cluster ke fleet
Mendaftarkan cluster pertama ke fleet. Flag
--gke-cluster
dapat digunakan untuk perintah ini karena cluster pertama terletak di project yang sama dengan fleet tempat pendaftaran cluster tersebut.gcloud container fleet memberships register MEMBERSHIP_NAME_1 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
Ganti kode berikut:
MEMBERSHIP_NAME_1
: ID unik untuk cluster ini dalam fleet ini. Misalnya, Anda dapat menggunakan nama cluster GKE pertama.FLEET_HOST_PROJ
: project ID untuk project host fleet, yang identik dengan project host VPC Bersama dalam skenario ini.LOCATION
: untuk cluster zona, ditetapkan zona Compute Engine yang berisi cluster; untuk cluster regional, ditetapkan region Compute Engine yang berisi cluster.FIRST_CLUSTER_NAME
: nama cluster pertama.
Mendaftarkan cluster kedua ke project host fleet. Flag
--gke-cluster
dapat digunakan untuk perintah ini karena cluster kedua juga berada di project host fleet.gcloud container fleet memberships register MEMBERSHIP_NAME_2 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/SECOND_CLUSTER_NAME
Ganti kode berikut:
MEMBERSHIP_NAME_2
: ID unik untuk cluster ini dalam fleet ini. Misalnya, Anda dapat menggunakan nama cluster GKE kedua.FLEET_HOST_PROJ
: project ID untuk project host fleet, yang identik dengan project host VPC Bersama dalam skenario ini.LOCATION
: untuk cluster zona, ditetapkan zona Compute Engine yang berisi cluster; untuk cluster regional, ditetapkan region Compute Engine yang berisi cluster.SECOND_CLUSTER_NAME
: nama cluster kedua.
Membuat namespace umum untuk cluster
Pastikan setiap cluster memiliki namespace untuk berbagi Layanan. Jika perlu, buat namespace menggunakan perintah berikut di setiap cluster:
kubectl create ns NAMESPACE
Mengganti
NAMESPACE
dengan nama untuk namespace.
Project host VPC bersama sebagai project host fleet
Bagian ini memberikan contoh konfigurasi MCS yang melibatkan dua cluster GKE yang ada:
- Cluster GKE VPC native pertama
FIRST_CLUSTER_NAME
, dengan Workload Identity Federation untuk GKE diaktifkan, berhasil dibuat diFLEET_HOST_PROJ
. Project host fleet juga merupakan project host VPC Bersama dalam skenario ini. - Cluster GKE VPC native kedua
SECOND_CLUSTER_NAME
, dengan Workload Identity Federation untuk GKE yang aktif, berhasil dibuat diSECOND_CLUSTER_PROJ
.
Mengaktifkan API yang diperlukan
Mengaktifkan API yang diperlukan. Output Google Cloud CLI akan menunjukkan apakah API sudah diaktifkan atau belum.
Aktifkan Cloud DNS API:
gcloud services enable dns.googleapis.com \ --project FLEET_HOST_PROJ
Dalam skenario ini, project host fleet juga menjadi project host VPC Bersama. Cloud DNS API harus diaktifkan di project host VPC Bersama sebagai tempat jaringan VPC Bersama berada. GKE membuat zona pribadi yang dikelola Cloud DNS di project host dan memberikan otorisasi untuk mengakses jaringan VPC Bersama.
Mengaktifkan GKE Hub (fleet) API. GKE Hub API harus diaktifkan hanya di project host fleet.
gcloud services enable gkehub.googleapis.com \ --project FLEET_HOST_PROJ
Dengan mengaktifkan GKE Hub API di project host fleet, Anda akan membuat atau memastikan akun layanan berikut ada:
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com
.Aktifkan Cloud Service Mesh, Resource Manager, dan Multi-cluster Service Discovery API di project host fleet dan di project cluster kedua:
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project FLEET_HOST_PROJ
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project SECOND_CLUSTER_PROJ
Mengaktifkan layanan Multi-cluster di project host fleet
Aktifkan layanan multi-cluster di project host fleet:
gcloud container fleet multi-cluster-services enable \ --project FLEET_HOST_PROJ
Dengan mengaktifkan layanan multi-cluster di project host fleet, Anda akan membuat atau memastikan akun layanan berikut ada:
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com
.
Membuat binding IAM
Buat binding IAM yang memberikan peran GKE Service Agent kepada akun layanan fleet GKE project host fleet pada project cluster kedua:
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent
Buat binding IAM yang memberikan peran MCS Service Agent kepada akun layanan MCS project host fleet pada project cluster kedua:
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Buat binding IAM yang memberikan peran Network User ke setiap akun layanan MCS project untuk project-nya sendiri:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJ \ --member "serviceAccount:FLEET_HOST_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:SECOND_CLUSTER_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
Skenario ini menggunakan Workload Identity Federation untuk GKE, sehingga setiap akun layanan GKE Pengimpor MCS project memerlukan peran Network User untuk projectnya sendiri.
Ganti kode berikut:
SECOND_CLUSTER_PROJ
: project ID dari project cluster keduaFLEET_HOST_PROJ
: project ID dari project cluster pertama.FLEET_HOST_PROJ_NUMBER
: nomor project dari project host fleet, yang sama dengan project host VPC Bersama untuk skenario ini
Mendaftarkan cluster ke fleet
Mendaftarkan cluster pertama ke fleet. Flag
--gke-cluster
dapat digunakan untuk perintah ini karena cluster pertama terletak di project yang sama dengan fleet tempat pendaftaran cluster tersebut.gcloud container fleet memberships register MEMBERSHIP_NAME_1 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
Ganti kode berikut:
MEMBERSHIP_NAME_1
: ID unik untuk cluster ini dalam fleet ini. Misalnya, Anda dapat menggunakan nama cluster GKE pertama.FLEET_HOST_PROJ
: project ID untuk project host fleet, yang identik dengan project host VPC Bersama dalam skenario ini.LOCATION
: untuk cluster zona, ditetapkan zona Compute Engine yang berisi cluster; untuk cluster regional, ditetapkan region Compute Engine yang berisi cluster.FIRST_CLUSTER_NAME
: nama cluster pertama.
Mendaftarkan cluster kedua ke fleet. Flag
--gke-uri
harus digunakan untuk perintah ini karena cluster kedua tidak berada di project yang sama dengan fleet. Anda bisa mendapatkan seluruh URI cluster dengan menjalankangcloud container clusters list --uri
.gcloud container fleet memberships register MEMBERSHIP_NAME_2 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-uri https://container.googleapis.com/v1/projects/SECOND_CLUSTER_PROJ/locations/LOCATION/clusters/SECOND_CLUSTER_NAME
Ganti kode berikut:
MEMBERSHIP_NAME_2
: ID unik untuk cluster ini dalam fleet ini. Misalnya, Anda dapat menggunakan nama cluster GKE kedua.FLEET_HOST_PROJ
: project ID untuk project host fleet, yang identik dengan project host VPC Bersama dalam skenario ini.LOCATION
: menggantiLOCATION
dengan:- zona Compute Engine cluster, jika cluster yang ada berupa cluster zona
- region Compute Engine cluster, jika cluster yang ada berupa cluster regional
SECOND_CLUSTER_PROJECT
: project yang berisi cluster kedua.SECOND_CLUSTER_NAME
: nama cluster kedua.
Membuat namespace umum untuk cluster
Pastikan setiap cluster memiliki namespace untuk berbagi Layanan. Jika perlu, buat namespace menggunakan perintah berikut di setiap cluster:
kubectl create ns NAMESPACE
Mengganti
NAMESPACE
dengan nama untuk namespace.
Cluster di project layanan VPC Bersama yang berbeda
Bagian ini memberikan contoh konfigurasi MCS yang melibatkan dua cluster GKE yang ada, dan masing-masing dalam project layanan VPC Bersama yang berbeda.
- Kedua cluster tersebut menggunakan jaringan VPC Bersama yang sama di
SHARED_VPC_HOST_PROJ
. - Cluster GKE VPC native pertama
FIRST_CLUSTER_NAME
, dengan Workload Identity Federation untuk GKE diaktifkan, berhasil dibuat diFLEET_HOST_PROJ
. Project host fleet adalah project layanan yang terhubung keSHARED_VPC_HOST_PROJ
dalam skenario ini. - Cluster GKE VPC native kedua
SECOND_CLUSTER_NAME
, dengan Workload Identity Federation untuk GKE diaktifkan, berhasil dibuat diSECOND_CLUSTER_PROJ
.SECOND_CLUSTER_PROJ
juga merupakan project layanan yang terhubung keSHARED_VPC_HOST_PROJ
dalam skenario ini.
Mengaktifkan API yang diperlukan
Mengaktifkan API yang diperlukan. Output Google Cloud CLI akan menunjukkan apakah API sudah diaktifkan atau belum.
Aktifkan Cloud DNS API:
gcloud services enable dns.googleapis.com \ --project SHARED_VPC_HOST_PROJ
Dalam skenario ini, project host fleet adalah project layanan yang terhubung ke project host VPC Bersama. Cloud DNS API harus diaktifkan di project host VPC Bersama sebagai tempat jaringan VPC Bersama berada. GKE membuat zona pribadi yang dikelola Cloud DNS di project host dan memberikan otorisasi untuk mengakses jaringan VPC Bersama.
GKE Hub (fleet) API. GKE Hub API hanya boleh diaktifkan di project host fleet
FLEET_HOST_PROJ
.gcloud services enable gkehub.googleapis.com \ --project FLEET_HOST_PROJ
Dengan mengaktifkan API ini di project host fleet, Anda akan membuat atau memastikan akun layanan berikut ada:
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com
.Aktifkan Cloud Service Mesh, Resource Manager, dan Multi-cluster Service Discovery API di project host fleet dan di project cluster kedua:
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project=FLEET_HOST_PROJ
gcloud services enable trafficdirector.googleapis.com \ cloudresourcemanager.googleapis.com \ multiclusterservicediscovery.googleapis.com \ --project SECOND_CLUSTER_PROJ
Mengaktifkan layanan Multi-cluster di project host fleet
Aktifkan layanan multi-cluster di project host fleet:
gcloud container fleet multi-cluster-services enable \ --project FLEET_HOST_PROJ
Dengan mengaktifkan layanan multi-cluster di project host fleet, Anda akan membuat atau memastikan akun layanan berikut ada:
service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com
.
Membuat binding IAM
Buat binding IAM yang memberikan peran GKE Service Agent kepada akun layanan Hub GKE project host fleet pada project cluster kedua:
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-gkehub.iam.gserviceaccount.com" \ --role roles/gkehub.serviceAgent
Buat binding IAM yang memberikan peran MCS Service Agent kepada akun layanan MCS project host fleet pada project cluster kedua:
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Buat binding IAM yang memberikan peran MCS Service Agent kepada akun layanan MCS project host fleet pada project host VPC Bersama:
gcloud projects add-iam-policy-binding SHARED_VPC_HOST_PROJ \ --member "serviceAccount:service-FLEET_HOST_PROJ_NUMBER@gcp-sa-mcsd.iam.gserviceaccount.com" \ --role roles/multiclusterservicediscovery.serviceAgent
Buat binding IAM yang memberikan peran Network User ke setiap akun layanan MCS project untuk project-nya sendiri:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJ \ --member "serviceAccount:FLEET_HOST_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
gcloud projects add-iam-policy-binding SECOND_CLUSTER_PROJ \ --member "serviceAccount:SECOND_CLUSTER_PROJ.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role roles/compute.networkViewer
Skenario ini menggunakan Workload Identity Federation untuk GKE, sehingga setiap akun layanan GKE Pengimpor MCS project memerlukan peran Network User untuk projectnya sendiri.
Ganti baris berikut sesuai kebutuhan pada perintah sebelumnya:
SECOND_CLUSTER_PROJ
: project ID dari project cluster kedua.SHARED_VPC_HOST_PROJ
adalah project ID dari project host VPC Bersama. Pada contoh ini, kedua cluster menggunakan jaringan VPC Bersama yang sama, tetapi keduanya tidak berada di project host VPC Bersama.FLEET_HOST_PROJ
: project ID dari project cluster pertama.FLEET_HOST_PROJ_NUMBER
: nomor project dari project host fleet.
Mendaftarkan cluster ke fleet
Mendaftarkan cluster pertama ke fleet. Flag
--gke-cluster
dapat digunakan untuk perintah ini karena cluster pertama terletak di project yang sama dengan fleet tempat pendaftaran cluster tersebut.gcloud container fleet memberships register MEMBERSHIP_NAME_1 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-cluster=LOCATION/FIRST_CLUSTER_NAME
Ganti kode berikut:
MEMBERSHIP_NAME_1
: ID unik untuk cluster ini dalam fleet ini. Misalnya, Anda dapat menggunakan nama cluster GKE pertama.FLEET_HOST_PROJ
: project ID untuk project host fleet, yang identik dengan project host VPC Bersama dalam skenario ini.LOCATION
: untuk cluster zona, ditetapkan zona Compute Engine yang berisi cluster; untuk cluster regional, ditetapkan region Compute Engine yang berisi cluster.FIRST_CLUSTER_NAME
: nama cluster pertama.
Mendaftarkan cluster kedua ke fleet. Flag
--gke-uri
harus digunakan untuk perintah ini karena cluster kedua tidak berada di project yang sama dengan fleet. Anda bisa mendapatkan seluruh URI cluster dengan menjalankangcloud container clusters list --uri
.gcloud container fleet memberships register MEMBERSHIP_NAME_2 \ --project FLEET_HOST_PROJ \ --enable-workload-identity \ --gke-uri https://container.googleapis.com/v1/projects/SECOND_CLUSTER_PROJ/locations/LOCATION/clusters/SECOND_CLUSTER_NAME
Ganti kode berikut:
MEMBERSHIP_NAME_2
: ID unik untuk cluster ini dalam fleet ini. Misalnya, Anda dapat menggunakan nama cluster GKE kedua.FLEET_HOST_PROJ
: project ID untuk project host fleet, yang identik dengan project host VPC Bersama dalam skenario ini.LOCATION
: menggantiLOCATION
dengan:- zona Compute Engine cluster, jika cluster yang ada berupa cluster zona
- region Compute Engine cluster, jika cluster yang ada berupa cluster regional
SECOND_CLUSTER_PROJECT
: project yang berisi cluster kedua.SECOND_CLUSTER_NAME
: nama cluster kedua.
Membuat namespace umum untuk cluster
Pastikan setiap cluster memiliki namespace untuk berbagi Layanan. Jika perlu, buat namespace menggunakan perintah berikut di setiap cluster:
kubectl create ns NAMESPACE
Mengganti
NAMESPACE
dengan nama untuk namespace.
Langkah berikutnya
- Mempelajari cara menggunakan MCS.