Replies: 2 comments 4 replies
-
Whichever conditions are used, it would be useful to have as much information as possible inside of these condition(s) so it can be surfaced to the end user by kstatus/kpt. For example with the helm-controller, when an install / upgrade / non-ignored test fails the Reason/Message i.e. InstallFailed / UpgradeFailed / TestFailed would ideally be propogated to the Reconciled/Stalled/Ready condition, whereas currently a generic ReconciliationFailed / "reconciliation of %s failed" is used. |
Beta Was this translation helpful? Give feedback.
-
The convention we follow now is what the Kubernetes builtin controllers do. If Currently we set the ready condition like so:
This allows users of Should we consider adding |
Beta Was this translation helpful? Give feedback.
-
Currently the toolkit controllers provide a Ready condition. While there is support for this in kstatus/kpt, there are some caveats mentioned:
These seem already handled (only checked helm-controller), since the ready condition is set to unknown before setting the observed generation, and then set to true/false simultaneously with setting the observed generation
This is a fundamental limitation of the Ready condition, so the controllers will have no way of signalling fatal / non-recoverable errors, so a client e.g. kpt cannot determine this, and must continue to wait until whatever timeout it has. Using the recommended Stalled/Reconciled conditions would resolve this. If a controller supports retries (at least helm-controller does) it should be marked Stalled once retries are exhausted.
Whatever the kstatus/kpt solution is, it would be nice to have it documented, and potentially gated against.
Beta Was this translation helpful? Give feedback.
All reactions