Override config map file in helm

6/29/2018

We have helm charts to deploy our application. We use a configuration.json file for application properties and load them to config map. But users typically use their own configuration file.

Default configuration.json file is packaged inside helm charts under data directoty. This file is read as

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
{{ (.Files.Glob .Values.appConfigFile).AsConfig | indent 4}}

And in values

appConfigFile: data/configuration.json

If users install our charts directly from repository how can this configuration file be overriden? doing --set appConfigFile=/path/to/custom.json doen't populate config map.

If charts are untarred to a directory they can add the custom configuration file into charts directory and give the configuration file using --set appConfigFile=customData/custom.json works

Can file overrides be achieved when charts are deployed from repository directly?

-- Dheeraj Joshi
kubernetes
kubernetes-helm

1 Answer

7/4/2018

Adding custom configuration to a values file and execute helm install using -f flag is a solution.

customValues.yaml

overrideConfig: true
customConfig:{
//Add your custom json here as variable value
}

Config map yaml

#If custom values file passed then overrideConfig variable will be set. 
#So load configmap from customConfig variable
{{ if .Values.overrideConfig}}
    app-config.json : |-
      {{ toJson .Values.customConfig }}
{{ else }}
# Else load from the default configuration available in charts.
{{ (.Files.Glob .Values.appConfigFile).AsConfig indent 4 }}
{{ end }}

If custom configuration is needed

helm install -f customValues.yaml repo/chartName

Not sure if this is the perfect solution, but ended up taking this route.

-- Dheeraj Joshi
Source: StackOverflow