使用 Helm 升级
请参阅本指南使用 Helm5 升级和配置 Istio 网格。 本指南假设您已经使用 Helm 安装6了 Istio 的前一个小版本或补丁版本。
本指南中使用的 Helm Chart 与通过 Istioctl7 或 Operator8 安装 Istio 时使用的底层 Chart 相同。先决条件
执行任何必要的特定于平台的设置9。
检查 Pod 和服务的要求10。
安装 Helm 客户端11 3.6 或更高的版本。
配置 Helm 存储库:
升级步骤
升级 Istio 之前,推荐运行 istioctl x precheck
命令以确保升级能与您的环境兼容。
金丝雀升级(推荐)
您可以使用以下步骤,安装金丝雀版本的 Istio 控制平面来校验新版本是否与您现有的配置和数据平面兼容:
升级 Kubernetes CRD:
通过设置修订版的值来安装金丝雀版本的 Istio 发现 Chart:
验证您已经将两个
istiod
版本安装到了您的集群中:如果您正在使用 Istio Gateway, 可通过设置 revision 的值来安装金丝雀修订版的 Gateway Chart:
验证您已将两个
istio-ingress gateway
版本安装到了集群中:参见升级 Gateway了解有关 Gateway 金丝雀升级的深度解析文档。
遵循此处的步骤来测试和迁移现有工作负载,以使用金丝雀控制平面。
一旦您已验证并迁移工作负载以使用金丝雀控制平面,您就可以卸载旧的控制平面:
升级 Istio base chart,将新的修订版作为默认值。
稳定修订标签(实验特性)
在将命名空间移动到新版本时,手动的重新标记命名空间可能既乏味又容易出错。 修订标签解决了这个问题。 修订标签是指向修订的稳定标识符,可用于避免重新标记命名空间。网格管理员可以简单地更改标签以指向新的修订版,而不是重新标记命名空间。所有标有该标签的命名空间将同时更新。用法
考虑到一个安装了1-17-1
和 1-18-2
两个修订版本的集群。集群管理员创建了一个 prod-stable
修订标签,
以指向较旧的 1-17-1
稳定版本,并创建一个 prod-canary
修订标签,用以指向较新的 1-18-2
修订版本。
可以通过以下命令达到该状态:修订、标签和命名空间之间的结果映射如下所示:
除了标记的命名空间之外,集群管理员还可以通过以下 istioctl tag list
命令查看此映射:
当集群管理员对标记为 prod-canary
的控制面、命名空间的稳定性感到满意后,
istio.io/rev=prod-stable
可以通过修改 prod-stable
修订标记来更新,
以指向更新的 1-18-2
修订版本。
现在,修订版、标记和命名空间之间更新后的映射关系如下所示:
当在带有 prod-stable
标签的命名空间中重新启动注入工作负载,将导致这些工作负载使用 1-18-2
控制平面。
请注意,将工作负载迁移到新版本时不需要重新标记命名空间。
默认标记
标签 default
指向的修订版本被认为是默认的修订版本,并具有额外的语义含义。
默认版本的功能如下:
- 为
istio-injection=enabled
命名空间选择器,sidecar.istio.io/inject=true
对象选择器 和istio.io/rev=default
选择器注入 Sidecar。 - 验证 Istio 资源。
- 从非默认的修订版本中窃取 leader 锁并执行单例网格任务(例如更新资源状态)。
要将修订版本 1-18-2
设为默认版本,请运行以下命令:
default
标签和现有的未修订版本的 Istio 安装方式一起使用时,
建议删除旧的 MutatingWebhookConfiguration
(通常称为 istio-sidecar-injector
),
以避免新旧控制平面同时尝试注入。原地升级
您可以使用 Helm 升级工作流在您的集群中对 Istio 执行原地升级。
升级 Kubernetes CRD:
升级 Istio base chart:
升级 Istio discovery chart:
(可选)升级集群中安装的 gateway chart:
卸载
请参阅 Helm 安装指南中的卸载章节。