Matthias M
Matthias M

Reputation: 14950

Usage of Variable Chart.Name in inherited Helm Chart

I've created a helm chart which contains some resources, which are reused in several other Helm charts:

base/templates/base.yaml

apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: {{ .Chart.Name }}

Then I've created a helm chart which inherits the base chart and contains some special resources:

sub1/templates/sub1.yaml

...
name: {{ .Chart.Name }}

Actual Output

In the actual output the resources of the base chart use always the chart name of the base chart.

---
# Source: sub1/templates/sub1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sub1
---
# Source: sub1/charts/base/templates/base.yaml
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: base

Wanted output

But I want the chart name of the sub chart to be used in the base chart resources.

# Source: sub1/charts/base/templates/base.yaml
...
kind: SecretProviderClass
metadata:
  name: sub1

How can I achieve this?

Upvotes: 0

Views: 1517

Answers (1)

Matthias M
Matthias M

Reputation: 14950

A solution is to reuse the resources via named templates:

base/templates/base.yaml

{{- define "base-lib.secret-provider-class" -}}
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: {{ .Chart.Name }}
{{- end -}}


sub1/templates/sub1.yaml

{{ include "base-lib.secret-provider-class" . }}
---
...

Upvotes: 1

Related Questions