GKE 上的单个项目安装

本指南介绍如何为位于同一项目中的一个或多个 GKE 集群所在的网格安装、迁移到或升级到 Anthos Service Mesh 版本 1.10.6。您将使用 Google 提供的脚本 install_asm,该脚本会配置项目和集群,然后使用 istioctl install 安装 Anthos Service Mesh。

本指南和脚本适用于以下新手入门使用场景:

  • Anthos Service Mesh 1.10.6 的新安装

  • 从任何版本和补丁程序版本 1.7 或更高版本升级到 Anthos Service Mesh 1.10.6。不支持从更早版本升级。

  • 从开源 Istio 迁移到 Anthos Service Mesh。 如果您使用的是 Istio 1.6 或更早版本,则必须先升级,然后才能迁移到 Anthos Service Mesh。如果您使用的是 Istio 1.7 或更高版本,则可能可以使用从 Istio 1.7 或更高版本迁移到 Anthos Service Mesh 和 Mesh CA。如果您需要升级,请在适用的 Istio 版本中转到升级 Istio 页面。请注意,在一个步骤中跨多个次要版本(例如 1.6.x 到 1.8.x)升级 Istio 未经过官方测试或推荐。 请务必查看准备从 Istio 迁移以规划迁移。

前提条件

本指南假定您具备以下各项:

Anthos 与 Anthos Service Mesh 的差异

Anthos Service Mesh 包含在 GKE Enterprise 中,也可以作为独立服务使用。Google API 用于确定结算方式。如需将 Anthos Service Mesh 作为独立服务使用,请勿在项目中启用 GKE Enterprise API。脚本会为您启用所有其他必需的 Google API。如需了解 Anthos Service Mesh 价格,请参阅价格

  • GKE Enterprise 订阅者务必启用 GKE Enterprise API。

    启用该 API

  • 如果您不是 GKE Enterprise 订阅者,您仍然可以安装 Anthos Service Mesh,但 Google Cloud 控制台中的某些界面元素和功能仅供 GKE Enterprise 订阅者使用。如需了解订阅者和非订阅者可以使用的内容,请参阅 GKE Enterprise 和 Anthos Service Mesh 界面差异

  • 如果您启用了 GKE Enterprise API,但想将 Anthos Service Mesh 作为独立服务使用,请停用 GKE Enterprise API

使用要求

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

    • 该 GKE 集群必须是标准集群,因为 Autopilot 集群具有网络钩子限制,这些限制不允许为 istio-sidecar-injector 使用 MutatingWebhookConfiguration

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

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

    • 默认情况下,脚本会在集群上启用 Workload Identity。建议使用 Workload Identity 来调用 Google API。如 Workload Identity 限制所述,启用 Workload Identity 会更改从工作负载到 Google API 的调用的保护方式。

      如果您正在执行新安装,并计划使用 Anthos Service Mesh 证书授权机构 (Mesh CA),则可以使用舰队工作负载身份池作为 GKE 工作负载身份的替代方案。如需将 Mesh CA 与舰队 Workload Identity 池(预览版),您需要在运行脚本之前按照注册集群中的步骤操作,或者在运行脚本时添加 --enable_registration 标志,以便脚本将集群注册到集群所属的项目。如需查看运行脚本的示例,请参阅使用舰队 Workload Identity 池启用 Mesh CA

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

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

  • 若要在专用集群上安装 Anthos Service Mesh,则必须在防火墙中打开端口 15017,以获取用于自动辅助信息文件注入和配置验证的网络钩子正常运行。如需了解详情,请参阅在专用集群上打开端口

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

  • 对于迁移,istiod 必须安装在 istio-system 命名空间中(通常都是这样)。

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

  • 如果要更改 istio-proxy sidecar 容器的默认资源限制,新值必须大于默认值,才能避免内存不足 (OOM) 事件

  • 对于 Windows Server 工作负载,Istio 不受支持。如果您的集群同时有 Linux 和 Windows Server 节点池,您仍然可以安装 Anthos Service Mesh 并在 Linux 工作负载上使用它。

自定义控制层面

Anthos Service Mesh 支持的功能因平台而异。我们建议您查看支持的功能,了解 GKE on Google Cloud 支持哪些功能。某些功能默认启用,其他功能可以通过创建 IstioOperator 叠加文件视需要启用。运行 install_asm 脚本时,您可以指定 --custom_overlay 选项和叠加文件。

选择证书授权机构

