Comments (9)
Unfortunately, in the system I'm working with the creation/deletion of these deployments is highly dynamic, so this initial double rollout probably isn't going to work for us.
Thanks for your help on this 👍
from wave.
Could you please share the contents of your deployent.yaml
?
The behaviour you observe is expected if the Deployment and any of the ConfigMap
or Secrets
it consumes are updated at the same time. Could that be happening here?
from wave.
The content of deployment.yaml
is in the issue (expand the Deployment manifest section).
The deployment is not actually referencing any Configmaps
or Secrets
- merely adding the wave annotation to the deployment is enough to trigger this strange behaviour.
from wave.
I think I see now.
This should only happen the first time the wave.pusher.com/update-on-config-change: "true"
annotation is added.
In that case it is expected.
Adding the annotation causes a new ReplicaSet
to be created (this is the case for any modification made to a Deployment
.
Now with the annotation present, wave
will take over managing the Deployment
and add its own annotation containing a hash of the current configuration. This is used to track any changes to this configuration going forward.
In your case, the Deployment
does not actually reference any config objects, so this is somewhat meaningless. If it did consume a ConfigMap
, for example, any change to its contents would then cause wave
to update the hash annotation and thus trigger a rollout.
The additional Pods being created if wave
is enabled on a Deployment
that already exists should not cause any problems and is unavoidable.
from wave.
Thanks for your quick responses on this.
It's good to know that what I'm seeing is expected, but I'm not sure I agree that this behaviour is harmless, at least for my use case.
I'm working with deployments of 1 replica, where each replica is stateful database and can be very resource heavy in terms of memory and CPU requests. Scheduling an extra pod, even for a short time is probably not acceptable in that case. That's before factoring in the chance that both pods land on the same node and race/overwrite each other on the same PVC at startup resulting in neither of them being able to start successfully.
If this behaviour is unavoidable, I guess I'll have to look elsewhere for a solution for rolling these pods in response to secret mount changes.
from wave.
This certainly is one of the challenges of running large, stateful workloads on Kubernetes.
The way wave
is designed, the behaviour you have observed is sadly indeed not avoidable.
That said, it won't occur in steady-state but only when a Deployment
is first created or the wave
annotation first added.
After that initial double rollout, you should expect to see exactly one per config change, although I appreciate that may not be good enough for your use case.
from wave.
@gargath What if Wave added its hash annotation only after the first time a secret/configmap is updated?
from wave.
This issue has been inactive for 60 days. If the issue is still relevant please comment to re-activate the issue. If no action is taken within 7 days, the issue will be marked closed.
from wave.
For anyone interested: This has now been fixed. With Wave 0.6+ you can enable webhook which eleminate an additional short-lived replica in almost any case.
from wave.
Related Issues (20)
- use rbac.authorization.k8s.io/v1 HOT 7
- Wave is not starting the stateful set pods HOT 2
- helm installation instructions don't work HOT 9
- Does wave support Kubernetes Jobs HOT 2
- Helm chart installation fails on Kubernetes v1.23.6+k3s1 HOT 1
- changes to projected volumes not detected properly HOT 3
- v1beta1 resource not available change to v1 to make crds work on helm install HOT 9
- non-rolling update, i.e. kill pod before starting new HOT 2
- Can't deploy helm chart on k8s version >v1.22 HOT 5
- [helm] Cannot install chart in kubernetes 1.25 HOT 2
- [Question] Any security issues to consider? HOT 1
- Wave Removes StartupProbes HOT 4
- New and motivated project member HOT 8
- Support for releases / tags HOT 2
- Getting rid of ownerReferences and finalizers
- Website is outdated HOT 1
- Upgrade to 4.1 fails HOT 4
- Children Tracking Issue: Required and Non-Required Keys are mixed up
- Children Tracking Issue: Multiple references to the same child overwrite each other
- Children Tracking Issue: Wave does not verify if all keys exist in required children
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wave.