Closed zevisert closed 11 months ago
@atkrad Can you take a look at this? It would be a really helpful addition to helmet for me and others
@atkrad Thank you for the review and release! This should help clean up a few of my charts quite a bit!
@zevisert You're welcome, Thanks for your contribution.
I know #20 is open still, but it needed changes to support
valuesFrom
. I want to use that feature now, so I put together a new MR for that.Also in this version, the template I made can handle envVars in either array or dictionary format, so no user-migrations are needed.. You may choose to deprecate the array format at a later date.
I tested by replacing the values.yaml file in the examples directory with these two files:
```yaml # file: charts/helmet/examples/simple/values.yaml nameOverride: testingenvvars image: repository: hello-world envVars: BASIC: value BASIC_VALUE: value: basic value BASIC_NAME_IGNORED: name: should not see this value: basic value name ignored BASIC_TEMPLATE: value: "{{ .Values.nameOverride }}" CONFIGMAP: valueFrom: configMapRef: name: my-config-map key: my-key CONFIGMAP_WITH_OPTIONAL: valueFrom: configMapRef: name: my-config-map key: my-key optional: true CONFIGMAP_TEMPLATE: valueFrom: configMapRef: name: "{{ .Values.nameOverride | lower }}" key: "{{ .Values.nameOverride | upper }}" optional: '{{ hasPrefix "test" .Values.nameOverride }}' SECRET: valueFrom: secretKeyRef: name: my-secret key: my-key SECRET_WITH_OPTIONAL: valueFrom: secretKeyRef: name: my-secret key: my-key optional: true SECRET_TEMPLATE: valueFrom: secretKeyRef: name: "{{ .Values.nameOverride | lower }}" key: "{{ .Values.nameOverride | upper }}" optional: '{{ hasPrefix "test" .Values.nameOverride }}' FIELDREF: valueFrom: fieldRef: fieldPath: metadata.namespace FIELDREF_WITH_OPTIONAL: valueFrom: fieldRef: fieldPath: metadata.namespace optional: true FIELDREF_TEMPLATE: valueFrom: fieldRef: fieldPath: '{{ default "metadata.namespace" .Values.missing }}' optional: '{{ hasPrefix "test" .Values.nameOverride }}' RESOURCE: valueFrom: resourceFieldRef: containerName: my-container resource: limits.cpu RESOURCE_WITH_OPTIONAL: valueFrom: resourceFieldRef: containerName: my-container resource: limits.cpu optional: true RESOURCE_TEMPLATE: valueFrom: resourceFieldRef: containerName: "{{ .Values.nameOverride }}-{{ randAlphaNum 5 }}" resource: '{{ lower "LIMITS.MEMORY" }}' optional: '{{ hasPrefix "test" .Values.nameOverride }}' ```values.yaml
to test map envVars with
```yaml # file: charts/helmet/examples/simple/values.yaml nameOverride: testingenvvars image: repository: hello-world envVars: - name: BASIC value: value - name: BASIC_TEMPLATE value: "{{ .Values.nameOverride }}" - name: CONFIGMAP valueFrom: configMapRef: name: my-config-map key: my-key - name: CONFIGMAP_WITH_OPTIONAL valueFrom: configMapRef: name: my-config-map key: my-key optional: true - name: CONFIGMAP_TEMPLATE valueFrom: configMapRef: name: "{{ .Values.nameOverride | lower }}" key: "{{ .Values.nameOverride | upper }}" optional: '{{ hasPrefix "test" .Values.nameOverride }}' - name: SECRET valueFrom: secretKeyRef: name: my-secret key: my-key - name: SECRET_WITH_OPTIONAL valueFrom: secretKeyRef: name: my-secret key: my-key optional: true - name: SECRET_TEMPLATE valueFrom: secretKeyRef: name: "{{ .Values.nameOverride | lower }}" key: "{{ .Values.nameOverride | upper }}" optional: '{{ hasPrefix "test" .Values.nameOverride }}' - name: FIELDREF valueFrom: fieldRef: fieldPath: metadata.namespace - name: FIELDREF_WITH_OPTIONAL valueFrom: fieldRef: fieldPath: metadata.namespace optional: true - name: FIELDREF_TEMPLATE valueFrom: fieldRef: fieldPath: '{{ default "metadata.namespace" .Values.missing }}' optional: '{{ hasPrefix "test" .Values.nameOverride }}' - name: RESOURCE valueFrom: resourceFieldRef: containerName: my-container resource: limits.cpu - name: RESOURCE_WITH_OPTIONAL valueFrom: resourceFieldRef: containerName: my-container resource: limits.cpu optional: true - name: RESOURCE_TEMPLATE valueFrom: resourceFieldRef: containerName: "{{ .Values.nameOverride }}-{{ randAlphaNum 5 }}" resource: '{{ lower "LIMITS.MEMORY" }}' optional: '{{ hasPrefix "test" .Values.nameOverride }}' ```values.yaml
to test list envVars withI bumped the chart version from
0.9.1
to0.10.0
here for the new envVars-as-map feature, but no breaking changes are expected since arrays of envVars are still tested to be working as before.