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