本指南介绍如何为包含多个 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。
如果您不是 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 所需的选项时,队列宿主项目的概念非常重要。集群的服务网格由基于项目编号的值标识。设置不同项目的集群时,您需要使用队列宿主项目的项目编号。