5.14 回滚策略实战:应用版本管理与快速回滚最佳实践
·
5.14 回滚策略实战:应用版本管理与快速回滚最佳实践
引言
回滚是CI/CD流程的重要保障。当新版本出现问题时,快速回滚可以最小化影响。本文将详细介绍应用版本管理和回滚策略的实现方法。
一、版本管理
1.1 版本策略
- 语义化版本:v1.2.3
- Git SHA:短SHA作为版本
- 构建号:CI/CD构建号
- 时间戳:基于时间的版本
1.2 版本标签
# 使用Git SHA
IMAGE_TAG=$(git rev-parse --short HEAD)
# 使用构建号
IMAGE_TAG=${CI_PIPELINE_ID}
# 使用语义化版本
IMAGE_TAG=v1.2.3
二、Kubernetes回滚
2.1 Deployment回滚
# 查看历史
kubectl rollout history deployment/myapp
# 回滚到上一版本
kubectl rollout undo deployment/myapp
# 回滚到指定版本
kubectl rollout undo deployment/myapp --to-revision=2
# 查看回滚状态
kubectl rollout status deployment/myapp
2.2 保留历史版本
apiVersion: apps/v1
kind: Deployment
spec:
revisionHistoryLimit: 10 # 保留10个历史版本
三、Istio回滚
3.1 VirtualService回滚
# 回滚到100% v1
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: myapp
spec:
hosts:
- myapp
http:
- route:
- destination:
host: myapp
subset: v1
weight: 100
EOF
3.2 快速回滚脚本
#!/bin/bash
# Istio回滚脚本
SERVICE=$1
VERSION=$2
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: ${SERVICE}
spec:
hosts:
- ${SERVICE}
http:
- route:
- destination:
host: ${SERVICE}
subset: ${VERSION}
weight: 100
EOF
echo "已回滚 ${SERVICE} 到版本 ${VERSION}"
四、ArgoCD回滚
4.1 使用CLI回滚
# 查看历史
argocd app history myapp
# 回滚到指定版本
argocd app rollback myapp <revision>
# 回滚到上一版本
argocd app rollback myapp
4.2 使用UI回滚
- 进入ArgoCD UI
- 选择应用
- 查看历史
- 点击回滚
五、自动化回滚
5.1 基于指标的回滚
# 监控错误率,自动回滚
apiVersion: v1
kind: ConfigMap
metadata:
name: rollback-config
data:
script: |
ERROR_RATE=$(kubectl get pods -l app=myapp --field-selector=status.phase!=Running | wc -l)
if [ $ERROR_RATE -gt 2 ]; then
kubectl rollout undo deployment/myapp
fi
5.2 CI/CD集成
# GitLab CI
rollback:
stage: rollback
script:
- kubectl rollout undo deployment/myapp
when: on_failure
only:
- main
六、版本管理最佳实践
6.1 版本策略
- 使用语义化版本
- 版本控制配置
- 记录版本变更
- 文档化版本
6.2 回滚准备
- 保留历史版本
- 测试回滚流程
- 准备回滚脚本
- 监控告警
总结
通过本文,你学会了:
- ✅ 版本管理:版本策略、标签
- ✅ Kubernetes回滚:Deployment回滚、历史版本
- ✅ Istio回滚:VirtualService回滚、脚本
- ✅ ArgoCD回滚:CLI、UI回滚
- ✅ 自动化回滚:基于指标、CI/CD集成
下一步学习
- 5.15 Prometheus监控体系
- 5.16 Prometheus服务发现机制
思考题
- 如何管理应用版本?
- 如何实现快速回滚?
- 如何实现自动化的回滚?
提示:回滚策略是生产环境的重要保障。下一节我们将学习Prometheus监控。
更多推荐
所有评论(0)