Пересматривал доклад по werf и вот такой вопрос. Gitops и

immutable infrastructure идут рука об руку, one image to rule them all, всё хорошо. НО. Но как быть, если приложению на стадии сборки нужно дать информацию о том, где оно будет работать, например, ssr фреймворки, тот же next. То бишь мы не можем один собрать образ, его отдать на тест, его же запустить на preview, и его потом кинуть в прод. Ибо env переменные у окружений разные и разные образы.
Выше у меня как раз были проблемы из-за этого (вынуть из values.yaml переменные на основе werf.env для сборки). И это больше теоретический вопрос к опытным разработчикам. Получается подобные приложения никак не вписываются в immutable инфраструктуру. И у нас будут отдельные образы для preview, staging, prod.
Есть ли какие-то мысли по этому поводу?

3 ответов

22 просмотра

По моему опыту все фронты/фреймворки просто параметризуются в рантайме. Вот канонический пример с картинками: immutablewebapps(dot)com А в конкретном случае надо гуглить: "${framework_name} runtime environment variables"

Если у вас содержимое контейнера полу-динамическое, то и тестирование будет полу-динамическим. Т.е. вы уже не код тестируете, а код+контент. Соответственно - либо несёте риски на продакшен (если они не велики), либо строите разветвитель пайплайнов (по количеству окружений) 🤷🏼‍♂️

Alexey-Erisov Автор вопроса
Vyacheslav
Если у вас содержимое контейнера полу-динамическое...

Ну вот я в эту сторону и предполагал, что риски оценить от одной переменной может и не большие быть (если при билде неверно сгенерировалась страница, то максимум клиент увидит неоплноценный статичный html, с отсутствующим куском кода. А если есть ревалидаций (ISR подход), то она позже и обновится в нормальное состояние). Либо как раз полноценные ветви билд-тест-деплой делать отдельно для каждого окружения. И если планировать полностью избежать рисков - остается лишь второй вариант. А в целом, по вашему опыту, это корректно\нормально получается? полноценный пайплайн для каждого контура

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

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

Всем привет. Понимаю, что, наверное, сто раз поднимали эту тему, но по ключевым словам не смог найти. Как передать в values.yaml зависимого хелм-чарта теги образов, собираемых...
Vitalik Petrov
4
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Блин а мне как поумнеть ?
Toxin
191
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Карта сайта