Как обновить переменную в Gitlab CI во время CI/CD?
Привет всем.
Использую gitlab для построения и последущего залива docker images на kubernetes.
Gitlab-Runner, сидит в докере, на локальной машине - в k8s пихать runner пока не хотим, точнее хотим но вопрос пока не согласован, так что этого не предлогать.
Access-Config(~/.kube/config) от k8s я записал в переменные проекта gitlab/settings/CI CD/Variables
Проблема:
Как многие знают, k8s обновляет через какое-то время конфиг, он обновляется во время работы, но контейнер потом сворачивается и в след. раз конфиг берётся старый, опять из переменных gitlab. Соотвественно kubectl перестаёт работать, пока не обновить конфиг.
Прежде чем я начну придумывать велосипед, и писать (а что ещё хуже, высылать по http) конфиг куда-то, что-бы его оттуда забрать, хочу спросить у Вас, как решается данная проблема, кроме как в ручную обновлять переменную через UI gitlab. API для обновления переменных во время pipeline я не нашёл, точнее нашёл высказывание, что это не возможно.
Если совсем никак, буду наверное делать Volume для Runner, а в переменную писать путь к файлу, но всё равно, вдруг есть более логичное решение..., без физической привязки к памяти у Runner?
Pavel Zamyatin, да, сам он не обновляется.
Реальный сценарий - Вчера я обновил конфиг в гитлабе, сегодня я запустил "залив", который использует конфиг и kubectl. Тем самым конфиг как-бы "обновился" однако в контейнере, который не сохраняет обновлённый конфиг, и при следующем заливе будет использован старый конфиг, из переменных гитлаба...
В идеале я бы после каждого использования kubectl обновлял переменную в гитлабе - но данная возможность вроде как отсутствует..
Можно пробрасывать какие либо данные через задания через artifacts, в принципе стандартный deploy в Gitlab какое то время так и работал.
То есть в первом stage какие либо задания создают файлик, который указан в artifacts
В следующих задания его используют, только нужно еще учесть срок жизни этого файлика, если есть задания запускаемые вручную с сильно отложенным временем
Но Артифакт же можно использовать только в одно цикле пайплайна... я не могу взять вчерашний артифакт из проекта XY и использовать в проекте XZ... или?
Артефакты, если правльно понял, лишь для того, что-бы делится созданными ресурсами в одном пайплайне между Stages
Ну да. внутри pipeline, безотносительно количества запусков job, если требуется больше, то в принципе другими способами. Из вашего сообщения не совсем понятно что требуется получить и в каком диапазоне.
Есть API для обновления переменных https://docs.gitlab.com/ee/api/project_level_varia...
Сергей Вохмянин, ну не... у меня проблема в другом... я kubernetes дёргаю только под конец пайпа - stage deployment и соответственно, если мы говориv о точке 0 - я дёргая k8s использую конфиг из переменной в Гитлабе, после использования, конфиг обновляется, переменную я обновить не могу.
При запуске следующего пайплайна, конфиг kubernetes будет использоватся старый и он не сработает
Ну я и говорю есть метод обновления переменных, есть консольные утилиты которые реализуют Gitlab API, в чем проблема обновить переменную если у вас на неё завязано?