GKE 的安装、迁移和升级

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

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

  • Anthos Service Mesh 1.8.6 的新安装

  • 从 Anthos Service Mesh 1.7.3+ or a 1.8 patch release 升级。不支持从更早版本升级。

  • 从开源 Istio 1.7 or 1.8 迁移到 Anthos Service Mesh。不支持从更早版本的 Istio 迁移。请务必查看准备从 Istio 迁移以规划迁移。

前提条件

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

Anthos 与 Anthos Service Mesh 的差异

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

    启用该 API

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

脚本会为您启用所有其他必需的 Google API

要求

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

    • 具有至少 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.8.6 不支持的 GKE 版本。如需了解详情,请参阅支持的环境。如果您拥有静态 GKE 版本,请按照在发布版本中注册现有集群中的说明操作。

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

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

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

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

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

选择证书授权机构

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

基于以下原因,我们通常建议您使用 Mesh CA:

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

不过,在某些情况下,您可能会考虑使用 Citadel,例如:

  • 如果您拥有自定义 CA。
  • 如果您要从 Istio 迁移。

    如果您选择 Citadel,则几乎不存在停机时间,因为 mTLS 流量在迁移期间不会中断。如果您选择 Mesh CA,则需要为迁移安排停机时间,因为信任根从 Citadel 更改为 Mesh CA。如需完成迁移到 Mesh CA 信任根,您需要重启所有命名空间中的所有 Pod。在此过程中,旧 Pod 无法与新 Pod 建立 mTLS 连接。

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

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

注册您的集群

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

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

安装所需的工具

您可以在 Cloud Shell 或运行 Linux 的本地计算机上运行该脚本。Cloud Shell 会预安装所有必需的工具。请注意,由于 macOS 附带了旧版 bash,因此不支持 macOS。

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.8.6 的脚本下载到当前工作目录中:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.8 > install_asm
    
  2. 将文件的 SHA-256 下载到当前工作目录:

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.8.sha256 > install_asm.sha256
    
  3. 在这两个文件位于同一目录的情况下,验证下载:

    sha256sum -c --ignore-missing install_asm.sha256
    

    如果验证成功,则该命令会输出 install_asm: OK

    为了确保兼容性,install_asm.sha256 文件包含两次校验和,以允许将脚本的任何版本重命名为 install_asm。如果出现 --ignore-missing 不存在的错误,请重新运行上一个命令,但不使用 --ignore-missing 标志。

  4. 让该脚本可执行:

    chmod +x install_asm
    

后续步骤