I'm fairly new to helm as I use charts created by other ppl for our applications and I'm trying to do something that I suppose is kinda easy but couldn't manage to find how to. Basically I want to pass application version to my react app. Based on the few information I found, here is what I came up with
image:
tag: 0.2.6
extraEnv:
- name: REACT_APP_APP_VERSION
value: {image.tag}thx in advance
I assume the code you sent is your values.yaml. Then, the first part is correct.
image:
tag: 0.2.6Now, you don't specify variables passed to pod in values.yaml, but in your templates/* files. For example, to pass an variable to your pod, you can use the following code:
env:
- name: REACT_APP_APP_VERSION
value: "{{ .Values.image.tag }}"Check this for the complete example.
Note that you cannot use values from values.yaml inside values.yaml. So the code you sent won't work. That is because, the values.yaml file itself is not evaluated.
From Documentation
The
tplfunction allows developers to evaluate strings as templates inside a template. This is useful to pass a template string as a value to a chart or render external configuration files. Syntax:{{ tpl TEMPLATE_STRING VALUES }}
You will have something similar to
values.yaml
image:
repository: k8s.gcr.io/busybox
tag: "latest"
extraEnv: "{{ .Values.image.tag }}"pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: test
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
env:
- name: REACT_APP_APP_VERSION
value: {{ tpl .Values.extraEnv. }}