Cloud Service Mesh (代管) 的 VPC Service Controls

Cloud Service Mesh (代管) 支援 VPC Service Controls,這是新控制層的正式版功能。

如要確認控制平面是否支援 VPC Service Controls GA,請檢查會員資格的網格功能狀態,是否符合 VPCSC_GA_SUPPORTED 條件。

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

輸出結果會與下列內容類似:

(...)
membershipStates:
  projects/FLEET_PROJECT_NUMBER/locations/MEMBERSHIP_LOCATION/memberships/MEMBERSHIP_ID:
    servicemesh:
      conditions:
      - code: VPCSC_GA_SUPPORTED
        details: This control plane supports VPC Service Controls GA.
        documentationLink: http://cloud.google.com/service-mesh/docs/managed/VPC Service Controls
        severity: INFO
(...)

如果您有現有的控制平面,但未回報 VPCSC_GA_SUPPORTED 條件,且想採用 VPC Service Controls,請與支援團隊聯絡。

事前準備

機構層級設定 VPC Service Controls 機構政策和服務範圍。確認您具備管理 VPC Service Controls 的適當角色

設定 VPC Service Controls 服務範圍

建立或更新服務範圍

  1. 將叢集專案和機群專案新增至服務範圍。系統不支援將服務網格分散在多個 VPC Service Controls 範圍中。

  2. 將受限制的服務新增至服務範圍。

    您必須將特定服務新增至服務邊界中的允許和受限服務清單,才能讓 Cloud Service Mesh 叢集存取這些服務。這些服務的存取權也會在叢集的虛擬私有雲 (VPC) 網路中受到限制。

    如未新增這些服務,可能會導致 Cloud Service Mesh 安裝失敗或無法正常運作。舉例來說,如果您未將 Mesh Configuration API 新增至服務邊界,安裝作業就會失敗,工作負載也不會從受管理的控制平面接收 Envoy 設定。

    控制台

    1. 請按照「更新服務範圍」中的步驟編輯範圍。
    2. 按一下「Edit VPC Service Perimeter」頁面。
    3. 在「受限制的服務」下方的「要保護的服務」下方,按一下「新增服務」
    4. 在「Specify services to restrict」對話方塊中,按一下「Filter services」,然後輸入「Mesh Configuration API」
    5. 勾選服務的核取方塊。
    6. 按一下「Add Mesh Configuration API」
    7. 重複執行步驟 c 到 f,新增以下項目:
      • Cloud Service Mesh Certificate Authority API
      • GKE Hub API
      • Cloud IAM API
      • Cloud Monitoring API
      • Cloud Trace API
      • Cloud Monitoring API
      • Google Cloud Resource Manager API
      • Google Compute Engine API
      • Google Container Registry API
      • Artifact Registry API
      • Google Cloud Storage API
      • Cloud Logging API
      • Security Token Service API
    8. 按一下 [儲存]

    gcloud

    如要更新受限制服務清單,請使用 update 指令,並指定要新增為逗號分隔清單的服務:

    gcloud access-context-manager perimeters update PERIMETER_NAME \
      --add-restricted-services=meshconfig.googleapis.com,meshca.googleapis.com,gkehub.googleapis.com,iam.googleapis.com,monitoring.googleapis.com,cloudtrace.googleapis.com,monitoring.googleapis.com,cloudresourcemanager.googleapis.com,compute.googleapis.com,containerregistry.googleapis.com,artifactregistry.googleapis.com,storage.googleapis.com,logging.googleapis.com,sts.googleapis.com \
      --policy=POLICY_NAME

    其中:

    • PERIMETER_NAME 是您要更新的服務範圍名稱。

    • POLICY_NAME 是您機構的存取權政策以數字表示的名稱。例如:330193482019

  3. 按一下「VPC 可存取的服務」,並將其設為「所有受限制的服務」,這樣在上述步驟中受限制的服務仍可在 VPC Service Controls 範圍內使用。

  4. 除非您是從內部網路安裝 Cloud Service Mesh,否則請新增入口規則,允許執行 asmcli 指令的身分識別體存取服務範圍。

    詳情請參閱「更新服務範圍」。

在 VPC Service Controls 範圍內安裝代管型 Cloud Service Mesh

請按照「設定代管型 Cloud Service Mesh」頁面中的步驟操作。接著,確認控制層已成功佈建,且沒有任何 VPC Service Controls 相關錯誤。

疑難排解

無法使用最新的 GKE 1.22 映像檔建立叢集

我們發現在 VPC Service Controls 受限環境中,無法使用最新的 1.22 映像檔建立叢集。解決方法是先使用預設 GKE 管道映像檔建立這個叢集,然後再升級映像檔:

gcloud container clusters create CLUSTER \
  --region REGION \
  --release-channel=rapid \
  --workload-pool=PROJECT_ID.svc.id.goog \
  --project PROJECT_ID
gcloud container clusters upgrade CLUSTER \
  --region REGION \
  --master --cluster-version 1.22 \
  --project PROJECT_ID

容器無法下載自己的映像檔。

如果圖片位於服務範圍外,就可能會發生這種情況。請將圖片移至邊界內的資料夾,或是更新邊界以新增外流規則。通常,Egress 規則可能會允許所選身分存取 Container Registry APIArtifact Registry APICloud Storage API

ControlPlaneRevision CRD 的「Status」欄位顯示 VPC Service Controls 錯誤

執行下列指令,即可取得錯誤的更多資訊:

gcloud logging read --project=PROJECT_ID \
'protoPayload.metadata.@type=type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata'

其中:

  • PROJECT_ID 是發生錯誤的專案 ID。