准备从 Istio 迁移

从 Istio 迁移到 Anthos Service Mesh 需要一些规划。本页面提供的信息可帮助您为迁移做好准备。

查看配置文件

Anthos Service Mesh 提供的配置文件与开源 Istio 不同。安装 Anthos Service Mesh 时,请使用适合您的环境的配置文件:

  • asm-gcp:如果网格包含单个集群或属于同一 Google Cloud 项目的多个集群,请使用此配置文件在 GKE 上进行安装。

  • asm-gcp-multiproject Beta 版:如果集群属于不同的 Google Cloud 项目,请使用此配置文件在 GKE 上进行安装。

  • asm-multicloud:使用此配置文件可以在以下环境中进行安装:

    • GKE on VMware
    • GKE on AWS
    • Amazon Elastic Kubernetes Service (Amazon EKS)
    • Microsoft Azure Kubernetes Service (Microsoft AKS)

支持的 Anthos Service Mesh 功能因配置文件而异。请查看适合您配置的配置文件的支持的功能

比较性能剖析文件

您可以将用于安装 Istio 的配置文件与计划使用的 Anthos Service Mesh 配置文件进行比较:

  1. 按照下载安装文件中的步骤下载安装和签名文件,解压缩内容,并将路径设置为使用下载文件中的 istioctl 版本。

  2. 为您计划使用的 Anthos Service Mesh 配置文件生成一个清单:

    istioctl manifest generate -f manifests/profiles/ASM_PROFLE > a.yaml
  3. 找到用于安装 Istio 的配置文件。由于不同 Istio 版本的配置文件可能会发生变化,因此您需要与您的 Istio 版本匹配的安装包中的配置文件。

  4. 为用于安装 Istio 的配置文件生成一个清单:

    istioctl manifest generate -f ISTIO_PROFILE > b.yaml
  5. 比较清单:

    istioctl manifest diff a.yaml b.yaml
    

准备配置文件

如果您自定义 Istio 安装,则在迁移到 Anthos Service Mesh 时也需要使用相同的自定义设置。如果您是通过添加 --set values 标志自定义安装,我们建议您将这些设置添加到 IstioOperator 配置文件。要指定配置文件,请在运行 istioctl install 命令时同时使用配置文件和 -f 标志。

选择证书授权机构

您可以继续使用 Citadel(现在包含在 istiod 中)作为颁发双向 TLS (mTLS) 证书的证书授权机构 (CA),也可以选择迁移到 Anthos Service Mesh 证书授权机构 (Mesh CA)。

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

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

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

  • 如果您拥有自定义 CA。
  • 您无法为迁移到 Mesh CA 安排停机时间。虽然我们建议您使用 Mesh CA,但您需要为迁移安排停机时间,因为 mTLS 流量在您重启所有命名空间中的所有 pod 之前会失败。

查看迁移过程

要从 Istio 迁移,请按照双控制层面升级过程(在 Istio 文档中称为 Canary 版升级)操作。通过双控制平面升级,您可以在现有控制平面的基础上安装新版本控制平面。安装新版本时,您要添加可标识新控制平面版本的 revision 标签。每个修订版本都是一个完整的 Anthos Service Mesh 控制平面实现,具有自己的 Deployment 和 Service。

然后,通过在工作负载上设置相同的 revision 标签以指向新的控制平面,并执行滚动重启以使用新的 Anthos Service Mesh 版本重新注入代理,从而迁移到新版本。通过这种方法,您可以监控升级对一小部分工作负载的影响。测试应用后,您可以将所有流量迁移到新版本。此方法比执行就地升级更安全,因为新控制层面会立即替换旧版控制层面。

除非您为蓝绿部署设置了负载均衡器或路由器,否则我们建议您在预演环境中测试重启 pod,以验证您的服务可以处理任何潜在的流量中断。