準備為 Cloud Service Mesh 設定 Gateway API
本頁說明如何在叢集中安裝閘道所需的自訂資源定義。
限制
- 不支援在同一機群中混用
gateway
config-api 和istio
config-api 叢集。 gateway
config-api 叢集不支援多叢集服務探索和負載平衡。- 如果叢集是使用現有的
--management automatic
旗標加入,則叢集會開始使用istio
設定 API,且無法變更為gateway
API。 - 系統僅支援 FQDN。系統不支援簡稱。
必要條件
本指南假設您已建立 Google Cloud 專案並安裝 kubectl
。
事前準備
- 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.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
-
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.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
- 為叢集產生 kubeconfig 項目:
- CLUSTER_NAME 是叢集名稱
- LOCATION 是叢集的位置
- PROJECT_ID 是叢集的專案 ID
建立 GKE 叢集:
gcloud container clusters create CLUSTER_NAME \ --location=LOCATION \ --enable-ip-alias \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --release-channel=regular \ --project=PROJECT_ID \ --gateway-api=standard
其中:
- CLUSTER_NAME 是叢集名稱
- LOCATION 是叢集的位置
- PROJECT_ID 是叢集的專案 ID
為 GKE 啟用 Workload Identity Federation:
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog
在節點上執行 GKE 中繼資料伺服器:
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATA
將叢集註冊至機群:
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
確認叢集已向機群註冊:
gcloud container hub memberships list --project=PROJECT_ID
輸出內容類似如下:
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
授予
trafficdirector.client
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"
授予
container.developer
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role "roles/container.developer"
其中 PROJECT_NUMBER 是您的專案編號。
授予
compute.networkAdmin
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role "roles/compute.networkAdmin"
其中 PROJECT_NUMBER 是您的專案編號。
啟用網狀網路功能:
gcloud container hub mesh enable --project PROJECT_ID
更新網格以使用 Gateway API:
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
說明 Cloud Service Mesh 資源的狀態,確認更新:
gcloud alpha container fleet mesh describe
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
其中:
建立及註冊 GKE 叢集
設定權限
請注意,下列指令會授予所有已驗證使用者權限,但您可以使用 GKE 適用的工作負載身分聯盟,只授予特定帳戶權限。
啟用 Cloud Service Mesh
安裝自訂資源定義
安裝 GRPCRoute 自訂資源定義 (CRD):
curl https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.1.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
| kubectl apply -f -
輸出內容類似如下:
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created