Argo Rollouts
Christian Hernandez
Head of Community
Akuity
Evan Shortiss
Dev. Advocate & TMM
Red Hat
Ryan Jarvinen
Dev. Advocate
Red Hat
Progressive Delivery with
at #SCaLE22x
How it started…
Attendee Survey
Do you feel comfortable using:
CI / CD
Every 4 months Every week/day/hour
Continuous Developer Flow
Outer
loop
Inner
loop
Pull/Merge Request
Production
Build / Package
Code
Push
Debug
Code Review
Build
Deploy
Security
Tests
Compliance
Inner loop
Outer loop
Developer
Test
What is GitOps?
Treat everything as code
Git is the single source of truth
Operations through Git workflows
CI/CD versus GitOps
9
CI/CD Engines
�Jenkins�Spinnaker�Tekton�Concourse CI�…...
Desired State
Cluster State
Observe State
Take Action
GitOps �Engines
ACM, ArgoCD, FluxCD�Razee, Faros
Desired State
Cluster State
Progressive Delivery
What is Progressive Delivery?
Why Progressive Delivery?
Delivery Techniques
Blue Green Deployment
14
Canary Releases
15
16
Argo Rollouts
Argo Rollouts
17
Argo Rollouts
18
ArgoCD detects change
rollout
Monitors Data
Rolling out automatically
19
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: rollouts-demo
labels:
app: rollouts-demo
spec:
strategy:
canary:
steps:
- setWeight: 20
- pause:
duration: "1m"
- setWeight: 50
- pause:
duration: "2m"
canaryService: rollouts-demo-canary
stableService: rollouts-demo-backend
trafficRouting:
istio:
virtualService:
name: rollout-vsvc
routes:
- primary
…
“Smart” Progressive Delivery
Based on Metrics
20
Metrics Based Rollouts
strategy:
canary:
analysis:
args:
- name: service-name
value: rollouts-demo-canary.canary.svc.cluster.local
templates:
- templateName: success-rate
canaryService: rollouts-demo-canary
stableService: rollouts-demo-stable
trafficRouting:
istio:
virtualService:
name: rollout-vsvc
routes:
- primary
steps:
- setWeight: 30
- pause: { duration: 20s }
- setWeight: 40
- pause: { duration: 10s }
- setWeight: 60
- pause: { duration: 10s }
- setWeight: 80
- pause: { duration: 5s }
- setWeight: 90
- pause: { duration: 5s }
- setWeight: 100
- pause: { duration: 5s }
21
Metrics Based Rollouts
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: success-rate
spec:
args:
- name: service-name
metrics:
- name: success-rate
interval: 10s
successCondition: len(result) == 0 || result[0] >= 0.95
failureLimit: 2
provider:
prometheus:
address: https://internal:demo@prometheus.istio-system.svc.cluster.local:9090
query: |
sum(irate(istio_requests_total{
reporter="source",
destination_service=~"{{args.service-name}}",
response_code!~"5.*"}[30s])
)
22
Workshop
23
Workshop Registration
Workshop Instructions
(addresses are not collected)
WorkShop URL�
WorkShop Instructions
Workshop content permalink:�https://openshiftdemos.github.io/argo-rollouts-workshop/argo-rollouts-workshop/main/index.html
https://developers.redhat.com/e-books/path-gitops
Free Developer e-Books & tutorials!
developers.redhat.com/eventtutorials�
Thank you!
Ryan Jarvinen
Dev. Advocate
Red Hat
@ryanj
Christian Hernandez
Head of Community
Akuity
@christianh814
Evan Shortiss
Dev. Advocate
Red Hat
@evanshortiss