适用于代管式 Anthos Service Mesh 的 VPC Service Controls

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

对于版本高于或等于 1.22.1-gke.100 的 GKE 集群,代管式 Anthos Service Mesh 支持在所有 Anthos Service Mesh 渠道中预览 VPC Service Controls (VPC-SC)。

准备工作

VPC-SC 组织政策和服务边界在组织级别上进行配置。请确保您已被授予适当的 VPC-SC 管理角色

配置组织政策

  1. 组织管理员必须按照本部分中的说明配置组织政策,否则系统不会强制执行 VPC-SC。修改您的组织或个别项目的组织政策,并使用控制台或以下 gcloud 命令将“ASM 代管式控制平面允许的 VPC-SC 模式”限制条件设置为“兼容”:

    gcloud resource-manager org-policies allow \
      meshconfig.allowedVpcscModes COMPATIBLE \
      --project=PROJECT_ID

    其中:

    • PROJECT_ID 是您要更新的项目的 ID。

    gcloud resource-manager org-policies allow \
      meshconfig.allowedVpcscModes COMPATIBLE \
      --organization=ORGANIZATION_ID

    其中:

    • ORGANIZATION_ID 是您要更新的组织的 ID。

设置 VPC-SC 服务边界

创建或更新服务边界

  1. 添加集群项目和队列项目到服务边界。不支持将服务网格分布在多个 VPC-SC 边界内。

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

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

    如果不添加这些服务,可能会导致 Anthos 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
      • Stackdriver Logging API
      • Cloud Trace API
      • Cloud Monitoring API
      • Google Cloud Resource Manager API
      • Cloud Run API
      • Google Compute Engine API
      • Google Container Registry API
      • Artifact Registry API
      • Google Cloud Storage 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,run.googleapis.com,compute.googleapis.com,containerregistry.googleapis.com,artifactregistry.googleapis.com,storage.googleapis.com \
      --policy=POLICY_NAME

    其中:

    • PERIMETER_NAME 是要更新的服务边界的名称。

    • POLICY_NAME 是您的组织的访问权限政策的数字名称。例如 330193482019

  3. 点击 VPC 可访问服务并将其设置为“所有受限服务”,以保证在 VPC-SC 边界内仍然可以访问上述步骤中的受限服务。

  4. 除非您从边界内安装 Anthos Service Mesh,否则请添加入站流量规则,以允许运行 asmcli 命令的身份访问服务边界。

    如需了解详情,请参阅更新服务边界

在 VPC-SC 边界内安装代管式 Anthos Service Mesh

本部分不需要组织管理员权限,但它需要符合 VPC-SC 政策:您必须在安装过程中使用额外的标志 --use_vpcsc,否则安全控制措施将阻止安装。

按照配置代管式 Anthos Service Mesh 页面中的步骤操作。然后,确认已成功预配控制平面,并且不存在 VPC-SC 相关错误。

问题排查

无法使用最新的 GKE 1.22 映像创建集群

有一个已知问题会阻止在 VPC-SC 受限环境中使用最新的 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-SC 错误

如果您在安装过程中未使用“'--use_vpcsc”标志,则可能会出现该错误,这种情况可以放心地重新运行。

否则,请运行以下命令以获得有关错误的更多信息:

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

其中:

  • PROJECT_ID 是遇到错误的项目的 ID。