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

Подскажите, как запускать одноразовую команду, когда что-то меняется? Т.е. я

поменял что-то, создался pod и отработал. Смысл в том, чтобы изменения конфигурации применять.

Пока мысль такая - сделать deployment с restartPolicy: OnFailure. Если pod template меняется то создастся новый pod, который отработает. Правильный подход?

45 ответов

37 просмотров

ничё не понятно

Vladimir- Автор вопроса
Andrey Kartashov
ничё не понятно

Есть настройки кейклока, при их изменении должна запуститься утилита keycloak-config-cli (в своем образе), которая один раз отработает, подключится к работающему кейклоку и применит эти изменения. Если я завтра эти настройки меняю, в кубернетесе конфигмап меняется и опять надо, чтобы запустилась эта утилита.

Vladimir
Есть настройки кейклока, при их изменении должна з...

о, уже вырисовывается. То есть тебе надо при изменении configmap перезапустить pod, который монтирует его как файл?

Vladimir- Автор вопроса
Andrey Kartashov
о, уже вырисовывается. То есть тебе надо при измен...

примерно, только в поде команда одноразовая, то бишь она отработала и контейнер потушился

Vladimir- Автор вопроса
Andrey Kartashov
ну то есть у тебя это сделано через job?

собственно поэтому через деплоймент и подумал - там при изменении pod spec будет пересоздаваться pod и запустится заново. Ну а pod spec через kustomize изменится т.к. configmap поменяет своё название при изменении содержимого

Vladimir- Автор вопроса
Aleksey Lazarev
Вообще это делает енрипоинт

не очень понял, чтобы отработала эта утилита, кейклок уже должен быть запущен, я думал сделать два контейнера в поде кейклока, но чет странно это всё

Vladimir- Автор вопроса
Aleksey Lazarev
Ты читал ентрипоинт клоаки в целом?

не особо, ты про то, что можно импортировать рилм? это я в курсе, но мне надо его менять если он поменялся, уже существующий он не поменяет, или я ошибаюсь?

Aleksey Lazarev
Ты читал ентрипоинт клоаки в целом?

так keycloak-config-cli через него и работает. Это configuration-as-json утилита

Vladimir
не особо, ты про то, что можно импортировать рилм?...

можно взять что-то и на основе этого сделать - https://github.com/jimmidyson/configmap-reload или shell-operator от флант ну или самому написать. Достаточно подписаться на события изминения configmap и запускать keycloak-config-cli

Vladimir- Автор вопроса
Dmitry Sergeev 🇺🇦
можно взять что-то и на основе этого сделать - htt...

ок, спасибо, подумаем. а чем плох подход с деплойментом и соотв. restartPolicy?

Vladimir
ок, спасибо, подумаем. а чем плох подход с деплойм...

а я не понял как это поможет. При изминении pod.template deployment в любом случае будет делать rolling update, restartPolicy на это не влияет

Vladimir- Автор вопроса
Dmitry Sergeev 🇺🇦
а я не понял как это поможет. При изминении pod.te...

Ну старый под удалится, новый создастся. Отработает и будет висеть 0/1, никому не мешая.

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

Vladimir- Автор вопроса
Dmitry Sergeev 🇺🇦
при роллинг апдйетах старые поды просто удаляются....

мне надо не кейклок рестартовать, а другую тулзу запускать (docker.io/adorsys/keycloak-config-cli), чтобы она один раз отработала успешно и завершилась. Кейклок тут просто при том, что он где-то есть, он может и не в кластере быть (хотя он в кластере).

Vladimir
мне надо не кейклок рестартовать, а другую тулзу з...

Эта утилита должна запускаться где? Она с киклоак как работает? По апи ?

Vladimir- Автор вопроса
George Gaál
Эта утилита должна запускаться где? Она с киклоак ...

ну желательно в кубернетесе. Да, по хттп соединяется и через апи работает.

Vladimir
мне надо не кейклок рестартовать, а другую тулзу з...

если у тебя configmap в том же kustomize что и джоб. То generateName да

Vladimir- Автор вопроса
Vladimir
ок, спасибо, подумаем. а чем плох подход с деплойм...

этот подход плох тем, что в deployment нельзя менять restartPolicy, он принимает только always, ясно-понятно)

Vladimir- Автор вопроса
Vladimir
этот подход плох тем, что в deployment нельзя меня...

полагаю, можно через deployment в котором в init container-е сделать что надо, а в основном контейнере sleep infinity сделать, ну это уже изврат какой-то

Vladimir
этот подход плох тем, что в deployment нельзя меня...

а зачем в deployment менять restartPolicy я так и не понял

Vladimir- Автор вопроса

Ну у меня был план запускать через deployment, т.к. его можно менять, а job нельзя. Типа поменял deployment и он создал под, который отработал и всё, до следующего изменения. В итоге через джоб сделал, но его надо руками удалять перед каждым изменениям, неудобно, конечно.

