поменял что-то, создался pod и отработал. Смысл в том, чтобы изменения конфигурации применять.
                  
                  
                  
                  
                  
                  Пока мысль такая - сделать deployment с restartPolicy: OnFailure. Если pod template меняется то создастся новый pod, который отработает. Правильный подход?
                  
                  
                
ничё не понятно
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Есть настройки кейклока, при их изменении должна запуститься утилита keycloak-config-cli (в своем образе), которая один раз отработает, подключится к работающему кейклоку и применит эти изменения. Если я завтра эти настройки меняю, в кубернетесе конфигмап меняется и опять надо, чтобы запустилась эта утилита.
о, уже вырисовывается. То есть тебе надо при изменении configmap перезапустить pod, который монтирует его как файл?
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  примерно, только в поде команда одноразовая, то бишь она отработала и контейнер потушился
ну то есть у тебя это сделано через job?
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  собственно поэтому через деплоймент и подумал - там при изменении pod spec будет пересоздаваться pod и запустится заново. Ну а pod spec через kustomize изменится т.к. configmap поменяет своё название при изменении содержимого
Вообще это делает енрипоинт
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  не очень понял, чтобы отработала эта утилита, кейклок уже должен быть запущен, я думал сделать два контейнера в поде кейклока, но чет странно это всё
Ты читал ентрипоинт клоаки в целом?
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  не особо, ты про то, что можно импортировать рилм? это я в курсе, но мне надо его менять если он поменялся, уже существующий он не поменяет, или я ошибаюсь?
так keycloak-config-cli через него и работает. Это configuration-as-json утилита
можно взять что-то и на основе этого сделать - https://github.com/jimmidyson/configmap-reload или shell-operator от флант ну или самому написать. Достаточно подписаться на события изминения configmap и запускать keycloak-config-cli
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ок, спасибо, подумаем. а чем плох подход с деплойментом и соотв. restartPolicy?
а я не понял как это поможет. При изминении pod.template deployment в любом случае будет делать rolling update, restartPolicy на это не влияет
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Ну старый под удалится, новый создастся. Отработает и будет висеть 0/1, никому не мешая.
при роллинг апдйетах старые поды просто удаляются. Видимо я не понимаю о чем речь
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  мне надо не кейклок рестартовать, а другую тулзу запускать (docker.io/adorsys/keycloak-config-cli), чтобы она один раз отработала успешно и завершилась. Кейклок тут просто при том, что он где-то есть, он может и не в кластере быть (хотя он в кластере).
Эта утилита должна запускаться где? Она с киклоак как работает? По апи ?
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ну желательно в кубернетесе. Да, по хттп соединяется и через апи работает.
если у тебя configmap в том же kustomize что и джоб. То generateName да
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  этот подход плох тем, что в deployment нельзя менять restartPolicy, он принимает только always, ясно-понятно)
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  полагаю, можно через deployment в котором в init container-е сделать что надо, а в основном контейнере sleep infinity сделать, ну это уже изврат какой-то
а зачем в deployment менять restartPolicy я так и не понял
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Ну у меня был план запускать через deployment, т.к. его можно менять, а job нельзя. Типа поменял deployment и он создал под, который отработал и всё, до следующего изменения. В итоге через джоб сделал, но его надо руками удалять перед каждым изменениям, неудобно, конечно.
а понял. Да, на этот случай придуман generateName, но ваще в kustomize и до этого были генераторы вроде для Job'ы (generateName - это фича куба, а генераторы имен kustomize на его уровне делаются)
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Я пока не понял, как. Я ничего подобного не нашел и в их гитхабе подобные запросы остались без ответа. Через generateName он работать отказывается.
версия куба какая?
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  покажи как делаешь Job с generateName
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  % 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
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Так можно, да. Хотелось просто, чтобы оно само запускалось, когда что-то меняется. Через фиксированное имя так и происходит (точней не происходит, но если что-то поменялось - выдаёт ошибку, что подсказывает, что старую job надо удалить).
flux/argo кстати норм схавают и задеплоят. argocd точно generateName умеет определять и вызывает kubectl create для таких Job
 Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Vladimir
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  flux тоже умеет, читал в его доке
ну оно само. Просто вместо однго этапа нужно два если хочется в один этап, то в kustomize тебе придется генератор написать
по описанию похоже, будто это часть функционала от stakater/reloader. Это так? Если да - то зачем его рекомендовать, а не stakater/reloader?
stacker/reloader также был рекомендван. А почему посоветовал глянуть именно этот понятно из контекста треда (если интересно, вникай читай тред, если не интересно, то непонятно к чему доп. вопросы)
Читал, но не понял. Чел просил триггер "cm changed -> restart pod". По описанию предложенной утилиты похоже, что она только это и умеет, а stakater/reloader умеет ещё и много чего ещё, потому и вопрос про энтропию... ok, nvm
ну ваще чел просил cm changed => run keyclock cli который заливает конфигурацию в keycloack рестартовать keycloack он не хотел следовательно stacker/reloader не то что нужно > По описанию предложенной утилиты похоже, что она только это и умеет, нет, она не рестартит поды
ааа, она даже рестартить не умеет, только по http оповещать... Я не знаю зачем оно существует, если stakater/reloader уже изобретён
тебе нужно перекомпелировать свою stacker/reloader центричность и понять, что есть скоуп задач, когда не нужно перезапускать поды после имзинения конфига. Например так реализован релоад конфига прометеуса, в prometheus операторе Повторюсь, stacker/reloader был пропущен, поскольку рестартовать pod не нужно, нужно было залить новую конфигурацию в keycloack. Как пример такого контроллера было предложено глянуть на https://github.com/jimmidyson/configmap-reload
теперь понятно (упустил из виду, что stakater/reloader умеет только pod reload, но не умеет просто оповещать по http / сигналом процессу), спасибо
опять не много упустил смысл =) рубрика пересказываем треды в том сообщении было предложенно глянуть этот контроллер как концепт, ему не нужно было слать вебхук, ему нужно залить конфигурацию в keycoack. Посмотрев код контроллера, можно быстро своять свое решение, которое вместо хука запускает нужный тебе exec, ну или сразу в API keyclock заливает конфиг.
Обсуждают сегодня