对于新安装和从 Istio 的迁移,您可以使用 Anthos Service Mesh 证书授权机构 (Mesh CA) 或 Istio Citadel 作为颁发双向 TLS (mTLS) 证书的证书授权机构 (CA)。

除非您需要自定义 CA(例如 HashiCorp Vault),否则我们建议您使用 Mesh CA,原因如下:

  • Mesh CA 是一项高度可靠的可扩缩服务,针对 Google Cloud 上动态扩缩的工作负载进行了优化。
  • 通过 Mesh CA,Google 负责管理 CA 后端的安全性和可用性。
  • Mesh CA 让您可在集群中依赖单个信任根。

对于新安装的 Anthos Service Mesh,默认情况下,脚本会启用 Mesh CA。

如果您要从 Istio 迁移,则可以选择迁移到 Mesh CA 或继续使用 Istio CA。从 Istio CA 迁移到 Mesh CA 需要迁移信任根。迁移到 Mesh CA 时,可选择以下选项:

  • 为迁移安排停机时间。从操作角度来看,这是最简单的选项,但由于 mTLS 流量在迁移过程中会中断,因此您需要安排停机时间。如需查看在本例中使用脚本的示例,请参阅迁移到 Mesh CA 但有停机

  • 分发新的信任根,然后迁移到 Mesh CA。使用此方法时,mTLS 流量不会中断,因此您不必安排停机时间,但是迁移过程需要执行更多步骤。如需了解详情,请参阅迁移到 Mesh CA

如果您选择在迁移到 Anthos Service Mesh 时继续使用 Istio CA,则 mTLS 流量不会中断,因为根 CA 不会更改。虽然此迁移路径不会中断您的现有工作负载,但您只能使用集群内控制层面。Google 管理的控制层面需要 Mesh CA。

来自 Mesh CA 的证书包含有关应用的服务的以下数据:

  • Google Cloud 项目 ID
  • GKE 命名空间
  • GKE 服务账号名称

注册您的集群

您必须向舰队注册集群,才能获取对 Google Cloud 控制台中统一界面的访问权限。舰队提供一种统一方法来查看和管理集群及其工作负载,包括 Google Cloud 之外的集群。

您可以按照注册集群中的步骤操作,也可以在运行脚本时添加 --enable_registration 标志,使脚本能够将集群注册到集群所在的项目。

安装所需的工具

您可以在 Cloud Shell 或运行 Linux 的本地计算机上运行该脚本。Cloud Shell 会预安装所有必需的工具。

Cloud Shell

Cloud Shell 预配一个运行基于 Debian 的 Linux 操作系统的 g1-small Compute Engine 虚拟机 (VM)。使用 Cloud Shell 的优势如下:

  • Cloud Shell 包含您需要的 gcloudkubectlkpt 和其他命令行工具。

  • 您的 Cloud Shell $HOME 目录具有 5GB 永久性存储空间。

  • 您可以选择文本编辑器

    • 代码编辑器,可通过点击 Cloud Shell 窗口顶部的 来访问。

    • Emac、Vim 或 Nano,可从 Cloud Shell 中的命令行访问。

如需使用 Cloud Shell,请执行以下操作:

  1. 前往 Google Cloud 控制台
  2. 选择您的 Google Cloud 项目。
  3. 点击 Google Cloud 控制台窗口顶部的激活 Cloud Shell 按钮。

    Google Cloud Platform 控制台

    一个 Cloud Shell 会话随即会在 Google Cloud 控制台底部的新框内打开,并显示命令行提示符。

    Cloud Shell 会话

  4. 更新组件:

    gcloud components update
    

    该命令会以如下所示的输出作为响应:

    ERROR: (gcloud.components.update)
    You cannot perform this action because the gcloud CLI component manager
    is disabled for this installation. You can run the following command
    to achieve the same result for this installation:
    
    sudo apt-get update && sudo apt-get --only-upgrade install ...
  5. 复制并粘贴长命令以更新组件。

本地 Linux 计算机

  1. 请确保已安装以下工具:

  2. 使用 gcloud CLI 进行身份验证:

    gcloud auth login
    
  3. 更新组件:

    gcloud components update
    
  4. 请确保 git 位于您的路径中,以便 kpt 能够找到它。

下载脚本

本部分介绍如何下载脚本、设置必需参数和可选参数,以及如何运行脚本。如需详细了解脚本的功能,请参阅了解脚本

  1. 将安装 Anthos Service Mesh 1.10.6 的脚本下载到当前工作目录中:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.10 > install_asm
    
  2. 让该脚本可执行:

    chmod +x install_asm
    

后续步骤