Cloud Service Mesh (代管) 的 VPC Service Controls
Google Cloud 詳情請參閱「Cloud Service Mesh 總覽」。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 服務範圍
建立或更新服務範圍:
將叢集專案和機群專案新增至服務範圍。系統不支援將服務網格分散在多個 VPC Service Controls 範圍中。
將受限制的服務新增至服務範圍。
您必須將特定服務新增至服務邊界中的允許和受限服務清單,才能讓 Cloud Service Mesh 叢集存取這些服務。這些服務的存取權也會在叢集的虛擬私有雲 (VPC) 網路中受到限制。
如未新增這些服務,可能會導致 Cloud Service Mesh 安裝失敗或無法正常運作。舉例來說,如果您未將 Mesh Configuration API 新增至服務邊界,安裝作業就會失敗,工作負載也不會從受管理的控制平面接收 Envoy 設定。
控制台
- 請按照「更新服務範圍」中的步驟編輯範圍。
- 按一下「Edit VPC Service Perimeter」頁面。
- 在「受限制的服務」下方的「要保護的服務」下方,按一下「新增服務」。
- 在「Specify services to restrict」對話方塊中,按一下「Filter services」,然後輸入「Mesh Configuration API」。
- 勾選服務的核取方塊。
- 按一下「Add Mesh Configuration API」。
- 重複執行步驟 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
- 按一下 [儲存]。
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
。
按一下「VPC 可存取的服務」,並將其設為「所有受限制的服務」,這樣在上述步驟中受限制的服務仍可在 VPC Service Controls 範圍內使用。
除非您是從內部網路安裝 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 API、Artifact Registry API 和 Cloud 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。