Skip to content

Helm Chart Upgrades Fail due to immutable selector fields in deployment. #140

@logand22

Description

@logand22

I believe a bug was introduced in #115 when the selector fields were upgraded to use {{- include "version-checker.labels" . | nindent 6 }}. This is because version-checker.labels includes things like app.kubernetes.io/version which changes on newer versions. The selector field is immutable in Deployments and shouldn't change between the same release.

To replicate:

$ helm upgrade -i version-checker jetstack/version-checker --version v0.3.1
Release "version-checker" does not exist. Installing it now.
NAME: version-checker
LAST DEPLOYED: Mon Dec  4 15:49:49 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

$ helm upgrade -i version-checker jetstack/version-checker --version v0.3.2
Error: UPGRADE FAILED: cannot patch "version-checker" with kind Deployment: Deployment.apps "version-checker" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/instance":"version-checker", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"version-checker", "app.kubernetes.io/version":"v0.3.2", "helm.sh/chart":"version-checker-v0.3.2"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions