Cannot upgrade after converting from helm 2 to helm 3
Summary
Discovered in gitlab-org/gitlab#212529 (comment 316020997)
From upstream comment:
I was able to migrate the release of my test deployment from helm 2 to helm 3.
$ helm 2to3 convert glh2
2020/04/02 13:52:17 Release "glh2" will be converted from Helm v2 to Helm v3.
2020/04/02 13:52:17 [Helm 3] Release "glh2" will be created.
2020/04/02 13:52:17 [Helm 3] ReleaseVersion "glh2.v1" will be created.
2020/04/02 13:52:18 [Helm 3] ReleaseVersion "glh2.v1" created.
2020/04/02 13:52:18 [Helm 3] Release "glh2" created.
2020/04/02 13:52:18 Release "glh2" was converted successfully from Helm v2 to Helm v3.
2020/04/02 13:52:18 Note: The v2 release information still remains and should be removed to avoid conflicts with the migrated v3 release.
2020/04/02 13:52:18 v2 release information should only be removed using `helm 2to3` cleanup and when all releases have been migrated over.
However, when I tried to upgrade the release using helm 3, I got an error. The same upgrade path works for the release created using helm 3.
$ helm history glh2 -n gitlab
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Wed Apr 1 05:29:09 2020 deployed gitlab-3.2.1 12.9.1 Install complete
2 Thu Apr 2 13:54:39 2020 failed gitlab-3.2.2 12.9.2 Upgrade "glh2" failed: cannot patch "glh2-cainjector" with kind Deployment: Deployment.apps "glh2-cainjector" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"cainjector", "app.kubernetes.io/instance":"glh2", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"cainjector"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "glh2-cert-manager" with kind Deployment: Deployment.apps "glh2-cert-manager" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"cert-manager", "app.kubernetes.io/instance":"glh2", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"cert-manager"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "glh2-redis-master" with kind StatefulSet: StatefulSet.apps "glh2-redis-master" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden
$ helm history glh3 -n gitlab
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Wed Apr 1 13:33:31 2020 superseded gitlab-3.2.1 12.9.1 Install complete
2 Thu Apr 2 13:58:33 2020 deployed gitlab-3.2.2 12.9.2 Upgrade complete
The errors are specific to cert-manager
and redis
. Here is the redis
related message:
cannot patch "glh2-redis-master" with kind StatefulSet: StatefulSet.apps "glh2-redis-master" is invalid:
spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden
Converstation:
Known issue with redis
chart
@WarheadsSE @twk3 This might actually affect all using gitlab chart with redis who migrate the release to helm 3 and subsequently attempts to upgrade it.