Progressive delivery for Zipkin using Argo CD allows you to gradually roll out new features to a subset of users while monitoring performance and user feedback. This process helps mitigate risks associated with deploying new changes. Here’s how you can set up progressive delivery for Zipkin with Argo CD.
Create a feature branch in your version control system with the new changes for Zipkin.
Update the Helm chart values to reflect the new feature in your Zipkin deployment.
Use Argo CD to manage your Zipkin application. You can define a new application in Argo CD that points to your feature branch.
Leverage the Argo Rollouts controller to define a progressive rollout strategy for your changes. This includes defining a canary service and specifying the desired traffic percentage that will initially receive the new version.
Monitor the performance and logs of Zipkin. Based on your observations, you may increase the traffic to the new version gradually.
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: zipkin-rollout
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 10
- pause: { duration: 10s }
- setWeight: 50
- pause: { duration: 30s }
- setWeight: 100
selector:
matchLabels:
app: zipkin
template:
metadata:
labels:
app: zipkin
spec:
containers:
- name: zipkin
image: openzipkin/zipkin:latest
ports:
- containerPort: 9411
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?