Reputation: 71
I have following array of object
--------------------------
customizedFactorImplVolume:
- name: PasswordAuthn
customFactorProviderDir: PasswordDir
- name: FaceIdAuthn
customFactorProviderDir: FaceIdDir
--------------
when this is passed as "helm install --name jenkins -f my-values.yaml", i am able to iterate over it using "range" from my deployment.yaml. But when I am unable to read it when passed the values using "--set" helm option:
--set customfactor.customizedFactorImplVolume[0].customFactorProviderDir=PasswordAuthentication --set customfactor.customizedFactorImplVolume[0].name=password --set customfactor.customizedFactorImplVolume[1].customFactorProviderDir=FaceIdAuthn --set customfactor.customizedFactorImplVolume[1].name=faceid
Not sure what is bad in "--set"("range helm api is getting values null). Any help will be really appreciated.
Upvotes: 7
Views: 30963
Reputation: 2527
This is a problem with references to array elements.
values.yaml
customizedFactorImplVolume:
- name: PasswordAuthn
customFactorProviderDir: PasswordDir
- name: FaceIdAuthn
customFactorProviderDir: FaceIdDir
template/cfg.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
{{- range $v := .Values.customizedFactorImplVolume }}
- name: {{ $v.name }}
customFactorProviderDir: {{ $v.customFactorProviderDir }}
{{- end }}
cmd
helm template test . --set customizedFactorImplVolume.0.name=n0 --set customizedFactorImplVolume.0.customFactorProviderDir=d0 --set customizedFactorImplVolume.1.name=n1 --set customizedFactorImplVolume.1.customFactorProviderDir=d1
output
apiVersion: v1
kind: ConfigMap
metadata:
name: test
data:
- name: n0
customFactorProviderDir: d0
- name: n1
customFactorProviderDir: d1
Upvotes: 13