1 of 28

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

2 of 28

How it started…

3 of 28

Attendee Survey

Do you feel comfortable using:

  • Git
  • Docker or podman
  • Kubernetes
  • Jenkins
  • ArgoCD
  • “GitOps”
  • Blue/Green deployments
  • Canary deployments

4 of 28

CI / CD

5 of 28

Every 4 months Every week/day/hour

6 of 28

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

7 of 28

8 of 28

What is GitOps?

Treat everything as code

Git is the single source of truth

Operations through Git workflows

9 of 28

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

10 of 28

Progressive Delivery

11 of 28

  • No Big Bang
  • Deploy != Release
  • Metrics
  • Subset of Users

What is Progressive Delivery?

12 of 28

  • Decreases Downtime
  • Limits the Tragedy
  • Deploy & Release to Production faster
  • Less mocking or setting up unreliable ‘fake’ services

Why Progressive Delivery?

13 of 28

Delivery Techniques

14 of 28

Blue Green Deployment

  • All Or Nothing
  • Quick Rollback

14

15 of 28

Canary Releases

  • Small Percentage
  • Increase depending on success metrics

15

16 of 28

16

Argo Rollouts

17 of 28

Argo Rollouts

  • Rollouts is a drop-in replacement for Kubernetes Deployment with advanced capabilities for Progressive Delivery
  • Supports two types of deployment strategies:
    • Blue-Green
    • Canary
  • Integrates with a variety of traffic management solutions to shape traffic
  • Automates deployment and rollbacks with advanced analysis capabilities

17

18 of 28

Argo Rollouts

18

ArgoCD detects change

rollout

Monitors Data

19 of 28

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

20 of 28

“Smart” Progressive Delivery

Based on Metrics

20

21 of 28

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

22 of 28

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

23 of 28

Workshop

23

24 of 28

Workshop Registration

red.ht/workshop-rollout

Workshop Instructions

  • Provide a unique email address

(addresses are not collected)

  • The password is “rollout”

25 of 28

WorkShop URL�

WorkShop Instructions

Workshop content permalink:�https://openshiftdemos.github.io/argo-rollouts-workshop/argo-rollouts-workshop/main/index.html

26 of 28

https://developers.redhat.com/e-books/path-gitops

27 of 28

Free Developer e-Books & tutorials!

developers.redhat.com/eventtutorials

28 of 28

Thank you!

Ryan Jarvinen

Dev. Advocate

Red Hat

@ryanj

Christian Hernandez

Head of Community

Akuity

@christianh814

Evan Shortiss

Dev. Advocate

Red Hat

@evanshortiss