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

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

3 ответов

7 просмотров

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

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

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

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

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

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

pika.exceptions.ChannelClosedByBroker: (406, "PRECONDITION_FAILED - inequivalent arg 'x-message-ttl' for queue 'amo-crm.q' in vhost '/': received the value '60000' of type 'si...
Sergey
9
Всем привет 👋 может кто подсказать? Как мне добавить файлик без коммита в сборку stapel? С докерфайлом понятно Там allowContextAddFiles А как тоже самое сделать со stapel?
Sergeevich
5
Всем доброго времени суток! Перестал запускаться сервер RabbitMQ, вижу по логам, что ругается на плагин, но по какой причине не могу понять. Можете помочь разобраться, куда ко...
Александр Семенов
2
Еще одну панику поймал: $ werf helm repo add --username gitlab --password ${CI_JOB_TOKEN} helm-werf ${HELM_REPO_V2_URL} "helm-werf" has been added to your repositories $wer...
citius
1
Вот такая неприятность на stable и ea версиях: werf helm --namespace s4c upgrade --install --atomic --timeout 5m --set s4c.version=839185f3 --set s4c.deployEnv=staging -f d...
citius
6
Всем привет! Прохожу этот самоучитель. Дошел до # Настроим подключение к MinIO. mc alias set minio http://minio:9000 minioadmin minioadmin # Получим содержимое сохранённого...
Aleksandr
6
Доброго дня чат, можно ли использовать для werf build локально podman?
Andrey🏔
2
https://habr.com/ru/companies/domclick/articles/500978/ Добрый день, подскажите, пожалуйста, насколько хорошая практика сделать вот такую структуру эксчейнджей и очередей для...
Sergey
5
Блин а мне как поумнеть ?
Toxin
191
Всем привет! Подскажите, пожалуйста, почему не применяются настройки? Хочу задеплоить вот такой кластер в кубер. apiVersion: rabbitmq.com/v1beta1 kind: RabbitmqCluster metad...
Игорь Самарский
1
Карта сайта