自行設定專案和 GKE 叢集
<0x0 Google Cloud 詳情請參閱 Cloud Service Mesh 總覽。使用 asmcli 安裝 Cloud Service Mesh 時,如果加入 --enable_all 標記或更精細的啟用標記,系統可以為您設定專案和 GKE on Google Cloud 叢集。如果您想自行設定,而不是讓 asmcli 進行變更,請按照本頁的步驟操作。
如果您已安裝舊版 Cloud Service Mesh,則不需要對專案或叢集進行任何變更,只要使用 asmcli 升級至最新版 Cloud Service Mesh 即可。
根據預設,asmcli 不會安裝 istio-ingressgateway。建議您分開部署及管理控制層和閘道。Cloud Service Mesh 支援閘道部署的自動插入功能,可簡化 Cloud Service Mesh 升級程序。升級 Cloud Service Mesh 後,請重新啟動閘道 (就像重新啟動服務一樣),以擷取新的控制層設定。詳情請參閱「安裝及升級閘道」。
事前準備
設定專案
取得叢集建立所在專案的專案 ID 和專案編號。
gcloud
執行下列指令:
gcloud projects list控制台
前往Google Cloud 控制台的「資訊主頁」頁面。
按一下頁面頂端的下拉式清單,在顯示的「Select from」(可用的選項) 視窗中,選取您的專案。
專案資訊主頁的「Project info」(專案資訊) 卡片會顯示專案 ID 和專案編號。
建立下列的環境變數:
使用專案 ID 設定工作負載集區:
export WORKLOAD_POOL=PROJECT_ID.svc.id.goog使用專案編號設定網格 ID:
export MESH_ID="proj-PROJECT_NUMBER"
設定必要的 Identity and Access Management (IAM) 角色。如果您是專案擁有者,則具備完成安裝程序的所有必要權限。如果您不是專案擁有者,請要求專案擁有者授予您下列特定 IAM 角色。在下列指令中,請將
PROJECT_ID替換為上一步中的專案 ID,並將GCP_EMAIL_ADDRESS替換為您用來登入 Google Cloud的帳戶。ROLES=( 'roles/servicemanagement.admin' \ 'roles/serviceusage.serviceUsageAdmin' \ 'roles/meshconfig.admin' \ 'roles/compute.admin' \ 'roles/container.admin' \ 'roles/resourcemanager.projectIamAdmin' \ 'roles/iam.serviceAccountAdmin' \ 'roles/iam.serviceAccountKeyAdmin' \ 'roles/gkehub.admin') for role in "${ROLES[@]}" do gcloud projects add-iam-policy-binding PROJECT_ID \ --member "user:GCP_EMAIL_ADDRESS" \ --role="$role" done執行
asmcli時,如果包含--enable_all或--enable_gcp_iam_roles旗標,系統會為您設定必要的 IAM 角色。啟用必要的 Google API:
gcloud services enable \ --project=PROJECT_ID \ mesh.googleapis.com除了
mesh.googleapis.com之外,這項指令也會啟用下列 API:API 目的 可停用 meshconfig.googleapis.comCloud Service Mesh 會使用 Mesh Configuration API,將設定資料從網格轉送至 Google Cloud。此外,啟用 Mesh Configuration API 後,您就能在 Google Cloud 控制台中存取 Cloud Service Mesh 頁面,並使用 Cloud Service Mesh 憑證授權單位。 否 meshca.googleapis.com與代管 Cloud Service Mesh 使用的 Cloud Service Mesh 憑證授權單位相關。 否 container.googleapis.com建立 Google Kubernetes Engine (GKE) 叢集時必須具備這項權限。 否 gkehub.googleapis.com管理網格時必須使用機群。 否 monitoring.googleapis.com擷取網格工作負載的遙測資料時,必須使用這項服務。 否 stackdriver.googleapis.com使用 Services UI 時必須提供。 否 opsconfigmonitoring.googleapis.com必須使用 Services UI 才能關閉叢集。Google Cloud 否 connectgateway.googleapis.com這是必要步驟,代管 Cloud Service Mesh 控制層才能存取網格工作負載。 是* trafficdirector.googleapis.com啟用高可用性且可擴充的代管控制層。 是* networkservices.googleapis.com啟用高可用性且可擴充的代管控制層。 是* networksecurity.googleapis.com啟用高可用性且可擴充的代管控制層。 是* 啟用 API 可能需要一分鐘以上的時間才能完成。啟用 API 後,您會看到類似以下的輸出內容:
Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished successfully.
執行
asmcli時,如果加入--enable_all或--enable_apis旗標,系統會為您啟用必要的 API。
設定叢集
如果您加入 --enable_all 旗標,或其中一個更精細的啟用旗標,asmcli 會為您設定叢集。
設定 Google Cloud CLI 的預設區域或地區。如果未在此處設定預設值,請務必在本頁面的
gcloud container clusters指令中指定--zone或--region選項。如果您有單一區域叢集,請設定預設區域:
gcloud config set compute/zone CLUSTER_LOCATION如果您有地區叢集,請設定預設地區:
gcloud config set compute/region CLUSTER_LOCATION
在叢集上設定
mesh_idlabel。如果叢集含有您要保留的現有標籤,新增mesh_id標籤時,請務必一併納入這些標籤。如要查看叢集是否已有標籤,請按照下列步驟操作:
gcloud container clusters describe CLUSTER_NAME \ --project PROJECT_ID在輸出內容中尋找
resourceLabels欄位。每個標籤都會儲存在resourceLabels欄位下方的獨立行中,例如:resourceLabels: csm: '' env: dev release: stable
為方便起見,您可以將標籤新增至環境變數。在下列指令中,請將
YOUR_EXISTING_LABELS替換為叢集上現有標籤的逗號分隔清單,格式為KEY=VALUE,例如:env=dev,release=stableexport EXISTING_LABELS="YOUR_EXISTING_LABELS"設定
mesh_id標籤:如果叢集含有您要保留的現有標籤,請使用
mesh_id和現有標籤更新叢集:gcloud container clusters update CLUSTER_NAME \ --project PROJECT_ID \ --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}如果叢集沒有任何現有標籤,請只使用
mesh_id標籤更新叢集:gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --update-labels=mesh_id=${MESH_ID}
-
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}啟用 Workload Identity 最多可能需要 10 到 15 分鐘。
初始化專案,準備安裝。這個指令會建立服務帳戶,讓資料平面元件 (例如 Sidecar Proxy) 安全存取專案的資料和資源。在下列指令中,將
FLEET_PROJECT_ID替換為車隊主專案:curl --request POST \ --header "Authorization: Bearer $(gcloud auth print-access-token)" \ --header "Content-Type: application/json" \ --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \ "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"指令會以空白的大括號回應:
{}在 GKE 上啟用 Cloud Monitoring 和 Cloud Logging:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
現在,您可以使用 asmcli 進行新安裝作業。