Files
gh-ahmedasmar-devops-claude…/references/progressive_delivery.md
2025-11-29 17:51:15 +08:00

1.8 KiB

Progressive Delivery with GitOps (2024-2025)

Argo Rollouts (with ArgoCD)

Current Focus: Kubernetes-native progressive delivery

Deployment Strategies:

1. Canary

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: my-app
spec:
  strategy:
    canary:
      steps:
      - setWeight: 20
      - pause: {duration: 5m}
      - setWeight: 50
      - pause: {duration: 5m}
      - setWeight: 100

2. Blue-Green

spec:
  strategy:
    blueGreen:
      activeService: my-app
      previewService: my-app-preview
      autoPromotionEnabled: false

3. Analysis with Metrics

spec:
  strategy:
    canary:
      analysis:
        templates:
        - templateName: success-rate
        args:
        - name: service-name
          value: my-app

Metric Providers: Prometheus, Datadog, New Relic, CloudWatch

Flagger (with Flux)

Installation:

flux install
kubectl apply -k github.com/fluxcd/flagger//kustomize/linkerd

Canary with Flagger:

apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
  name: my-app
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  service:
    port: 9898
  analysis:
    interval: 1m
    threshold: 5
    maxWeight: 50
    stepWeight: 10
    metrics:
    - name: request-success-rate
      thresholdRange:
        min: 99

Best Practices

  1. Start with Manual Approval (autoPromotionEnabled: false)
  2. Monitor Key Metrics (error rate, latency, saturation)
  3. Set Conservative Steps (10%, 25%, 50%, 100%)
  4. Define Rollback Criteria (error rate > 1%)
  5. Test in Staging First

2025 Recommendation

For ArgoCD users: Argo Rollouts (tight integration, UI support) For Flux users: Flagger (CNCF project, modular design)