How to pass kustomize configmap to helm values

201 Views Asked by At

I have kustomize deployment which installs helm chart. This helm chart expects particular config map to exist and be mounted into pod. configMapGenerator component generates config maps with hash suffix.

I.e. following kustomize section:

configMapGenerator:
  - name: my-config-map
    files:
      - my-file.json

Will generate config map with name my-config-map-fdt4f87bkm. I want to pass this config map to helm chart in HelmRelease:

    values:
        configmap: my-config-map

However this does not work, becasue real name of config map is my-config-map-fdt4f87bkm. I want to keep using configMapGenerator to ensure that pods are rolled when there is conifguration change.

How I can pass real name of config map there?

1

There are 1 best solutions below

1
Yaser Kalali On BEST ANSWER

You have two ways. Either turn off suffix hash like:

configMapGenerator:
- name: my-config-map
  files:
  - my-file.json
  options:
    disableNameSuffixHash: true

or use kustomizeconfig.

(I'm considering by HelmRelease You mean FluxCD HelmRelease object and You provide values to it by .spec.valuesFrom not .spec.values)

for kustomize configuration, You have to provide a file with this content:

---
nameReference:
- kind: ConfigMap
  version: v1
  fieldSpecs:
  - path: spec/valuesFrom/name
    kind: HelmRelease

this file makes kustomize to append configMap suffixes to referenced configMaps for helm release values. now set your kustomization.yaml to use this file:

---
apiVersion: kustomize.config.k8s.io/v1beta1

kind: Kustomization


resources:
- helmrelease.yaml

  
configMapGenerator:
- name: my-config-map
  files:
  - my-file.json

    
configurations:
- kustomizeconfig.yaml

Output of kustomize build using kustomizeconfig file:

apiVersion: v1
data:
  my-file.json: |
    {
      "this": "that"
    }
kind: ConfigMap
metadata:
  name: my-config-map-mb2ck9tb4f
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: my-release
spec:
  chart:
    spec:
      chart: test
      sourceRef:
        kind: HelmRepository
        name: test
        namespace: test
      version: 1.1.1
  releaseName: my-release
  targetNamespace: kkk
  timeout: 15m
  valuesFrom:
  - kind: ConfigMap
    name: my-config-map-mb2ck9tb4f