Argo Rollouts

Definition

Argo Rollouts is a Kubernetes controller and set of CRDs (Custom Resource Definitions) that provide advanced deployment capabilities such as blue-green deployments, canary releases, and progressive delivery strategies. It enhances the Kubernetes native deployment mechanisms by allowing more control over the rollout process, enabling features like automated analysis, traffic shaping, and rollback capabilities.

Secure Settings Example

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: secure-rollout
spec:
  replicas: 3
  strategy:
    canary:
      steps:
      - setWeight: 20
      - pause: {}
      - setWeight: 50
      - pause: { duration: 600 }
  revisionHistoryLimit: 5
  progressDeadlineSeconds: 600
  podTemplate:
    spec:
      containers:
      - name: my-app
        image: myapp:1.0
        securityContext:
          runAsNonRoot: true
          readOnlyRootFilesystem: true

Insecure Settings Example

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: insecure-rollout
spec:
  replicas: 3
  strategy:
    canary:
      steps:
      - setWeight: 100
  revisionHistoryLimit: 1
  progressDeadlineSeconds: 300
  podTemplate:
    spec:
      containers:
      - name: my-app
        image: myapp:1.0
        securityContext:
          runAsNonRoot: false
          readOnlyRootFilesystem: false