自行設定專案和叢集

使用 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 後,您可以像重新啟動服務一樣重新啟動閘道,以便採用新的控制平面設定。詳情請參閱「安裝及升級閘道」。

事前準備

設定專案

  1. 取得叢集建立所在專案的專案 ID。

    gcloud

    執行下列指令:

    gcloud projects list
    

    控制台

    1. 前往Google Cloud 控制台的「資訊主頁頁面。

      前往「Dashboard」(資訊主頁) 頁面

    2. 按一下頁面頂端的下拉式清單。在隨即顯示的「Select from」(可用的選項) 視窗中,選取所需專案。

      專案 ID 會顯示在專案資訊主頁的「Project info」資訊卡中。

  2. 使用專案 ID 為工作負載資源池建立環境變數:

    export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
    
  3. 設定所需的 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 角色。

  4. 啟用必要的 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 就會為您設定叢集。

  1. 向機群註冊叢集

  2. 初始化專案,讓專案準備好進行安裝。除了其他功能外,這項指令還會建立服務帳戶,讓資料層元件 (例如附屬 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"
    

    指令會以空白的捲號回應:{}

  3. 針對 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
      
  4. 如要為 Google Cloud 叢集上的 GKE 啟用 Workload Identity

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --workload-pool=${WORKLOAD_POOL}
    

    啟用 Workload Identity 最多可能需要 10 到 15 分鐘。

  5. 如要啟用 Google Cloud 叢集中的 GKE,請啟用 GKE 上的 Cloud Monitoring 和 Cloud Logging

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --enable-stackdriver-kubernetes
    

您的專案和叢集現在已可使用 asmcli 進行新安裝作業。

後續步驟