Issues you may face:

CRD installation — it fails, but it doesn’t

You may see the following errors when installing helm charts which contain CRDs:

Stop panicking! It’s actually a fake error and they have been installed properly:

You see that error because Helm 3 deprecated the hook for crds and has now a policy that they should be in a crd directory. But it installs them anyway ;) More info here:

“UPGRADE FAILED: rendered manifests contain a new resource that already exists”

Another nasty issue. It may happen sometimes when you try to run “helm upgrade”. But you may be wondering… wait… wasn’t the 3-way merge patch (taking live state into account while doing an upgrade) one of the key features of Helm 3? So how come that my upgrade fails due to “resource already existing” ??? Well, that particular issue is a bit more complicated and unfortunately, the error message doesn’t explain properly what’s happening here. You see — this issue happens only when you change “apiVersion” of the resource and then try to upgrade it. If you would change anything else (metadata, spec) then it would work fine as expected. But if you change this:

to this:

…then it will fail because kubernetes treats apiVersion change as a breaking change and does not allow to change it just like this. There is some underground logic required to make that happen which Helm 3 didn’t implement (yet). There is a workaround for this — you can upgrade specific resource manually (via kubectl) and then remove Helm secret for that particular Chart. Or just don’t upgrade apiVersion until Helm fixes the problem ;)