Vladimir
Ну у меня был план запускать через deployment, т.к...

а понял. Да, на этот случай придуман generateName, но ваще в kustomize и до этого были генераторы вроде для Job'ы (generateName - это фича куба, а генераторы имен kustomize на его уровне делаются)

Vladimir- Автор вопроса
Dmitry Sergeev 🇺🇦
а понял. Да, на этот случай придуман generateName,...

Я пока не понял, как. Я ничего подобного не нашел и в их гитхабе подобные запросы остались без ответа. Через generateName он работать отказывается.

Vladimir
1.25

покажи как делаешь Job с generateName

Vladimir- Автор вопроса
Dmitry Sergeev 🇺🇦
покажи как делаешь Job с generateName

% cat kustomization.yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: default resources: - job.yaml % cat job.yaml apiVersion: batch/v1 kind: Job metadata: generateName: test- spec: template: spec: containers: - name: test image: alpine command: ["echo", "Job's done1"] restartPolicy: Never % k apply -k . error: accumulating resources: accumulation err='accumulating resources from 'job.yaml': missing metadata.name in object {{batch/v1 Job} {{ } map[] map[]}}': must build at directory: 'test/job.yaml': file is not directory

похоже тебе придется выделять на этапы k apply -k . k create -f path/to/job.yaml

Vladimir- Автор вопроса
Dmitry Sergeev 🇺🇦
похоже тебе придется выделять на этапы k apply -k ...

Так можно, да. Хотелось просто, чтобы оно само запускалось, когда что-то меняется. Через фиксированное имя так и происходит (точней не происходит, но если что-то поменялось - выдаёт ошибку, что подсказывает, что старую job надо удалить).

Dmitry Sergeev 🇺🇦
похоже тебе придется выделять на этапы k apply -k ...

flux/argo кстати норм схавают и задеплоят. argocd точно generateName умеет определять и вызывает kubectl create для таких Job

Vladimir- Автор вопроса
Vladimir
Так можно, да. Хотелось просто, чтобы оно само зап...

ну оно само. Просто вместо однго этапа нужно два если хочется в один этап, то в kustomize тебе придется генератор написать

Dmitry Sergeev 🇺🇦
можно взять что-то и на основе этого сделать - htt...

по описанию похоже, будто это часть функционала от stakater/reloader. Это так? Если да - то зачем его рекомендовать, а не stakater/reloader?

John Smith
по описанию похоже, будто это часть функционала от...

stacker/reloader также был рекомендван. А почему посоветовал глянуть именно этот понятно из контекста треда (если интересно, вникай читай тред, если не интересно, то непонятно к чему доп. вопросы)

Dmitry Sergeev 🇺🇦
stacker/reloader также был рекомендван. А почему п...

Читал, но не понял. Чел просил триггер "cm changed -> restart pod". По описанию предложенной утилиты похоже, что она только это и умеет, а stakater/reloader умеет ещё и много чего ещё, потому и вопрос про энтропию... ok, nvm

John Smith
Читал, но не понял. Чел просил триггер "cm changed...

ну ваще чел просил cm changed => run keyclock cli который заливает конфигурацию в keycloack рестартовать keycloack он не хотел следовательно stacker/reloader не то что нужно > По описанию предложенной утилиты похоже, что она только это и умеет, нет, она не рестартит поды

Dmitry Sergeev 🇺🇦
ну ваще чел просил cm changed => run keyclock cli ...

ааа, она даже рестартить не умеет, только по http оповещать... Я не знаю зачем оно существует, если stakater/reloader уже изобретён

John Smith
ааа, она даже рестартить не умеет, только по http ...

тебе нужно перекомпелировать свою stacker/reloader центричность и понять, что есть скоуп задач, когда не нужно перезапускать поды после имзинения конфига. Например так реализован релоад конфига прометеуса, в prometheus операторе Повторюсь, stacker/reloader был пропущен, поскольку рестартовать pod не нужно, нужно было залить новую конфигурацию в keycloack. Как пример такого контроллера было предложено глянуть на https://github.com/jimmidyson/configmap-reload

Dmitry Sergeev 🇺🇦
тебе нужно перекомпелировать свою stacker/reloader...

теперь понятно (упустил из виду, что stakater/reloader умеет только pod reload, но не умеет просто оповещать по http / сигналом процессу), спасибо

John Smith
теперь понятно (упустил из виду, что stakater/relo...

опять не много упустил смысл =) рубрика пересказываем треды в том сообщении было предложенно глянуть этот контроллер как концепт, ему не нужно было слать вебхук, ему нужно залить конфигурацию в keycoack. Посмотрев код контроллера, можно быстро своять свое решение, которое вместо хука запускает нужный тебе exec, ну или сразу в API keyclock заливает конфиг.

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта