Size: a a a

2020 March 16

DS

Dmitry Sergeev in DevOps
Евгений Омельченко
Это надо к сфере легаси относить и стараться просто делать настолько правильно насколько возможно
ну так не легаси
источник

LB

Let Eat Bee in DevOps
Dmitry Sergeev
нельзя так, я писал выше почему: каждая версия может зависеть от определенного описания инфраструктуруры. Либо ты делаешь отдельные описания для каждой платформы в одной репе, либо ты используешь разные репы.
Но проблемы с  откатами это не решает. Не каждый менеджер согласится делать revert в гите для отката
> нельзя так, я писал выше почему: каждая версия может зависеть от определенного описания инфраструктуруры. Либо ты делаешь отдельные описания для каждой платформы в одной репе, либо ты используешь разные репы.

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

> Но проблемы с  откатами это не решает. Не каждый менеджер согласится делать revert в гите для отката

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

як

я никуда не тороплюсь когда напьюсь тогда напьюсь in DevOps
bruin
гайз, а набросайте вариантов CMDB годных - чтобы и дешево и все-все умела (и автодискавери и инвентори и чейнджи могло трекать). Из того, что надумали попробовать - ansible tower, device42 и написать самим
В Snipe-it (php) нету cmdb?
источник

як

я никуда не тороплюсь когда напьюсь тогда напьюсь in DevOps
Dmitry Sergeev
Для этого автосквош есть :) Но кодеры вообще тут не при чём. У вас должно быть две репы, для инфраструктуры и для кода, отдельно

1) Кодер херачит код в мастер
2) Ставит новый тег
3) Идёт и выставляет в репе инфры новый тег
4) Коммитит
5) CI запускает деплой
6) Если во время деплоя возникают проблемы, то загорается alert
7) Дежурный разработчик лезет смотреть что сломалось
8) По завершении дебага делает реверт в гите инфраструктуры
Код (git HEAD) не откатывается? Ломающие билд изменения так и лежат в репе? Да ещё с тегом
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
> нельзя так, я писал выше почему: каждая версия может зависеть от определенного описания инфраструктуруры. Либо ты делаешь отдельные описания для каждой платформы в одной репе, либо ты используешь разные репы.

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

> Но проблемы с  откатами это не решает. Не каждый менеджер согласится делать revert в гите для отката

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

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

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

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

Ну вот говорят что именно руками надо
источник

DS

Dmitry Sergeev in DevOps
Dmitry Sergeev
Ты не читал выше.
https://t.me/ru_devops/141188

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

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

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

Ну вот говорят что именно руками надо
@yamlcoder
А я соотвесвтенно пытаюсь выясинть как решать в таких случаях проблемы. Но ничего не понял, только про микросервисы и монолоиты и про легаси. Хотя тут это не причем
источник

LB

Let Eat Bee in DevOps
Dmitry Sergeev
Ты не читал выше.
https://t.me/ru_devops/141188

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

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

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

Ну вот говорят что именно руками надо
Читал, не вижу противоречий)

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

Всё так. в инфра репу рендерятся готовые к деплою манифесты.

>  Твою инфра репу можно править ТОЛЬКО руками.

ну не руками уж. главная мысль как мне показалось в том, что инфра репа целиком описывается состояние инфры и откатывается целиком коммитами.
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
> нельзя так, я писал выше почему: каждая версия может зависеть от определенного описания инфраструктуруры. Либо ты делаешь отдельные описания для каждой платформы в одной репе, либо ты используешь разные репы.

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

> Но проблемы с  откатами это не решает. Не каждый менеджер согласится делать revert в гите для отката

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

LB

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

LB

Let Eat Bee in DevOps
задеплоить тег из репы приложения == сказать "я хочу видеть это в кластере". это желание запускает процесс деплоя через инфра репу, где из коммита тега приложения и других комитов (скажем какие-то универсальные хелм чарты отдельно лежат) рендерятся финальные манифесты готовые к kubectl apply. в них делаются штуки вроде резолва докер тэга в sha256 чтоб вообще все максимально до мельчайших деталей описано было. когда в инфра репе появился комит он деплоится в кластер. если деплой неудачный то в инфра репе создается revert и деплоится снова.
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
Читал, не вижу противоречий)

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

Всё так. в инфра репу рендерятся готовые к деплою манифесты.

>  Твою инфра репу можно править ТОЛЬКО руками.

ну не руками уж. главная мысль как мне показалось в том, что инфра репа целиком описывается состояние инфры и откатывается целиком коммитами.
> Всё так. в инфра репу рендерятся готовые к деплою манифесты.
Ну окей начнем заново.


Смотри. У тебя есть инфра репа, есть репа с кодом сервиса.

v1.0.1 код сервиса требует два деплоймента и cronjob
v1.0.2 код сервиса требует только один деплоймент


Нужно откатить с v1.0.2 до v1.0.1. Если мы просто пропишем v1.0.1 и запушим, приложение сломается, так как оно зависело от двух деплойментов и cronjob. А они пропали

@elemir90 Как я понял предлагает, чтобы master инфра репы, всегда соотвесвтовал состоянию в кубе + никаких автоматических откатов.

То есть для отката, нужно найти коммит в инфра репе, когда в нем был проиписан сервис версии v1.0.1 и сделать revert до этого коммита. И запушить.

Сейчас я делаю по другому. У меня либо инфра репа  это сабмодуль в репе сервиса, либо описание ифнры просто лежит вместе с сервисом. И для отката, нужно просто выбрать нужную версию сервиса и задеплоить, и это гарантировано дает описание инфры совместимое с нужной версией сервиса.

И я не понимаю в чем приемущество его описанного подхода. Вот и все. Пытаюсь выяснить
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
задеплоить тег из репы приложения == сказать "я хочу видеть это в кластере". это желание запускает процесс деплоя через инфра репу, где из коммита тега приложения и других комитов (скажем какие-то универсальные хелм чарты отдельно лежат) рендерятся финальные манифесты готовые к kubectl apply. в них делаются штуки вроде резолва докер тэга в sha256 чтоб вообще все максимально до мельчайших деталей описано было. когда в инфра репе появился комит он деплоится в кластер. если деплой неудачный то в инфра репе создается revert и деплоится снова.
блин видимо я непонятно пишу. Предлагаю закрыть тему, ты похоже не понимаешь о чем я говорю. О том как рендерить шаблоны helm, тегать образы, считать sha, речи вообще нет
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
задеплоить тег из репы приложения == сказать "я хочу видеть это в кластере". это желание запускает процесс деплоя через инфра репу, где из коммита тега приложения и других комитов (скажем какие-то универсальные хелм чарты отдельно лежат) рендерятся финальные манифесты готовые к kubectl apply. в них делаются штуки вроде резолва докер тэга в sha256 чтоб вообще все максимально до мельчайших деталей описано было. когда в инфра репе появился комит он деплоится в кластер. если деплой неудачный то в инфра репе создается revert и деплоится снова.
Да итак понятно что задеплоить тег == сказать что я хочу видеть в кластере.
Оба подхода предпоалагают это действие. Речь не об этом
источник

LB

Let Eat Bee in DevOps
> То есть для отката, нужно найти коммит в инфра репе, когда в нем был проиписан сервис версии v1.0.1 и сделать revert до этого коммита. И запушить.

Не совсем. для отката надо найти коммит v1.0.2 и заревертить его. т.е. в общем случае мы не откаывается к чему-то, а отменяем что-то.

> И я не понимаю в чем приемущество его подхода.

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

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

Так же инфра репа сериализует все изменения: пока одно изменения инфра репы выкатывается, другие ждут.  это позволяет избежать некоторых ошибок.
источник

GG

George Gaál in DevOps
Dmitry Sergeev
Ну вот откат не с v1.0.2 на v1.0.1. А с v2.6.0 до v1.0.1, там уже может быть не пару коммитов.
А еще бывают же разные версии для разных платформ. Например менеджеры так любят. А давайте погоняем какую-то версию для гугловой аудитории

И у тебя может быть такое
v1.0.3 - на ios
v1.0.3-фича-икс - на google
v1.4.0-фича-y - tiktok

И тут непонятно тогда. Получается с твоим подходом, для каждой из платформ одного и того же приложения нужно пилить по отдельной репе с инфрой. Иначе непонятно как тут откат вообще делать
А параллельные деплои ? Может отказаться от версий и перейти наконец-то на фича флаги ?
источник

GG

George Gaál in DevOps
Let Eat Bee
> То есть для отката, нужно найти коммит в инфра репе, когда в нем был проиписан сервис версии v1.0.1 и сделать revert до этого коммита. И запушить.

Не совсем. для отката надо найти коммит v1.0.2 и заревертить его. т.е. в общем случае мы не откаывается к чему-то, а отменяем что-то.

> И я не понимаю в чем приемущество его подхода.

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

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

Так же инфра репа сериализует все изменения: пока одно изменения инфра репы выкатывается, другие ждут.  это позволяет избежать некоторых ошибок.
+
источник

DS

Dmitry Sergeev in DevOps
Let Eat Bee
> То есть для отката, нужно найти коммит в инфра репе, когда в нем был проиписан сервис версии v1.0.1 и сделать revert до этого коммита. И запушить.

Не совсем. для отката надо найти коммит v1.0.2 и заревертить его. т.е. в общем случае мы не откаывается к чему-то, а отменяем что-то.

> И я не понимаю в чем приемущество его подхода.

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

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

Так же инфра репа сериализует все изменения: пока одно изменения инфра репы выкатывается, другие ждут.  это позволяет избежать некоторых ошибок.
> Не совсем. для отката надо найти коммит v1.0.2 и заревертить его. т.е. в общем случае мы не откаывается к чему-то, а отменяем что-то.

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

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

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


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

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


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

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

LB

Let Eat Bee in DevOps
Dmitry Sergeev
Да итак понятно что задеплоить тег == сказать что я хочу видеть в кластере.
Оба подхода предпоалагают это действие. Речь не об этом
есть нюанс. тег в репе приложения в вашем случае именно что начинает деплой, но нигде не фиксирует инфру этого деплоя. в случае же инфра репы, семантика тега в репе приложения меняется - оно по  сути говорит "сбилди мне манифест деплоя"
источник

DS

Dmitry Sergeev in DevOps
George Gaál
А параллельные деплои ? Может отказаться от версий и перейти наконец-то на фича флаги ?
ну вот говорят иди ты нахер со своими фича флагами. Нам удобно просто отдельную версию сделать
источник

DS

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