部署管道(CI/CD Pipeline)的**回滚(Rollback)**操作,核心目标是:在发现新版本有问题(故障、性能下降、逻辑错误等)时,快速、可控地恢复到上一个稳定版本,最小化业务影响。
下面按常见场景 + 实操方式系统说明。
可回滚前提
回滚 ≠ 删库重来
# 查看历史版本
kubectl rollout history deployment/my-app
# 回滚到上一个版本
kubectl rollout undo deployment/my-app
# 回滚到指定版本
kubectl rollout undo deployment/my-app --to-revision=3
✅ 优点:
原理:新版本部署在 Green,流量在 Blue
回滚方式:
LB / Ingress:
Blue ← 流量
Green(新版本,隔离)
✅ 回滚 = 切流量
❌ 不删 Green,便于排查
回滚方式:
示例(Istio):
route:
- destination: v1
weight: 100
- destination: v2
weight: 0
✅ 最安全
✅ 可逐步恢复
ln -sfn /apps/app-v1.2 /apps/app-current
systemctl restart app
- name: rollback app
command: /deploy/rollback.sh v1.2
在 Pipeline 中:
rollback:
script:
- docker pull myapp:1.2.0
- kubectl set image deploy/my-app app=myapp:1.2.0
ALTER TABLE orders DROP COLUMN new_field;
build → deploy → smoke test → promote / rollback
rollback:
when: on_failure
script:
- kubectl rollout undo deployment/my-app
✅ 当前版本号
✅ 上一个稳定版本号
✅ 配置是否变更
✅ 数据库是否兼容
✅ 监控 / 告警是否恢复
✅ 用户影响范围
如果你愿意,可以告诉我:
我可以直接给你对应平台的回滚 YAML / 脚本模板。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。