11.2 智能发布:使用 Argo Rollout 实现全自动蓝绿与金丝雀发布
1. 引言:Argo Rollouts 的优势
K8s 原生的 Deployment 只支持滚动更新,无法实现蓝绿、金丝雀等高级发布策略。
Argo Rollouts是 Argo 项目的一部分,专门用于高级发布策略:
- 蓝绿发布:快速切换,零停机
- 金丝雀发布:逐步放量,风险可控
- 渐进式交付:基于指标自动决策
- 自动回滚:异常自动回滚
2. 安装 Argo Rollouts
2.1 安装 Controller
kubectl create namespace argo-rollouts kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml2.2 安装 CLI(可选)
# macOSbrewinstallargoproj/tap/kubectl-argo-rollouts# Linuxcurl-LO https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-linux-amd64chmod+x kubectl-argo-rollouts-linux-amd64sudomvkubectl-argo-rollouts-linux-amd64 /usr/local/bin/kubectl-argo-rollouts3. 蓝绿发布实战
3.1 创建 Rollout
apiVersion:argoproj.io/v1alpha1kind:Rolloutmetadata:name:paymentspec:replicas:5strategy:blueGreen:activeService:payment-active# 当前生产服务previewService:payment-preview# 预览服务(新版本)autoPromotionEnabled:false# 手动确认(推荐)scaleDownDelaySeconds:30# 切换后 30 秒才删除旧版本selector:matchLabels:app:paymenttemplate:metadata:labels:app:paymentspec:containers:-name: