Требование: развернуть несколько выпусков диаграммы A в одном пространстве имен k8s
У меня сложная проблема с конфигурацией имени поддиаграммы. Связи между моими диаграммами следующие:
A
|- B
|- C
|- D - postgres
|- E - graphql-engine
|- F - postgres
|- G - graphql-engine
- A зависит от B, F, G
- B зависит от C
- C зависит от D , E
И диаграмма типа graphql-engine может требовать ноль или N переменных в зависимости от приложения, которое для него есть (если вы знаете это приложение, это должен быть URL-адрес серверной части, URL-адрес действия, URL-адрес триггера и т. c.). В примере E переменные должны указывать на приложение C, а в примере G они должны указывать на A.
Я сделал диаграмму Helm для графического движка с этой частью в разделе контейнера развертывания:
env:
{{- range $k, $v := .Values.environmentVariables }}
- name: {{ quote $k }}
value: {{ quote "$v" }}
{{- end }}
Чтобы иметь правильные имена поддиаграмм, я делаю это в файле A`s variables.yaml:
B:
C:
nameOverride: A-B-C
D:
nameOverride: A-B-C-D
E:
nameOverride: A-B-C-E
F:
nameOverride: A-F
G:
nameOverride: A-G
Префиксы файла _helpers.tpl диаграммы по умолчанию nameOverride переменная с .Release.Name переменная. Это не очень хорошо и не оптимально, но я не нашел способа сделать этот процесс динамически созданным. Есть здесь кто-нибудь, кто знает способ лучше именовать? Это мой первый вопрос.
Чтобы упростить мою задачу. Мне нужно поместить список переменных следующим образом:
- VAR1 = "http: // {{.Release.Name}} - AB- C: 8080 / graphql"
- VAR2 = "http: // {{.Release.Name}} - AB- C: 8080 / actions"
в электронную таблицу из диаграммы. Но я не нашел способа разрешить шаблону Go расширять переменную .Release.Name. Я сделал это в A variables.yaml:
B:
C:
nameOverride: A-B-C
D:
nameOverride: A-B-C-D
E:
nameOverride: A-B-C-E
extraVariables:
VAR1: "http://{{ .Release.Name }}-A-B-C:8080/graphql"
VAR2: "http://{{ .Release.Name }}-A-B-C:8080/actions"
F:
nameOverride: A-F
G:
nameOverride: A-G
extraVariables:
VAR1: "http://{{ .Release.Name }}-A:8080/graphql"
Но я не нашел способа, как использовать функцию tpl Helm в части диапазона с вводом долларовой переменной. Или другая возможность сделать это sh. Я попытался просто включить какой-то «шаблон», который я могу создать в диаграмме A, но у него был плохой контекст Vars и он используется в каждом экземпляре диаграммы graphql-engine, и это неправильно в этом.
Настоящее приложение A имеет больше уровней зависимостей, но это не важно для этой проблемы. Это неправильный способ сделать это? Как вы создаете имена объектов k8s и как настраиваете переменные URL для своих приложений?
Спасибо!