Search code examples
yamlkubernetes-helm

Merge two Value files in helm


I'm looking to merge two values files in helm.

secrets.yaml:

oracle_db:
 serviceMonitor:
   endpoints:
     - module: oracledb
       port: http
       scheme: http
       url: "http://user:password@ip:port/xxx" 

I have another values.yaml file which has multiple endpoints. I want to merge both the values files. I'm tried using append function to do that: {{$endpoints := (append .Values.serviceMonitor.endpoints .Values.oracle_db.serviceMonitor.endpoints) }} When I do a dry-run, I see its picking up both the values but won't merge. Any one come across this?


Solution

  • You can use a python script to merge the values files before passing them. Below is a code snippet of what I am using.

    import yaml
    from deepmerge import always_merger
    
    fileA = “tmp.yaml"
    fileB = “feature.yaml"
    
    with open(fileA,'r+') as f:
       fileAdictionary= yaml.load(f)
    
    with open(fileB,'r+') as f:
       fileBdictionary = yaml.load(f)
    
    result = always_merger.merge(fileAdictionary, fileBdictionary)
    with open(‘newFile.yaml’,'w+') as f:
       yaml.dump(result,f)