Size: a a a

2020 October 16

VD

Vladimir Deev in rannts
Al 🌚l
А так часто рестартовать приходится?
да не. но хочется просто запушить в мастер и заниматься дальше своими делами. чтобы оно само сбилдилось и залилось куда надо
источник

AS

Artem Savinov in rannts
но это каким то трешем видется, если по честному)
источник

VD

Vladimir Deev in rannts
мне тоже не нравится)
источник

A🌚

Al 🌚l in rannts
Vladimir Deev
да не. но хочется просто запушить в мастер и заниматься дальше своими делами. чтобы оно само сбилдилось и залилось куда надо
А, ну завести маппинг какой-нб, который будет соотносить файлы и таски. И завести cd на коммит в мастер, который при ченьджах в файле будет таску из маппинга рестартовать
источник

A🌚

Al 🌚l in rannts
Вроде несложно получается
источник

VD

Vladimir Deev in rannts
с тасками более менее норм. но есть файлы с функциями, которые используются и в API, и в тасках. там на каждую функцию лень прописывать, что надо рестартовать. + опять же есть переменные среды, которые влияют на разные сервисы.
источник

RB

Roman Bolkhovitin in rannts
а какой именно CI? в гитлабе из коробки есть крутилка changed, то есть можно на конкретный каталог смотреть и запускать джобу только если там что-то поменялось
источник

A🌚

Al 🌚l in rannts
Vladimir Deev
с тасками более менее норм. но есть файлы с функциями, которые используются и в API, и в тасках. там на каждую функцию лень прописывать, что надо рестартовать. + опять же есть переменные среды, которые влияют на разные сервисы.
Ну если оно нечасто происходит и старт недолгий, то как бы и пофиг. Пускай рестартует хоть на смену еолов
источник

VD

Vladimir Deev in rannts
Roman Bolkhovitin
а какой именно CI? в гитлабе из коробки есть крутилка changed, то есть можно на конкретный каталог смотреть и запускать джобу только если там что-то поменялось
bitbucket pipelines
источник

A🌚

Al 🌚l in rannts
Тут надо выбрать меньшее зло
источник

A🌚

Al 🌚l in rannts
Либо херовертить всякие сложные схемы, либо тупо рестартовать на любой чих, либо руками)
источник

AS

Artem Savinov in rannts
Roman Bolkhovitin
а какой именно CI? в гитлабе из коробки есть крутилка changed, то есть можно на конкретный каталог смотреть и запускать джобу только если там что-то поменялось
да такая фигня везде должна быть по идее
источник

RB

Roman Bolkhovitin in rannts
ХЗ, в том же гитлабе оно не сразу было ))
источник

VD

Vladimir Deev in rannts
Al 🌚l
Либо херовертить всякие сложные схемы, либо тупо рестартовать на любой чих, либо руками)
видимо, пока придется выбрать второй вариант)
источник

A🌚

Al 🌚l in rannts
Al 🌚l
Либо херовертить всякие сложные схемы, либо тупо рестартовать на любой чих, либо руками)
Ну либо найти готовый плагин, забыл)
источник

AS

Artem Savinov in rannts
Vladimir Deev
видимо, пока придется выбрать второй вариант)
если что-то придумаешь- опиши плиз потом решение)
источник

VD

Vladimir Deev in rannts
Artem Savinov
если что-то придумаешь- опиши плиз потом решение)
ок)
источник

SA

Sergey Arkhipov in rannts
Такие схемы и правда совсем ненадежные, хрупкие и причиняют много багов. А что если какой-то процесс должен был рестартовать, а не рестартовал? А если другой процесс рестартовали? А если там чего-то неправильно пошло?

В случае "опс" надо думать не о happy path, а о том, что может пойти не так, и как бы сделать систему более предсказуемую.

Пока что лучшее, с чем я работал - это blue/green deployment. То есть рядом стартуем инстанс, ждем, пока он не станет работать, а затем переводим трафик на него, а старый graceful shutdown'им. Так работает Marathon + при определенных настройках кубернетес.

Это и без докера делается, кстати. Капистрано позволяет что-то подобное организовать в пределах одного хоста. Там суть простая - деплоим приложение в другую директорию, стартуем, добавляем еще один апстрим nginx'а, затем nginx reload и ждем, пока новое приложение не оклемается. Оклемалось - SIGINT в старое и ждем, пока оно не доработает. Доработало - убиваем.

Это Zero Downtime, однако в то же время, самая надежная схема сделать подобные вещи, особенно если хелсчеки, liveness/readiness probes реально проверяют чего-то внутри инстанса
источник

SA

Sergey Arkhipov in rannts
С Селери все то же самое. Подняли новых воркеров - SIGTERM старым
источник

SA

Sergey Arkhipov in rannts
Звучит страшно, на практике все очень легко можно свести к 1 YAML-файлу для Ансибла, строк на 100
источник