自行設定專案和叢集
使用 asmcli
安裝 Cloud Service Mesh 時,如果您加入 --enable_all
標記或更精細的啟用標記,系統就能為您設定專案和叢集。如果您想自行進行設定,而非由 asmcli
進行變更,請按照本頁的步驟操作。
如果您已安裝舊版 Cloud Service Mesh,請先使用 asmcli
升級至最新版 Cloud Service Mesh,再對專案或叢集進行任何變更。
根據預設,asmcli
不會安裝 istio-ingressgateway
。建議您分別部署及管理控制層和閘道。Cloud Service Mesh 支援閘道部署的自動注入功能,可簡化 Cloud Service Mesh 升級作業。升級 Cloud Service Mesh 後,您可以像重新啟動服務一樣重新啟動閘道,以便採用新的控制平面設定。詳情請參閱「安裝及升級閘道」。
事前準備
- 查看前置條件和必要條件 ( Google Cloud 以外,GKE)
- 規劃安裝作業 ( Google Cloud 以外,GKE) 或升級
- 安裝必要工具 (outside Google Cloud、GKE)
設定專案
取得叢集建立所在專案的專案 ID。
gcloud
執行下列指令:
gcloud projects list
控制台
前往Google Cloud 控制台的「資訊主頁」頁面。
按一下頁面頂端的下拉式清單。在隨即顯示的「Select from」(可用的選項) 視窗中,選取所需專案。
專案 ID 會顯示在專案資訊主頁的「Project info」資訊卡中。
使用專案 ID 為工作負載資源池建立環境變數:
export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
設定所需的 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.com
Cloud 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
必須提供這項權限,才能使用服務 UI。 否 opsconfigmonitoring.googleapis.com
必須使用服務 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
就會為您設定叢集。
初始化專案,讓專案準備好進行安裝。除了其他功能外,這項指令還會建立服務帳戶,讓資料層元件 (例如附屬 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"
指令會以空白的捲號回應:
{}
針對 Google Cloud 叢集上的 GKE,請設定 Google Cloud CLI 的預設區域或地區。如果您未在此處設定預設值,請務必在本頁的
gcloud container clusters
指令中指定--zone
或--region
選項。如果您有單一區域叢集,請設定預設區域:
gcloud config set compute/zone CLUSTER_LOCATION
如果您有地區叢集,請設定預設地區:
gcloud config set compute/region CLUSTER_LOCATION
如要為 Google Cloud 叢集上的 GKE 啟用 Workload Identity:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}
啟用 Workload Identity 最多可能需要 10 到 15 分鐘。
如要啟用 Google Cloud 叢集中的 GKE,請啟用 GKE 上的 Cloud Monitoring 和 Cloud Logging:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
您的專案和叢集現在已可使用 asmcli
進行新安裝作業。