k8s 金丝雀发布 (灰度)
背景线上发布,如果直接将预发或者测试环境的jar或war包发布到线上,如果出现问题,那么就会出现大面积瘫痪,无法正常使用引入金丝雀发布,先优先发布一台,或者比例较小。主要用来流量验证,如果通过,那么可以快速将其他版本全部更新,失败的话,则回退,只影响小部分用户。优缺点优点: 用户体验影响小,发布只影响少部分用户缺点: 自动化流程不够,发布期间需要人为去操作,可能会引起服务中断等实战1、快速构建 d
背景
线上发布,如果直接将预发或者测试环境的jar或war包发布到线上,如果出现问题,那么就会出现大面积瘫痪,无法正常使用
引入金丝雀发布,先优先发布一台,或者比例较小。主要用来流量验证,如果通过,那么可以快速将其他版本全部更新,失败的话,则回退,只影响小部分用户。
优缺点
优点: 用户体验影响小,发布只影响少部分用户
缺点: 自动化流程不够,发布期间需要人为去操作,可能会引起服务中断等
实战
1、快速构建 deployment、 service
查看namespace为demo下所有资源
kubectl get all -n demo
通过curl -I 获取当前nginx版本
curl -I 10.1.176.133
2、更新镜像并暂停升级
kubectl set image deployment/web nginx=nginx:1.7.9 -n demo && kubectl rollout pause deployment web -n demo
查看当前deployment状态
3、验证更新
for i in {1…20};do curl -I 10.1.176.133;done
4、确认更新成功,解除暂停,并查看相关更新状态
kubectl rollout resume deployment web -n demo && kubectl rollout status deployment/web -n demo
5、查看历史版本
备注: 这里发现CHANGE-CAUSE中都是。那么无法得知变更原因,可以在更新镜像时候,在末尾加上 --record
kubectl set image deployment/web nginx=nginx:1.7.9 -n demo --record
6、回滚
kubectl rollout undo deployment web -n demo --to-revision=3
&& kubectl rollout status deployment/web -n demo
更多推荐
所有评论(0)