在 GKE 上进行多项目安装

本指南介绍如何为包含多个 Google Kubernetes Engine (GKE) 集群(这些集群属于不同 Google Cloud 项目)的一个网格安装 Anthos Service Mesh。

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

  • Anthos Service Mesh 1.10.6 的新安装。

  • 从 1.9 or a 1.10 patch release 升级到 Anthos Service Mesh 1.10.6。不支持从更早版本升级。

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

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

准备工作

本指南假定您已具备:

如果您是从 Istio 迁移,请务必查看准备从 Istio 迁移

Anthos 与 Anthos Service Mesh 的差异

Anthos Service Mesh 包含在 GKE Enterprise 中,也可以作为独立服务使用。Google API 用于确定结算方式。如需将 Anthos Service Mesh 作为独立服务使用,请勿在项目中启用 GKE Enterprise 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

使用要求

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

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

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

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

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

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

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

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

  • 如果您想降低 istio-proxy sidecar 容器的默认资源限制,新的限制应该允许足够的内存避免内存不足 (OOM) 事件

选择证书授权机构

对于新安装和从 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 让您可在集群中依赖单个信任根。

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

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

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

注册您的集群

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

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