How to get specific appVersion of an Helm Chart from Helm Repository

6/14/2021

Helm Chart has the concept of Version and appVersion.

We are using the Version to document that a content of the Helm Chart changed or not (for ex, a template, deployment.yaml has new Envrionment value or a configmap.yaml has an additional) value, for these scenarios Version number should increase. We are using appVersion to document docker image tag changes (so actual Version of the Business Application, I know there can be multiple container images but we are able identify the one of those as main application and use its tag)...

Now in our development process there can be multiple valid images of the Business Application (feature development, lets say, feature1, feature2, feature3), so we can have a constellation like the following, Helm Chart: myChart Version: 5.1 appVersion: feature1, Helm Chart: myChart Version: 5.1 appVersion: feature2, Helm Chart: myChart Version: 5.1 appVersion: feature3 most of deployment are automated but there can be cases that we have to say somebody deploy feature2.

Now here comes the dilema, in our Helm Repository we would have these 3 charts.

5.1->feature1
5.1->feature2
5.1->feature3

but when I look to the Helm Commands "Helm Install", "Helm Upgrade", "Helm Pull" I only see "--version" as parameter but no "--appVersion", so it is not possible to install

helm upgrade -i myChartFeature2  myChart --version 5.1 --appVersion feature2

We don't want to version our charts, "5.1.0-feature1" because then we will loose our ablity to identify, we have a new Chart while something in the templates has changed or we have a new version while Business Logic has changed...

So my question is

  • is there a way to say I want to install this specific appVersion of my Chart?

Thx for answers...

-- posthumecaver
kubernetes
kubernetes-helm

2 Answers

4/19/2022

AppVersion is just optional. Don't base anything on that except maybe a default fallback version of the app that the chart will install if not overridden.

Use a supplemantal --values file to override the image version deployed. values.yaml in the chart sets baseline defaults; subsequent values files supplied with --values or -f can be named something else, but each is merged and overrides anything given in previous files. --set has higher precedence than -f, but I wouldn't get into the habit of mix-n-match.

You can have an entire values file named some.yaml like this:

image:
  tag: 1.2.3

and that will override the image.tag in the default values.yaml, assuming you are using a structure like what helm create generates, though you can absolutely alter that design. Just add -f some.yaml onto the end of your command.

Or, use --set image.tag=1.2.3

-- Paul Hodges
Source: StackOverflow

6/14/2021

appVersion doesn't work this way, it isn't involved in dependency management. It's just for humans to know "this chart packages version 1.2 of Foobar", though these days many charts support multiple versions of the underlying thing so it usually is just set to the default one, if it's set at all.

-- coderanger
Source: StackOverflow