172 похожих чатов

Пытаюсь использовать pluck, но не работает. Смысл: если контур dv,

только один хост, если контур 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 }}

17 ответов

18 просмотров

Учимся задавать вопросы. Во первых, коротко. Во вторых надо указывать чего ты хочешь добиться. Пока из вопроса у тебя понятно только то, что ты используешь pluck но он даёт тебе не тот результат, который ты хочешь. Какой результат ты хочешь? Какой получаешь?

Anna- Автор вопроса
Andrey Kartashov
Учимся задавать вопросы. Во первых, коротко. Во вт...

Я хочу для контура 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

Anna
Я хочу для контура dv в ингрессе получить только 1...

Рассказываю. Есть такой инструмент, helm называется. У него есть входные параметры (values) и шаблоны (файлики в templates). Результатом применения helm к шаблонам и values являются манифесты - валидные yaml документы. Если упрощать, то Helm(templates, values) = yaml И вот ты приходишь с вопросом в котором у тебя есть values и templates есть, а результат желаемый (yaml) - отсутствует.

Anna- Автор вопроса
Andrey Kartashov
Рассказываю. Есть такой инструмент, helm называет...

Ясненько. Короче, ничего не знаете. Бла-бла.

Anna
Ясненько. Короче, ничего не знаете. Бла-бла.

@gecube меня обижают. Я в расстройстве... Я прям не ожидал такого хамства на мое желание помочь.

Anna
Я хочу для контура dv в ингрессе получить только 1...

Из этого описания я тоже ничего не понял

Andrey Kartashov
Рассказываю. Есть такой инструмент, helm называет...

Ладно, я ради интереса попытался расшифровать: хочется на один контур повесить один домен, а на другой, продовый, два. Для этого зачем-то используется шаблономагия на полную, но чуда не происходит

Anna
Я хочу для контура dv в ингрессе получить только 1...

у вас в .Values.TIER равен dv ? а какое поведение нужно, если ключа dv нету? Просто не добавлять хост в tls и rules?

Anna
Я хочу для контура dv в ингрессе получить только 1...

В таком случае надо проверки раставить {{- 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 }}

Andrey
А может лучше не надо?

Серьезно, в дефолтном бойлерплейте подход нормальный. По ямлу с values на энв и все. Шаблономагия в хелме - это возможность на экстренные случаи, а это не он

Andrey
А может лучше не надо?

это не ко мне вопросы, задачу решил как вопрос поставлен. Учить кого-то - не мое

О, я понял, кого ты мне напоминаешь. https://pikabu.ru/story/sluchay_v_ofise_ili_medvedi_2592045

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта