Argo Rollouts — CRD for advanced deployment strategies: Canary, Blue-Green.
Rollout (Canary):
1apiVersion: argoproj.io/v1alpha12kind: Rollout3metadata:4 name: myapp5spec:6 replicas: 107 revisionHistoryLimit: 58 selector:9 matchLabels:10 app: myapp11 template:12 metadata:13 labels:14 app: myapp15 spec:16 containers:17 - name: myapp18 image: myapp:2.019 strategy:20 canary:21 canaryService: myapp-canary22 stableService: myapp-stable23 trafficRouting:24 istio:25 virtualServices:26 - name: myapp-vsvc27 routes:28 - primary29 steps:30 - setWeight: 531 - pause: { duration: 5m }32 - setWeight: 2033 - pause: { duration: 10m }34 - setWeight: 5035 - pause: { duration: 10m }36 - setWeight: 10037 analysis:38 templates:39 - templateName: success-rate40 startingStep: 2
AnalysisTemplate:
1apiVersion: argoproj.io/v1alpha12kind: AnalysisTemplate3metadata:4 name: success-rate5spec:6 args:7 - name: service-name8 metrics:9 - name: success-rate10 interval: 2m11 count: 512 successCondition: result[0] >= 0.9513 provider:14 prometheus:15 address: http://prometheus:909016 query: |17 sum(rate(http_requests_total{service="{{args.service-name}}",status=~"2.."}[2m])) /18 sum(rate(http_requests_total{service="{{args.service-name}}"}[2m]))
Blue-Green strategy: blueGreen.activeService, blueGreen.previewService, blueGreen.prePromotionAnalysis.