# Argo Rollouts Canary Deployment with Analysis apiVersion: argoproj.io/v1alpha1 kind: Rollout metadata: name: my-app spec: replicas: 5 strategy: canary: steps: - setWeight: 20 - pause: {duration: 2m} - setWeight: 40 - pause: {duration: 2m} - setWeight: 60 - pause: {duration: 2m} - setWeight: 80 - pause: {duration: 2m} analysis: templates: - templateName: success-rate startingStep: 2 args: - name: service-name value: my-app selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: myapp:v2.0.0 ports: - containerPort: 8080 --- # Analysis Template using Prometheus apiVersion: argoproj.io/v1alpha1 kind: AnalysisTemplate metadata: name: success-rate spec: args: - name: service-name metrics: - name: success-rate interval: 1m successCondition: result[0] >= 0.95 failureLimit: 3 provider: prometheus: address: http://prometheus.monitoring:9090 query: | sum(rate( http_requests_total{job="{{args.service-name}}",status!~"5.."}[2m] )) / sum(rate( http_requests_total{job="{{args.service-name}}"}[2m] ))