Reputation: 1650
We are using helm charts to deploy our charts in Openshift.
This is our workflow:
The issue is that usually the helm-chart does not change but the docker image v1.0.0 (snapshot) may change several times during the sprint therefore when we try to upgrade the helm chart in our test env, helm does not detect any change and then the application is not updated.
To solve this situation, currently, every time that we have to deploy in the test environment, we uninstall the application and re install the helm chart (with the image pull policy == always)
I was wondering if there is a way to modify our helm chart in order to force it to redeploy when we build a new version. e.g we tried to add an annotation in the deployment.yaml : build-time: {{ now }} but this changes every time so the helm chart is always redeployed in the test environment (and usually is fine but not if we trigger a manual re-deploy of all our components).
Is it possible for example to provide a parameter during the helm package
command?
Something like helm package --set package-time=timestamp
and then we could save this value as annotation.
Any better solution?
Upvotes: 4
Views: 1002
Reputation: 2987
In addition to you functional tag (eg v1.0.0), add a second tag to your image with something unique, for example the git-sha commit tag coming from git used at build time.
The functionnal tag is a "floating" tag, it will move from one image to the other but the "git-sha" tag will be unique
One way to get a short version of git-sha:
git log -n 1 --pretty=format:'%h'
In your deployment, specify the "git-sha" tag for your image in your helm chart as a variable
The functional tag/version could be read from a single line file in your source, So when you are ready to push v2.0.0, just change the file and commit it
Upvotes: 3
Reputation: 5110
There is two options to solve the problem:
helm upgrade
. To achieve that, you can add a new annotation to your deployment template, with a random number as a value, here are the instructions from the official documentation:kind: Deployment
spec:
template:
metadata:
annotations:
rollme: {{ randAlphaNum 5 | quote }}
Upvotes: 0