Использование переменной диаграммы.Имя в унаследованной схеме управления

#kubernetes #kubernetes-helm

Вопрос:

Я создал диаграмму управления, которая содержит некоторые ресурсы, которые повторно используются в нескольких других диаграммах управления:

 base/templates/base.yaml

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

Затем я создал диаграмму управления, которая наследует базовую диаграмму и содержит некоторые специальные ресурсы:

 sub1/templates/sub1.yaml

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

Фактический Объем Производства

В фактических выходных данных ресурсы базовой диаграммы всегда используют имя диаграммы базовой диаграммы.

 ---
# 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
 

Желаемый результат

Но я хочу, чтобы имя диаграммы вложенной диаграммы использовалось в ресурсах базовой диаграммы.

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

Как я могу этого достичь?

Комментарии:

1. Что такое «модуль управления»? Это подсхема, импортированная через requirements.yaml или Chart.yaml , или что-то еще?

2. Спасибо за подсказку. Модуль — неправильный термин. Я имею в виду карту.

Ответ №1:

Решением является повторное использование ресурсов с помощью именованных шаблонов:

 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" . }}
---
...