4 ms·
Why is applying a full manifest “declarative” but applying a patch is “imperative”? That’s clearly an error.
by throwaway894345 4y ago
Why is applying a full manifest “declarative” but applying a patch is “imperative”? That’s clearly an error.
- sgarland 4y agoThen open a PR.
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- throwaway894345 4y agoThis is a strange way to concede an argument, but I’ll take it.
- tbrownaw 4y agoApplying a full manifest is "this is your state now". Applying a patch is "make these changes to your existing state". That dependency on existing state is a difference, and it seems to map reasonably well to what declarative/imperative seem to usually be used to mean in this context.
- throwaway894345 4y ago1. A strategic merge patch says "this is your state now" (the only difference is the scope of the state in question, with a full manifest including a bunch of extraneous stuff) 2. "make these changes to your existing state" is still declarative
- jen20 4y ago> Applying a full manifest is "this is your state now". It isn’t though. It’s “please make the state look like this eventually”. You do not patch state, just spec. Controllers effect the changes.
- throwaway894345 4y agoYou're both correct, but you're talking about different states. The parent's "state" is the state of the etcd database and your state is the actual state of the resources that the controllers are managing. That said, the parent is wrong that a full manifest is declaring the (etcd) state in a way that a (strategic merge) patch isn't--both are declaring etcd state, but a strategic merge patch is doing so in finer-grained increments. A strategic merge patch can declare zero state or many full manifests, while applying full manifests can only work in increments of complete resource manifests. But both are telling Kubernetes "this is your (etcd) state now".