适用于 Cloud Service Mesh(代管式)的 VPC Service Controls

{default_version." short_version." %1% setvar." %1% setvar." %1% setvar." " " " " "有多可让您进行声明。 {default_version." short_version." %1% setvar." %1% setvar." %1% setvar." " " " " "有多可让您进行声明。

Cloud Service Mesh(代管式)支持将 VPC Service Controls 作为新控制平面的正式版 (GA) 功能。

如需检查您的控制平面是否支持 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 服务边界

创建或更新服务边界

  1. 添加集群项目和队列项目到服务边界。系统不支持将服务网格分布在多个 VPC Service Controls 边界上。

  2. 将受限服务添加到服务边界。

    您必须将特定服务添加到服务边界的允许和受限服务列表中,以便您的 Cloud Service Mesh 集群可以访问它们。但仅可在集群的 Virtual Private Cloud (VPC) 网络内访问这些服务。

    不添加这些服务可能会导致 Cloud Service Mesh 安装失败或无法正常运行。例如,如果您不将 Mesh Configuration API 添加到服务边界,则安装将失败,并且工作负载将不会从代管式控制平面接收其 Envoy 配置。

    控制台

    1. 按照更新服务边界中的步骤修改边界。
    2. 点击修改 VPC 服务边界页面。
    3. 受限服务要保护的服务下,点击添加服务
    4. 指定要限制的服务对话框中,点击过滤服务,然后输入 Mesh Configuration API
    5. 选中相应服务的复选框。
    6. 点击添加 Mesh Configuration API
    7. 重复步骤 c - f,添加以下 API:
      • 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

容器无法下载其映像。

如果映像位于服务边界以外,则可能会发生这种情况。您可以将映像移动到边界内的存储桶中,也可以更新边界以添加出站流量规则。通常,出站规则可能允许选定身份访问 Container Registry APIArtifact Registry APICloud 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。