Progressive delivery is an advanced technique for deploying applications gradually and safely. It complements continuous delivery and enables controlled rollouts to reduce the risk associated with new releases. Using Argo CD, a declarative GitOps continuous delivery tool for Kubernetes, you can implement progressive delivery for your containerized applications effectively. Below is an example of how to use Argo CD for progressive delivery.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: 'https://github.com/my-org/my-app.git'
path: helm/my-app
targetRevision: HEAD
destination:
server: 'https://kubernetes.default.svc'
namespace: my-app
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- AllowEmpty=true
# Progressive delivery configurations
progressiveDelivery:
canary:
steps:
- setWeight: 10
- pause:
duration: 600 # Pause for 10 minutes for monitoring
- setWeight: 50
- pause:
duration: 1200 # Pause for 20 minutes for monitoring
- setWeight: 100 # Full rollout
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?