使用 Operator 升级到 Istio 1.6

本页面介绍了如何在迁移到开源 Istio 之前使用 Operator 升级到 Istio 1.6。

从 1.6 版开始,Istio on Google Kubernetes Engine 插件使用 Istio 运算符进行安装和配置。Istio Operator 遵循 Kubernetes Operator 模式。Istio Operator 可让您通过为 Istio 安装定义 Kubernetes 自定义资源定义 (CRD) 来配置 Istio。然后,Istio Operator 使用控制器更改安装,以匹配自定义资源。

当您将集群升级到 1.17.17-gke.3100+、1.18.16-gke.1600+ 或 1.19.8-gke.1600+ 时,Istio 1.6 运算符和控制平面一起安装现有的 1.4.x Istio 控制平面。升级需要用户操作,并使用修订版本将工作负载迁移到新的控制平面。借助基于修订版本的升级,您可以将工作负载上的标签设置为指向新的控制平面并执行滚动重启,从而迁移到 1.6 版本。

我们不会在 Google Kubernetes Engine 插件上发布 1.5 版 Istio。1.6 版是我们在 1.4.10 之后发布的版本。

Istio Operator 的优势

Istio Operator 可提高安装的配置性。在 1.6 之前的插件版本中,GKE 插件管理器会协调对 Istio 清单进行的任何更改,并阻止进行大部分类型的配置更改。Istio Operator 没有此限制。Istio Operator 根据您在安装期间提供的 IstioOperator 自定义资源 (CR) 生成 Istio 控制层面安装清单。该 CR 完全由您掌控,且永不进行协调。

使用 Operator 升级到 Istio 1.6

您必须执行本部分中的步骤,才能使用 Operator 升级到 Istio 1.6。

您只需执行这些步骤一次即可转换到该 Operator。后续升级将按照双重控制层面升级过程进行。

  1. 选择包含 Istio 1.6(1.17.17-gke.3100+、1.18.16-gke.1600+、1.19.8-gke.1600+)的 GKE 版本,并升级您的集群。

    请注意,使用 Istio 1.6 的 Istio on Google Kubernetes Engine 插件会安装两个 Istio 版本:

    • 由插件管理器控制的静态清单版本(在升级集群后有效)。

    • 由 Operator 控制的 1.6 版(在启用之后有效)。已停用的 1.6 版不会连接到任何代理,且消耗的集群资源可以忽略不计。

    如果当前安装的 Istio 版本与目标静态清单中的版本不同,则升级集群可能也会就地升级 Istio。例如,如果您的集群当前正在运行 Istio 1.4.6-gke.0,并且选择 GKE 集群版本 1.17.7-gke.3100,则在升级过程中 Istio 控制层面会升级到 1.4.10-gke.0(或更高版本)。

    为了确保您的集群版本足够新,请运行以下命令:

    kubectl get ns istio-system --show-labels | if [[ $(grep EnsureExists) ]];
    then echo "Version is recent enough"; else echo "Need more recent version"; fi
    

    控制台输出指示集群版本是否足够新。

  2. 下载 upgrade-14-16 脚本:

    curl -LO https://storage.googleapis.com/csm-artifacts/asm/upgrade-14-16
    

    您可以在 GitHub 上查看脚本

  3. 让该脚本可执行:

    chmod +x upgrade-14-16
    
  4. 确保将 kubectl 配置为要升级的集群。

    gcloud container clusters get-credentials cluster-name
    

    其中,cluster-name 是集群的名称。

  5. 运行脚本:

    ./upgrade-14-16
    

    该脚本将引导您完成单个集群的迁移过程。

  6. 如需迁移其他集群,请使用 --reset 标志运行该工具:

    ./upgrade-14-16 --reset
    

    然后重复第 4 步和第 5 步。