Replies: 3 comments 4 replies
-
Helm has officially avoided this as a core function. Which leaves us to sort out a path for the project. |
Beta Was this translation helpful? Give feedback.
-
Helm has very good reasons for not supporting this generically. As I understand it, it ultimately comes down to this:
I totally get where they're coming from, there, but I'm not sure that should be interpreted as generic guidance for all Helm charts. It really comes down to the individual chart, wouldn't you agree? The fact is, CRDs are a global resource. Changing them at all is a risk, but change is a fact of life: if the user wants to use a new chart, they're going to need the new CRD. I expect individual charts try to be as careful with CRD changes as they are with any other kind of public API. I think one big question, though, is whether nginx actually needs its CRDs to run. In other words: can we actually do this in one chart? Or are two actually required to pull this off, which changes the proposal a bit? Metallb actually makes one the dependency of the other, which is an interesting take on it. Then it comes down to how nginx is deployed. If there are multiple ingress controllers in a cluster, they are sharing the same CRDs. In that case, we can say that the user should handle the CRD upgrades outside of the ingress controller upgrades, but as far as I can tell that still assumes that the new CRDs were changed in a way that is still compatible with the old version of the controller. I'm not sure how different that really is from having one of the charts handle those upgrades, but that sounds awkward doesn't it. In reality, I'd say the multiple-ingress-controller situation will always be awkward, even if this helm chart took care of that upgrade (either the way we're discussing here, or via a dual-chart pattern like Rook). But there's one very clear use-case where having the chart handle CRD upgrades is clearly useful: when a cluster has a single ingress controller which alone is consuming its CRDs. The risk of upgrading the CRDs here seems awfully low, as long as the user has opted into it and read the bit of documentation that says not to do it with multiple ingress controllers.
This outlines my thinking indeed. As long as the user meets the one requirement of not having multiple ingress controllers, if they enable this option, it makes it virtually impossible for them to mess up their CRDs. That sounds like a win. |
Beta Was this translation helpful? Give feedback.
-
@oseoin could we get your opinion? |
Beta Was this translation helpful? Give feedback.
-
Issue #5063 proposes adding an
installCRDs
flag, similar to cert-manager, to improve our CRD management, which is a common pain point.One case against adding this, is that it goes against helms CRD management guidelines, but if it's optional and defaults to false it could strike a balance, being a user friendly option for people with simpler setups.
We made a recent update to our helm
NOTES.txt
file for guiding users through upgrades. A more integrated solution like ainstallCRDs
flag could further improve user experience.Maybe it is worth a review of popular projects which use CRDs, to determine whether they use something like
installCRDs
, or the dual-charts method, or like us, require manual upgrades of CRDs after a helm upgrade if the CRDs changed?Beta Was this translation helpful? Give feedback.
All reactions