только один хост, если контур prod, то два,
На prod отрабалывает. На dv отрабатывает, но если ставить | default "", но тогда в ingress будет лишний хост с указанием квадратных скобок. Как сделать, чтобы если нет значения для dv, то просто один хост отрабатывался?
hosts:
- host:
dv: appdv.mysite.ru
prod: app.mysite.ru
paths:
- path: /
port: 80
- host:
prod: appprod.mysite.ru
paths:
- path: /
port: 80
в чарте:
spec:
tls:
- hosts:
{{- range .Values.ingress.hosts }}
- {{ pluck $.Values.TIER .host | first | quote }}
{{- end }}
secretName: {{ .Values.ingress.secretName }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ pluck $.Values.TIER .host | first | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
backend:
serviceName: {{ $fullName }}
servicePort: {{ .port }}
{{- end }}
{{- end }}
Учимся задавать вопросы. Во первых, коротко. Во вторых надо указывать чего ты хочешь добиться. Пока из вопроса у тебя понятно только то, что ты используешь pluck но он даёт тебе не тот результат, который ты хочешь. Какой результат ты хочешь? Какой получаешь?
Я хочу для контура dv в ингрессе получить только 1 хост, для контура prod два хоста. Т.е. если вот тут - host: prod: appprod.mysite.ru только prod обработать, чтобы не было ошибки. Понятно, что можно указать _default: "" или в самой функции pluck добавить | default "", но надо просто отработать так, как будто элемент отсутствует совсем. Нет его - не добавлять второй (или потом третий) хост для dv. А я получаю такое, если добавляю default значение (а мне не нужны квадратные скобки и второй хост с квадратными скобками) spec: tls: - hosts: - "appdv.mysite.ru" - "[]" secretName: directus-tls rules: - host: "appdv.mysite.ru" http: paths: - path: / backend: serviceName: directus-dv servicePort: 80 - host: "[]" http: paths: - path: / backend: serviceName: directus-dv servicePort: 80
Рассказываю. Есть такой инструмент, helm называется. У него есть входные параметры (values) и шаблоны (файлики в templates). Результатом применения helm к шаблонам и values являются манифесты - валидные yaml документы. Если упрощать, то Helm(templates, values) = yaml И вот ты приходишь с вопросом в котором у тебя есть values и templates есть, а результат желаемый (yaml) - отсутствует.
Ясненько. Короче, ничего не знаете. Бла-бла.
@gecube меня обижают. Я в расстройстве... Я прям не ожидал такого хамства на мое желание помочь.
Из этого описания я тоже ничего не понял
Ебать-колотить
К сожалению, мы тут все такие
Ладно, я ради интереса попытался расшифровать: хочется на один контур повесить один домен, а на другой, продовый, два. Для этого зачем-то используется шаблономагия на полную, но чуда не происходит
у вас в .Values.TIER равен dv ? а какое поведение нужно, если ключа dv нету? Просто не добавлять хост в tls и rules?
В таком случае надо проверки раставить {{- range .Values.ingress.hosts }} {{- if hasKey .host $.Values.TIER }} - {{ pluck $.Values.TIER .host | first | quote }} {{- end }} {{- end }} {{- range .Values.ingress.hosts }} {{- if hasKey .host $.Values.TIER }} - host: {{ pluck $.Values.TIER .host | first | quote }} http: paths: {{- range .paths }} - path: {{ .path }} backend: serviceName: {{ $fullName }} servicePort: {{ .port }} {{- end }} {{- end }} {{- end }}
А может лучше не надо?
Серьезно, в дефолтном бойлерплейте подход нормальный. По ямлу с values на энв и все. Шаблономагия в хелме - это возможность на экстренные случаи, а это не он
это не ко мне вопросы, задачу решил как вопрос поставлен. Учить кого-то - не мое
О, я понял, кого ты мне напоминаешь. https://pikabu.ru/story/sluchay_v_ofise_ili_medvedi_2592045
Обсуждают сегодня