63 lines
1.3 KiB
YAML
63 lines
1.3 KiB
YAML
# 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]
|
|
))
|