-
Notifications
You must be signed in to change notification settings - Fork 232
Description
Feature Description
Problem Statement:
KRO will create "child" resources, and in theory users can change (or delete) those resources. What should KRO do in this case?
IIUC currently there is a configurable re-reconciliation interval (10 hours?) so KRO will fix/recreate any drift/deletion every 10 hours.
Proposed Solution:
We can watch the child objects, and then we can more rapidly respond to any drift. (Note: we might want to allow users to not correct drift, though I'm not sure whether people want this)
The solution would have to be careful both not to create "too many" watches, and to not get confused by other controllers acting on the same objects. For example, if the status of an object changes, we should not re-reconcile. We need to define whether we want to manage all spec fields or just the ones that user specifies (and be mindful of e.g. Deployment spec.replicas).
If we are using watch, we should also use that for more rapid updating of the status of our "child" resources. So this should improve performance vs polling (are we polling today?)
Alternatives Considered:
We could continue to use polling, or fall back to polling. Watch is an optimization over polling. I think we should focus this issue on the desired behaviour when "child" resources do change / are deleted, rather than how we achieve that. (Or at least, I think they are separable decisions)
Additional Context:
I'm working on applyset in kubectl which may have some overlap.
- Please vote on this issue by adding a 👍 reaction to the original issue
- If you are interested in working on this feature, please leave a comment