引入 Sail Operator:一种管理 Istio 的新方法
引入 Sail Operator 来管理 Istio,这是一个 istio-ecosystem 组织的一部分。
随着 Istio 1.23 中最近宣布的集群内 IstioOperator 弃用 以及随后在 Istio 1.24 中删除,我们希望提高人们对 Red Hat 团队一直在开发的 新 Operator 的认识,该 Operator 作为 istio-ecosystem 组织的一部分来管理 Istio。
Sail Operator 管理 Istio 控制平面的生命周期,使集群管理员能够更轻松、更高效地在大型生产环境中部署、配置和升级 Istio。Sail Operator API 围绕 Istio 的 Helm chart API 构建,而不是创建新的配置模式和重新发明轮子。Istio 的 Helm chart 公开的全部安装和配置选项都可通过 Sail Operator CRD 的 values 字段获得。这意味着您可以使用熟悉的配置轻松管理和自定义 Istio,而无需学习其他内容。
Sail Operator 有 3 个主要资源概念
- Istio:用于管理 Istio 控制平面。
- Istio Revision:表示该控制平面的修订版本,它是具有特定版本和修订版本名称的 Istio 实例。
- Istio CNI:用于管理 Istio CNI 插件的资源和生命周期。要安装 Istio CNI 插件,请创建一个
IstioCNI
资源。
目前,Sail Operator 的主要功能是更新策略。该 Operator 提供了一个管理 Istio 控制平面升级的接口。它目前支持两种更新策略
- 就地更新:使用
InPlace
策略,现有 Istio 控制平面将被新版本替换,工作负载 sidecar 会立即连接到新的控制平面。这样,工作负载就不需要从一个控制平面实例移动到另一个控制平面实例。 - 基于修订版本的更新:使用
RevisionBased
策略,将为Istio.spec.version
字段的每次更改创建一个新的 Istio 控制平面实例。旧的控制平面将保留在原位,直到所有工作负载都已移动到新的控制平面实例。可选地,可以设置updateWorkloads
标志以在新的控制平面准备好后自动将工作负载移动到该控制平面。
我们知道执行 Istio 控制平面的升级会带来风险,并且对于大型部署可能需要大量的手动工作,这就是我们当前关注的重点。未来,我们将研究 Sail Operator 如何更好地支持多租户和隔离、多集群联合以及与第三方项目的简化集成等用例。
Sail Operator 项目仍处于 Alpha 阶段,并且正在积极开发中。请注意,作为 istio-ecosystem 项目,它不受 Istio 项目的支持。我们正在积极寻求社区的反馈和贡献。如果您想参与该项目,请参阅存储库的 文档 和 贡献指南。如果您是用户,还可以按照 用户文档 中的说明试用新 Operator。
更多信息,请联系我们