GKE 的多项目安装和迁移

本指南介绍如何为包含多个位于不同 Google Cloud 项目中的 GKE 集群的网格,从开源 Istio 安装或迁移到 Anthos Service Mesh。

您可以针对以下新手入门使用场景使用本指南:

  • Anthos Service Mesh 1.8.6 的新安装。

  • 从开源 Istio 1.7 or 1.8 迁移到 Anthos Service Mesh 1.8.6。如果您使用的是 Istio 的更早版本,则必须先升级,然后才能迁移到 Anthos Service Mesh。

并非所有功能都适用于在不同项目中将服务网格与集群搭配使用。具体而言,Google Cloud 控制台中的 Anthos Service Mesh 信息中心当前不可用。但是,您仍然可以在 Cloud Logging 和 Cloud Monitoring 中查看每个项目的日志和指标。

准备工作

本指南假定您已具备:

如果您是从 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 价格,请参阅价格

使用要求

  • 由于集群属于不同的项目,因此它们必须位于一个共享 Virtual Private Cloud (VPC) 中。如需了解如何配置集群,请参阅通过共享 VPC 设置集群

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

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

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

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

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

选择证书授权机构

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

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

  • Mesh CA 是一项高度可靠的可扩缩服务,针对 Google Cloud 上动态扩缩的工作负载进行了优化。
  • 通过 Mesh CA,Google 负责管理 CA 后端的安全性和可用性。
  • 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 服务账号名称

注册您的集群

虽然目前并非必需,但我们建议您在项目的队列(以前称为 Environ)中注册集群。借助队列,您可以组织集群,以简化多集群管理。通过在队列中注册集群,您可以根据需要对服务和其他基础架构进行分组,以应用一致的政策。如果您在不同项目中拥有集群,则您需要向队列宿主项目(而不是创建集群的项目)注册集群。如需详细了解如何注册集群,请参阅将集群注册到队列中

在设置集群以启用 Anthos Service Mesh 所需的选项时,队列宿主项目的概念非常重要。集群的服务网格由基于项目编号的值标识。设置不同项目的集群时,您需要使用队列宿主项目的项目编号。