为什么需要回滚部署?
当新版本部署出现问题(如配置错误、服务异常或功能故障)时,通过回滚可快速恢复到之前稳定的版本,减少故障影响时间。
查看历史版本记录
在回滚前,先查看 Helm 发布的历史版本:
helm history <release-name>
- 示例:
输出类似:helm history s3-health-checker
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 2025-06-19 10:00:00 UTC deployed s3-health-checker-0.1.0 1.0.0 Install complete 2 2025-06-19 11:30:00 UTC deployed s3-health-checker-0.2.0 1.0.1 Upgrade complete
回滚到指定版本
使用 helm rollback
命令回滚到指定的历史版本(REVISION
):
helm rollback <release-name> <revision>
- 示例:回滚到
s3-health-checker
的第 1 个版本helm rollback s3-health-checker 1
回滚时保留配置(可选)
默认情况下,Helm 回滚会使用历史版本的配置。若需保留当前配置(如仅回滚代码而非配置),添加 --reuse-values
参数:
helm rollback <release-name> <revision> --reuse-values
- 场景:当前版本配置正确但代码有问题,仅回滚代码:
helm rollback s3-health-checker 1 --reuse-values
回滚后验证状态
- 检查部署状态:
helm status <release-name>
- 查看 Pod 运行情况:
kubectl get pods -l "app.kubernetes.io/instance=<release-name>"
- 验证服务功能:
# 例如访问 S3 健康检查服务 API kubectl port-forward service/s3-health-checker 8000:80 curl http://localhost:8000/status
回滚失败的处理
若回滚后部署仍异常:
- 查看事件日志:
kubectl describe deployment <release-name> kubectl logs <pod-name>
- 手动回滚或修复:
# 回滚到更早版本 helm rollback <release-name> <older-revision>
- 强制更新(谨慎使用):
helm upgrade <release-name> <chart-path> --force
最佳实践
- 版本管理:每次部署时添加清晰的版本说明(通过
--description
参数)。 - 测试环境先行:在生产环境回滚前,先在测试环境验证历史版本的稳定性。
- 保留历史版本:Helm 默认保留 10 个历史版本,可通过
helm upgrade
的--max-history
参数调整。 - 结合监控:回滚后通过 Prometheus 等工具监控服务指标,确保恢复正常。
通过以上步骤,可高效完成 Helm 部署的回滚操作,保障系统在出现问题时快速恢复到稳定状态。