Cloud Service Mesh (代管型) 的 VPC Service Controls
Google Cloud 詳情請參閱「Cloud Service Mesh 總覽」。Cloud Service Mesh (代管) 支援 VPC Service Controls,這項功能已正式發布,適用於新的控制層。
如要檢查控制層是否支援 VPC Service Controls 正式發布,請檢查成員的網狀功能狀態是否符合 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 服務範圍
建立或更新您的service perimeter:
將叢集專案和機群專案新增至服務範圍。不支援服務網格跨越多個 VPC Service Controls 服務範圍。
將受限服務新增至服務範圍。
您必須在服務邊界的允許和限制服務清單中新增特定服務,Cloud Service Mesh 叢集才能存取這些服務。在叢集的虛擬私有雲 (VPC) 網路中,存取這些服務也會受到限制。
如果未新增這些服務,可能會導致 Cloud Service Mesh 安裝失敗或無法正常運作。舉例來說,如果未將 Mesh Configuration API 新增至服務邊界,安裝作業就會失敗,且工作負載不會從受管理控制層接收 Envoy 設定。
控制台
- 按照「更新 service perimeter」一文中的步驟編輯範圍。
- 按一下「Edit VPC Service Perimeter」(編輯 VPC 服務範圍) 頁面。
- 依序點選「受限制的服務」、「要保護的服務」,然後按一下「新增服務」。
- 在「指定要限制的服務」對話方塊中,按一下「篩選服務」,然後輸入「Mesh Configuration API」。
- 勾選服務的核取方塊。
- 按一下「新增 Mesh 設定 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 是要更新的 service perimeter 名稱。
POLICY_NAME 是組織存取權政策的數字名稱。例如:
330193482019。
按一下「可透過虛擬私有雲存取的服務」,並設為「所有受限制的服務」,這樣一來,在 VPC Service Controls 範圍內,仍可存取上一步驟中受限制的服務。
除非您是從 perimeter 內網路安裝 Cloud Service Mesh,否則請新增輸入規則,允許執行
asmcli指令的身分存取 service perimeter。詳情請參閱「更新 service perimeter」。
在 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
容器無法下載映像檔。
如果圖片位於服務邊界外,就可能發生這種情況。您可以將圖片移至周邊範圍內的 bucket,或更新周邊範圍以新增輸出規則。一般來說,輸出規則會允許所選身分存取 Container Registry API、Artifact Registry API 和 Cloud Storage API。
ControlPlaneRevision CRD 的「狀態」欄位會顯示 VPC Service Controls 錯誤
執行下列指令,進一步瞭解錯誤:
gcloud logging read --project=PROJECT_ID \ 'protoPayload.metadata.@type=type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata'
其中:
- PROJECT_ID 是發生錯誤的專案 ID。