参考地址: https://openkruise.io/zh/rollouts/introduction
1.Kruise Rollouts 概述
Kruise Rollouts 是一个 Bypass(旁路) 组件,提供高级渐进式交付功能 。它的支持可以帮助您实现对应用程序的更平稳和受控的更改部署,支持金丝雀、多批次和A/B测试交付模式,同时它兼容 Gateway API 和各种Ingress 实现,使其更容易集成到您的现有基础设施中。总的来说,对于希望优化其部署流程的 Kubernetes 用户来说,Kruise Rollouts是一个有价值的工具.
2.主要功能
- 丰富的发布策略
- 用于 Deployment、CloneSet、StatefulSet、Advanced StatefulSet、Advanced DaemonSet 的多批次更新策略。
- 用于 Deployment 的金丝雀(Canary)更新策略。
- 丰富的流量路由管理策略
- 在更新工作负载时进行流量细粒度、加权流量转移。
- 流量A/B测试,基于HTTP头和Cookie进行流量转移。
- 端到端流量灰度
- 丰富的流量协议支持
- Ingress 控制器集成:NGINX、ALB、Higress
- 通过 GatewayAPI 进行服务网格集成。
- 可插拔的Lua脚本,以便轻松扩展到其他 Kubernetes 流量协议(甚至CRD.
3.Kruise Rollouts 与其他组件对比
Kruise Rollouts 与 Argo Rollout 和 Flux Flagger 的对比
4.部署Kruise Rollout
4.1 部署依赖
- 安装 Kubernetes 集群,需要 Kubernetes 版本 >= 1.19。
- (可选,如果使用 CloneSet) Helm 安装 OpenKruise,自 v1.1.0 起 ,参考安装 OpenKruise.
4.2 使用 Helm 安装
# 添加helm 源
helm repo add openkruise https://openkruise.github.io/charts/
helm repo update
# 安装最新版
helm install kruise-rollout openkruise/kruise-rollout --version 0.5.0
# 查看kruise-rollout 版本库里面有那些版本
helm search repo openkruise/kruise-rollout --versions
实验过程
4.3 使用 Helm 升级
# 首先,如果您还没有添加 openkruise Charts库,请执行以下命令。
helm repo add openkruise https://openkruise.github.io/charts/
# [可选]
$ helm repo openkruise update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "openkruise" chart repository
Update Complete. ⎈Happy Helming!⎈
# 升级到最新版本。
$ helm upgrade kruise-rollout openkruise/kruise-rollout --version 0.5.0 [--force]
4.4 使用自定义配置安装/升级
#列出了Kruise Charts的可配置参数以及它们的默认值
helm show values openkruise/kruise-rollout --version 0.5.0
#使用 --set key=value[,key=value] 参数来指定每个参数,例如
helm install kruise-rollout openkruise/kruise-rollout --version 0.5.0 --set resources.limits.memory=2Gi \
--set image.repository=openkruise-registry.cn-shanghai.cr.aliyuncs.com/openkruise/kruise-rollout
4.5 软件卸载
#请注意,这将导致 Kruise Rollout 创建的所有资源被删除,包括 Webhook 配置、服务、命名空间、CRDs 和 CR 实例以及 Kruise Rollout 控制器!
只有在您充分理解后才执行此操作。
要卸载使用 Helm Charts安装的 kruise rollout:
helm uninstall kruise-rollout
release "kruise-rollout" uninstalled