自行設定專案和叢集
使用 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) 或升級
- 安裝必要工具 (外部 Google Cloud、GKE)
設定專案
取得叢集建立所在專案的專案 ID。
gcloud
執行下列指令:
gcloud projects list控制台
前往Google Cloud 控制台的「資訊主頁」頁面。
按一下頁面頂端的下拉式清單,在顯示的「Select from」(可用的選項) 視窗中,選取您的專案。
專案 ID 會顯示在專案資訊主頁的「專案資訊」資訊卡中。
使用專案 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.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必須選取,才能在非Google Cloud 叢集使用服務 UI。 否 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 會為您設定叢集。
初始化專案,準備安裝。這個指令會建立服務帳戶,讓資料平面元件 (例如 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 on Google Cloud 叢集,請設定 Google Cloud CLI 的預設區域或地區。如果未在此處設定預設值,請務必在本頁面的
gcloud container clusters指令中指定--zone或--region選項。如果您有單一區域叢集,請設定預設區域:
gcloud config set compute/zone CLUSTER_LOCATION如果您有地區叢集,請設定預設地區:
gcloud config set compute/region CLUSTER_LOCATION
如果是 GKE on Google Cloud 叢集,請啟用Workload Identity:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --workload-pool=${WORKLOAD_POOL}啟用 Workload Identity 最多可能需要 10 到 15 分鐘。
如果是 GKE on Google Cloud 叢集,請啟用 GKE 上的 Cloud Monitoring 和 Cloud Logging:
gcloud container clusters update CLUSTER_NAME \ --project=PROJECT_ID \ --enable-stackdriver-kubernetes
現在可以使用 asmcli 進行新安裝作業。