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

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

3 ответов

21 просмотр

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

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

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

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

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

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

werf cleanup как-то старается не удалять промежуточные имаджи (ранее известные как артефакты)? Уже несколько раз из cache-repo улетал наш базовый node имадж. Что выглядит лог...
Vyacheslav
2
Здрасьти! Делаю Buildah+Docker-multistage. В первом имадже делаю COPY кода. Из них генерю файлы: 31229b03ef2ed26c5e02d0e8320f8a04 ./package.json a0b92a158d0bed9570350af0ed3e...
Vyacheslav
4
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
В английской версии документации к докер инструкциям я увидел этот пункт: > Tip: you can also export environment variables right to the user stage instructions. В русской ...
Alex
3
всем привет) подскажите, судя по поиску, пару лет назад возникал вопрос насчет преобразования секретов при шифровании к строковому типу. Что-то за это время менялось? Сейчас ...
Denis Yudin
9
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Вопрос. Имеем большие репозитории и медленные скорости. Из-за чего очень долго длятся пайплайны. Azure DevOps, PR пайплан, выкачиваем только эфимерный(виртуальный) комит, и з...
Alex Подрябинкин
11
Карта сайта