本指南介绍如何为包含多个位于不同 Google Cloud 项目中的 GKE 集群的网格,从开源 Istio 安装或迁移到 Anthos Service Mesh。如需了解属于同一 Google Cloud 项目的一个或多个 GKE 集群的安装、迁移或升级,请参阅在 GKE 上安装、迁移和升级。
您可以针对以下使用场景使用本指南:
Anthos Service Mesh 1.7.8 的新安装。
从开源 Istio 1.6 或 1.7 迁移到 Anthos Service Mesh 1.7.8。如果您使用的是 Istio 的更早版本,则必须先升级,然后才能迁移到 Anthos Service Mesh。
配置不同 Google Cloud 项目中的集群需要 asm-gcp-multiproject
(Beta 版)配置文件。如果使用此配置文件:
目前,Google Cloud 控制台中的 Anthos Service Mesh 信息中心不可用。但是,您仍然可以在 Cloud Logging 和 Cloud Monitoring 中查看每个项目的日志和指标。
asm-gcp-multiproject
配置文件的支持的功能页面上列出的其他支持的默认功能处于启用状态。
准备工作
本指南假定您已具备:
如果您是从 Istio 迁移,请务必查看准备从 Istio 迁移。
Anthos 与 Anthos Service Mesh 的差异
GKE Enterprise 订阅者务必启用 GKE Enterprise 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.7.8 不支持的 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 所需的选项时,队列宿主项目的概念非常重要。集群的服务网格由基于项目编号的值标识。设置不同项目的集群时,您需要使用队列宿主项目的项目编号。