1.9 版

用于在 GKE 上安装 Anthos Service Mesh 的设置

本页面介绍了针对一个网格的 Cloud 项目和 Google Kubernetes Engine (GKE) 集群的 Anthos Service Mesh 安装要求和设置,该网格包含属于同一项目的集群。当您使用 Google 提供的脚本 install_asm 时,如果您添加了 --enable_all 标志或更精细的启用标志,则该脚本可以为您配置项目和集群。如果您希望自行设置,而不是让 install_asm 进行更改,请按照本页面中的步骤操作。如果您安装了旧版 Anthos Service Mesh,则在使用 install_asm 升级至最新 Anthos Service Mesh 版本之前,您无需对项目或集群进行任何更改。

准备工作

本指南假定您已具备:

要求

  • 您的 GKE 集群必须满足以下要求:

    • 具有至少四个 vCPU 的机器类型,例如 e2-standard-4。如果集群的机器类型没有至少四个 vCPU,请按照将工作负载迁移到不同的机器类型中所述更改机器类型。

    • 最小节点数取决于您的机器类型。Anthos Service Mesh 至少需要八个 vCPU。如果机器类型有四个 vCPU,则您的集群必须至少有两个节点。如果机器类型有八个 vCPU,则集群只需要一个节点。如果需要添加节点,请参阅调整集群大小

    • 如需在安装 Anthos Service Mesh 之前准备集群,请启用 Workload Identity。建议使用 Workload Identity 来调用 Google API。如 Workload Identity 限制所述,启用 Workload Identity 会更改从工作负载到 Google API 的调用方式。

    • (可选,但建议执行)在发布版本中注册该集群。我们建议您在常规发布版本中注册集群,因为其他发布版本可能基于 Anthos Service Mesh 1.9.1 不支持的 GKE 版本。如需了解详情,请参阅支持的环境。如果您拥有静态 GKE 版本,请按照在发布版本中注册现有集群中的说明操作。

  • 如需将服务端口纳入服务网格,必须为服务端口命名,并且名称必须包含以下语法的端口协议:name: protocol[-suffix],其中方括号表示必须以短划线开头的可选后缀。如需了解详情,请参阅为服务端口命名

  • 如果您要在专用集群上安装 Anthos Service Mesh,则必须在防火墙中打开端口 15017,以获取与自动 Sidecar 注入搭配使用的网络钩子,以便正常运行。如需了解详情,请参阅在专用集群上打开端口

  • 如果您在组织中创建了服务边界,则可能需要将 Mesh CA 服务添加到边界。如需了解详情,请参阅将 Mesh CA 添加到服务边界

  • 一个 Google Cloud 项目只能关联一个网格。

运行 install_asm 时,它会验证您的集群是否满足机器类型和节点数的最低要求。

设置项目

  1. 获取在其中创建集群的项目的 ID 和编号。

    gcloud

    运行以下命令:

    gcloud projects list
    

    控制台

    1. 转到 Cloud Console 中的信息中心页面

      转到“信息中心”页面

    2. 点击页面顶部的下拉列表。在随即显示的从以下列表中选择:窗口中,选择您的项目。

      项目 ID 和项目编号显示在项目信息中心的项目信息卡片上。

  2. 创建以下环境变量:

    • 使用项目 ID 设置工作负载池:

      export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
      
    • 使用项目编号设置网格 ID:

      export MESH_ID="proj-PROJECT_NUMBER"
      
  3. 设置所需的 Identity and Access Management (IAM) 角色。如果您是 Project Owner,则您拥有完成安装所需的所有权限。如果您不是 Project Owner,则需要有人授予您以下特定 IAM 角色。在以下命令中,将 PROJECT_ID 替换为上一步中的项目 ID,并将 GCP_EMAIL_ADDRESS 替换为您用于登录 Google Cloud 的帐号。

    ROLES=(
    'roles/servicemanagement.admin' \
    'roles/serviceusage.serviceUsageAdmin' \
    'roles/meshconfig.admin' \
    'roles/compute.admin' \
    'roles/container.admin' \
    'roles/resourcemanager.projectIamAdmin' \
    'roles/iam.serviceAccountAdmin' \
    'roles/iam.serviceAccountKeyAdmin' \
    'roles/gkehub.admin')
    for role in "${ROLES[@]}"
    do
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "user:GCP_EMAIL_ADDRESS" \
        --role="$role"
    done
    

    如果您在运行 install_asm 时添加 --enable_all--enable_gcp_iam_roles 标志,则会为您设置所需的 IAM 角色

  4. 启用以下 Google API:

    gcloud services enable \
        --project=${PROJECT_ID} \
        container.googleapis.com \
        compute.googleapis.com \
        monitoring.googleapis.com \
        logging.googleapis.com \
        cloudtrace.googleapis.com \
        meshca.googleapis.com \
        meshtelemetry.googleapis.com \
        meshconfig.googleapis.com \
        iamcredentials.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        cloudresourcemanager.googleapis.com \
        stackdriver.googleapis.com

    启用 API 可能需要 1 分钟或更长时间才能完成。启用这些 API 后,您将会看到如下所示的输出:

    Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished
    successfully.
    

    如果您在运行 install_asm 时添加 --enable_all--enable_apis 标志,则会为您启用所需的 API

设置集群

如果您添加 --enable_all 标志或更精细的启用标志之一,则 install_asm 脚本会为您设置集群

  1. gcloud 命令行工具设置默认区域或地区。如果您未在此处设置默认值,请务必在本页面的 gcloud container clusters 命令中指定 --zone--region 选项。

    • 如果您有一个单区域集群,请设置默认区域:

      gcloud config set compute/zone CLUSTER_LOCATION
      
    • 如果您有一个地区级集群,请设置默认地区:

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. 在集群上设置 mesh_id 标签。如果您的集群已有要保留的标签,则在添加 mesh_id 标签时必须将这些标签包含在内。

    1. 如需查看您的集群是否已有标签,请执行以下操作:

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      在输出中查找 resourceLabels 字段。每个标签都存储在 resourceLabels 字段下的单独的一行中,例如:

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      为方便起见,您可以向环境变量添加标签。在以下命令中,请将 YOUR_EXISTING_LABELS 替换为集群上以英文逗号分隔的现有标签列表,格式为 KEY=VALUE,例如:env=dev,release=stable

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
      
    2. 设置 mesh_id 标签:

      • 如果您的集群已有要保留的标签,请使用 mesh_id 和现有标签更新集群:

        gcloud container clusters update CLUSTER_NAME \
            --project PROJECT_ID \
            --update-labels=mesh_id${MESH_ID},${EXISTING_LABELS}
        
      • 如果您的集群没有任何现有标签,请仅使用 mesh_id 标签更新集群:

        gcloud container clusters update CLUSTER_NAME \
            --project=PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID}
        
  3. 启用 Workload Identity

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --workload-pool=${WORKLOAD_POOL}
    

    启用 Workload Identity 最长可能需要 10 到 15 分钟。

  4. 启用 GKE 上的 Cloud Monitoring 和 Cloud Logging

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --enable-stackdriver-kubernetes
    

后续步骤

您的项目和 GKE 集群现已准备好新安装或从 Istio 迁移。使用 install_asm 安装 Anthos Service Mesh 时,该脚本会先调用项目和集群,然后再调用 istioctl install,从而防止安装失败。

准备工作: