Size: a a a

2020 March 16

ЕО

Евгений Омельченко in DevOps
Слушайте, если вам нужно в 10 конфигурациях деплоить одно и то же приложение для прода, то это легаси. Бессмысленно обсуждать как применять практики, рассчитанные на микросервисную архитектуру, к такой конфигурации, тут несомненно нужны костыли
источник

ЕО

Евгений Омельченко in DevOps
Ну просто не будут работать смузи-практики для вас, нужно что-то своё придумывать, чтобы по максимуму сохранить декларативность, принцип single source of truth и single responsibility. Но скорее всего придётся чем-то пожертвовать
источник

DS

Dmitry Sergeev in DevOps
Евгений Омельченко
Слушайте, если вам нужно в 10 конфигурациях деплоить одно и то же приложение для прода, то это легаси. Бессмысленно обсуждать как применять практики, рассчитанные на микросервисную архитектуру, к такой конфигурации, тут несомненно нужны костыли
Ну такое вот требование не у легаси проекта. Хотелки бизнеса. Сказать бизнесу что у них неправильные хотелки ?)
источник

ЕО

Евгений Омельченко in DevOps
Ну это же не про бизнес, а про архитектуру приложения
источник

ЕО

Евгений Омельченко in DevOps
Если бизнес хочет определённую архитектуру приложения, то это неправильные хотелки, да
источник

LB

Let Eat Bee in DevOps
Dmitry Sergeev
Нет.
Тег фиксирует и код и инфру. Когда он выкатывется, выкатывается новое описание инфры
не верю что у вас скажем перменные окружения из CI нигде не подставляются или прям версии хелма кастомайза или чего-нибудь еще закомиченны в сабмодули
источник

LB

Let Eat Bee in DevOps
Dmitry Sergeev
> Не совсем. для отката надо найти коммит v1.0.2 и заревертить его. т.е. в общем случае мы не откаывается к чему-то, а отменяем что-то.

нет.
Если например ты откатываешь с v1.0.3 до v1.0.1 разреверт тебя откатит на v1.0.2

> преимущество инфра репы в том, что оно отделяет состояние инфры от состояния кода, инфра репа вообще не знает ничего о версиях приложения

Да, это приемущество. Удобно отдельно  и выкатывать, я не спорю. Я говорю о минусах. Как в примере выше, когда у тебя конкретная версия приложения, зависит от конкретной версии описания инфраструктуры. Либо тебе нужно хранить зависимость версии приложения от версии описания инфраструктуры через сабмодули,  что противоречит подходу предложенному @elemir90 Евгением.


> скажем приложение не деплоили полгодо, нактили новую версию, стало плохо, решили откатить, пробуете задеплоить тег полугодичной давности а за это время CI скрипты ушли вперед

Ну эту проблему я и решаю, храня CI скрипты и описание инфры либо как сабмодули либо вместе с кодом сервиса.
Откат на тег полугодичной давно = использования CI скриптов и описания инфры полугодичной давности.


> Инфра репа тупая как пробка, там нечему ломаться и пока образ в докер регистри есть и версия куба совместима накатывать откатывать можно сколько угодно

Ну я вот и спрашиваю, как принято решать проблемы. Когда у тебя одна версия приложения зависит от определенной версии тупой как пробки репы. Я ее решаю через сабмодули или сохраняя вместе с кодом сервиса
> нет.
> Если например ты откатываешь с v1.0.3 до v1.0.1 разреверт тебя откатит на v1.0.2


а куда 1.0.2 делось? решили что успешное, а потом предумали? тогда "откат" это реверт двух комитов. но в любом случае так как в инфра репе все намешано то откат только ревертами
источник

ЕО

Евгений Омельченко in DevOps
Ревертить через версию это безумие :)
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
> нет.
> Если например ты откатываешь с v1.0.3 до v1.0.1 разреверт тебя откатит на v1.0.2


а куда 1.0.2 делось? решили что успешное, а потом предумали? тогда "откат" это реверт двух комитов. но в любом случае так как в инфра репе все намешано то откат только ревертами
ну если у тебя были коммиты
v1.0.1
v1.0.2
v1.0.3

Ты делаешь revert v1.0.3, у тебя будет в итоге v1.0.2.
Откат же не всегда какая-то проблема, и нужно отменять что-то. Вот например сегодня менеджер захотел откатить приложение до v0.0.5 (а сейчас оно на v1.0.3)
источник

LB

Let Eat Bee in DevOps
Dmitry Sergeev
Ну такое вот требование не у легаси проекта. Хотелки бизнеса. Сказать бизнесу что у них неправильные хотелки ?)
почему нельзя? чем плохо условное

helm install --release-name ios --values-file ios.yml
helm install --release-name  android --values-file android.yml
источник

DS

Dmitry Sergeev in DevOps
Евгений Омельченко
Ревертить через версию это безумие :)
ну то есть с описанным подходом. У нас всегда одна версия. Откат максимум на одну назад. А если хотим откатить функционал, до старой версии, то прогеры пусть откатывают в коде и делают из него как бы новую версию но со старым фунционалом. У нас к сожелнию меня нахер пошлют с таким предложением, но мне оно нравится =)
источник

як

я никуда не тороплюсь когда напьюсь тогда напьюсь in DevOps
Dmitry Sergeev
Ты не читал выше.
https://t.me/ru_devops/141188

Он говорит, что инфра репа должна быть отдельная от репы сервиса.
Деплой новой версии происходит путем правки инфра репы, и ее пуша. Если нужно откатить приложение, ты откатываешь свою инфра репу через revert и пушишь. Твоя инфра репа никак не связаана с репой сервиса никаких сабмодулей. Твою инфра репу можно править ТОЛЬКО руками.

Вот про такой подход я и спрашиваю.

> руками делать ничего не надо, клик клик в юай и реверт комит полетит деплоиться

Ну вот говорят что именно руками надо
Зачем откатывать инфраструктурную репу, если билд/интеграцию сломал код разрабов? Такая возможность (одновременный откат) должна быть, но у тебя написано как будто это обязательно. Гораздо правильнее подход ПЕРЕСОЗДАНИЯ (с нуля) сервиса пайплайн-триггером (хуком), но для этого код в IaC-репе должен быть достаточно универсальным.
источник

ЕО

Евгений Омельченко in DevOps
Dmitry Sergeev
ну то есть с описанным подходом. У нас всегда одна версия. Откат максимум на одну назад. А если хотим откатить функционал, до старой версии, то прогеры пусть откатывают в коде и делают из него как бы новую версию но со старым фунционалом. У нас к сожелнию меня нахер пошлют с таким предложением, но мне оно нравится =)
А вы часто на больше версии откатываетесь?
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
почему нельзя? чем плохо условное

helm install --release-name ios --values-file ios.yml
helm install --release-name  android --values-file android.yml
да ничем не плохо. Но это вообше не то. Мы не про способ деплоя говорим.
А про инфра репу, которая никак не версионируется вместе с кодовой репой. И мы не знаем какая версия кода с какой версией инфра репы работает
источник

ЕО

Евгений Омельченко in DevOps
Я бы вообще постремался так делать, заставить кодеров поддерживать совместимость в одну версию ещё можно, но в две это уже невозможно
источник

ЕО

Евгений Омельченко in DevOps
Dmitry Sergeev
да ничем не плохо. Но это вообше не то. Мы не про способ деплоя говорим.
А про инфра репу, которая никак не версионируется вместе с кодовой репой. И мы не знаем какая версия кода с какой версией инфра репы работает
Не, постой. В инфрарепе зашиты версии артефактов, это такая слабая связь вместо сабмодулей
источник

DS

Dmitry Sergeev in DevOps
Евгений Омельченко
Не, постой. В инфрарепе зашиты версии артефактов, это такая слабая связь вместо сабмодулей
ну вот, находить в коммитах какие версии артефактов единственный способ
источник

LB

Let Eat Bee in DevOps
Dmitry Sergeev
да ничем не плохо. Но это вообше не то. Мы не про способ деплоя говорим.
А про инфра репу, которая никак не версионируется вместе с кодовой репой. И мы не знаем какая версия кода с какой версией инфра репы работает
знаете конечно. пайплайн в репе с кодом создает коммит в инфра репе, конечно он знает какой комит создал
источник

як

я никуда не тороплюсь когда напьюсь тогда напьюсь in DevOps
Dmitry Sergeev
> руками делать ничего не надо, клик клик в юай и реверт комит полетит деплоиться
А я вот как раз такой подход и использую.
Нужно выкатить версию - менедеджер выбирает тег, кликает, и она выкатывается. Но этот подход мне сказали очень плох. Поэтому и уточнаю подробности
Если только версия инфраструктуры понятна (очевидна или легко, т.е. автоматически выясняется) и её можно залочить/унаследовать (в смысле ООП/методов).
источник

ЕО

Евгений Омельченко in DevOps
Let Eat Bee
знаете конечно. пайплайн в репе с кодом создает коммит в инфра репе, конечно он знает какой комит создал
Вот опять юзание гита в качестве базы данных
источник