Argo Rollouts:Kubernetes高级部署策略控制器
核心功能
基于CRD扩展Kubernetes部署能力:
- 支持蓝绿发布、金丝雀发布等模式
- 提供渐进式交付与金丝雀分析能力
- 集成Istio/Ingress实现流量精细控制
- 支持自动回滚与人工审批机制
- 支持自定义指标分析与KPI验证
核心概念
Rollout资源
替代Deployment的CRD,实现复杂发布策略
渐进式交付
通过可控阶段发布降低风险,结合自动化指标分析驱动升级决策
部署策略
- 滚动更新:逐步替换旧版本
- Recreate:先删除旧版本再部署
- 蓝绿发布:并行运行双环境
- 金丝雀发布:按比例分流验证新版本
架构组件
控制器
监听Rollout CRD并执行部署逻辑
流量管理
通过Istio VirtualService实现流量切分
分析模板
AnalysisTemplate定义指标阈值,驱动自动决策
指标提供方
集成Prometheus等监控系统
操作实践
基础部署
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: app-deployment
spec:
replicas: 5
strategy:
canary:
steps:
- setTraffic: 20
- pause: {}
- setTraffic: 40
- pause: {duration: 10m}
selector:
matchLabels:
app: demo-app
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: main
image: registry/app:v1
版本更新
kubectl argo rollouts set image app-deployment main=registry/app:v2
流程控制
# 继续发布
kubectl argo rollouts promote app-deployment
# 终止发布
kubectl argo rollouts abort app-deployment
Istio集成
spec:
strategy:
canary:
canaryService: app-canary-svc
stableService: app-stable-svc
trafficRouting:
istio:
virtualServices:
- name: app-vs
routes: [http-primary]
配置详解
蓝绿发布配置
blueGreen:
activeService: prod-svc
previewService: staging-svc
autoPromotionEnabled: false
prePromotionAnalysis:
templates:
- name: validation-check
金丝雀策略
canary:
steps:
- setTraffic: 10
- analysis:
templates:
- name: latency-test
- setTraffic: 100
trafficRouting:
istio:
virtualService:
name: main-vs
动态扩缩容
dynamicStableScale: true
scaleDownDelaySeconds: 300
分析配置
analysis:
successfulRunHistoryLimit: 10
unsuccessfulRunHistoryLimit: 5
