Sn00part
там наверняка юйй какой нибудь, кода больше, чем сам докеримадж весит
G72K
тогда зачем все эти сложности? собирать сразу докеримадж с кодом внутри, его тестить и в прод
Почему сложности? Ну удобнее людям тэги в гите двигать, чем имаджи собирать, что теперь, запрещать чтоли?
Sn00part
а зачем тут люди? дженкинс же или подобные
Sn00part
меньше ненужной работы людям, больше времени сделать что-либо полезное в приложении
Sn00part
дженкинс пусть срабатывает на коммит. меньше вероятности ошибки
G72K
а зачем тут люди? дженкинс же или подобные
Да причем тут дженкинс? Еще раз: Мэпинг исходников в под не противоречит Ci Cd. В конце концов что-то где-то обновит deployment.yaml и сделает kubectl apply. Обновится поле докер имаджа иди гит коммита - не важно. Будет ли это обновление елать человек, робот, или коллегия на архитекторов на ежегодном заседании анонимным голосованием - это не было в вопросе и нет в моих ответах, но есть в ваших почему тл
Sn00part
Sn00part
правильно. зачем делать просто и эффективно. надо делать сложно и непрозрачно
Sn00part
в лаптопе поиграться можно что угодно делать и как угодно. в большом приложении с кучей бекендов лишняя сумятица ни к чему.
𝕍ℤ
с каких пор работа с гитом непрозрачна?
Sn00part
разговор про деплой, а не работу с гитом
G72K
правильно. зачем делать просто и эффективно. надо делать сложно и непрозрачно
Ну как минимум не надо собирать образы на каждый чих, держать локальный Docker registry который любит распухать, а так же значительно проще разрабатывать, ибо если на лаптопе мапить исходники и в проде мапить исходники, то как бы прод становится ближе к деву :)
Sn00part
😊
Sn00part
всё зависит от приложения. в одной большой конторе так и делают до сих пор. поэтому там семь админов и все плохо спят.
G72K
Да чем хуже то? Не лучше и не хуже, просто по-другому. Назовёте технические аргументы чем оно так плохо?
Sn00part
непонятно как это тестить, человеческий фактор, нарушение 12factors,
G72K
Брр.. да как так то? вот есть cI/cd все тесты прошли в итоге релиз в прод. последнее действие: обвновить deployment.yaml , какая разница что в нем обновлять: верси имаджа или гит коммит?
G72K
человеческий факто тут причем?и то и то могут обновлять как роботы, так и человек, ничего про это не было в вопросе
Sn00part
гит коммит и версия имаджа должна быть протестирована вместе. мы может просто про разные приложения говорим? где один имадж раз в год меняется и две виртуалочки с кодом?
Sn00part
у меня 47 имаджей есть в проде сейчас и 12 релизных версий приложения например
Sn00part
приложение большое, его сразу не перепишешь, по частям только.
Sn00part
пхп там тоже есть
Sn00part
практика с маппингом коммита там просто не работает. работает другая, про которую я рассказал. в других реалиях, возможно, сработает и маппинг. но зачем делать неправильно, а потом переделывать, когда можно сразу сделать нормально и избавить себя от проблем в будущем
Sn00part
тем более Best practices уже есть, доки по этому делу тоже. тот же 12factors покрывает 80% всех вопросов
G72K
php-fpm просто запускалка кода. точно так же как ядро, докер и версия куба: их обновления как-то тестируются +- степень паранои, но в целом обычно не идет речь о перетестировании всех приложений во всех окружениях
G72K
практика с маппингом коммита там просто не работает. работает другая, про которую я рассказал. в других реалиях, возможно, сработает и маппинг. но зачем делать неправильно, а потом переделывать, когда можно сразу сделать нормально и избавить себя от проблем в будущем
да в чем конкретно не работает то можете сказать? если прищуриться то и скачивание имаджа и скачивание гит коммита - это просто загрузка тарбола, ничем друг от друга они не отличаются
G72K
в результате каких процессов источник этого тарбола обновился вообще к вопросу отношения не имеет
G72K
Артефакт != ревизия в скв
ой да ладно? а если я закомичу артефакт в гит ? :) на если сеьезно, все равно одно и то же, если гарантируется, что если процесс перехода из ревизии в артефакт повторяем. в случае PHP этого элементарно добиться
Etki
Давайте без ой да ладно
G72K
А по существу?
Etki
По существу выше
Etki
Если хотите передергивать - пожалуйста
G72K
чем FROM nginx COPY src /mypath и потом в кубе: containers: - image: nginx-and-sources настолько принципильно отличается от containers: - image: nginx name: nginx volumeMounts: - mountPath: /mypath name: git-volume volumes: - name: git-volume gitRepo: repository: "git@somewhere:me/my-git-repository.git" revision: "22f1d8406d464b0c0874075539c1f2e96c253775" что во втором случае прям контора утонет в админах и будет еле дышать?
Sn00part
этап сборки, релиз и выполнения не определён чётко. имадж и гит коммит надо тестировать вместе. либо хранить где-то пары протестенных айди.
G72K
этап сборки, релиз и выполнения не определён чётко. имадж и гит коммит надо тестировать вместе. либо хранить где-то пары протестенных айди.
почему вы хотите хранить пары php-fpm + git commit, но не предлагаете хранить kernel version + kube version + docker version + flannel version + image version?
G72K
и там и там есть относительно часто меняющаяся версия и относительно стабильная среда выполнения
G72K
> этап сборки /bin/true > релиз обновления deploy.yaml сначала в тестовом, потом препрод, потом в прод кубе > выполнения всё в deployment.yaml, определено четко
G72K
если вам нужен формализм, то ваш артефакт не image:version, а кусок yaml , вот и гоняйте его по всем стадиям вашего ci cd, ничего принципиально не меняется
G72K
Если хотите передергивать - пожалуйста
если есть функция f(src) -> artifact и она детерминированная, то ревизия это и есть артефакт со всех точек зрения
Sn00part
почему вы хотите хранить пары php-fpm + git commit, но не предлагаете хранить kernel version + kube version + docker version + flannel version + image version?
потому, что вторая часть относительно редко меняется и в ней мы уверены. а первая гораздо чаще.
G72K
потому, что вторая часть относительно редко меняется и в ней мы уверены. а первая гораздо чаще.
так вопрос в уверенности в надежности php-fpm имаджа? ну так для этого же у вас есть ci cd! просто у этого имаджа свой релиз цикл, своя команда разработки и вообще всё свое.тесты-шместы, все такое. чем плохо?
Etki
И все равно это не артефакт
G72K
она _может_ быть не детерменированной
G72K
а может и быть такой
Etki
Она всегда будет недетерминированнрй, несмотря на теоретическую возможность обратного
Etki
Всегда так
G72K
И все равно это не артефакт
даже если детерминированная? почему?
Sn00part
у меня нет доверия к разработчикам. я должен быть уверен, что мой имадж работает с любым коммитом. разве плохо это?
G72K
Она всегда будет недетерминированнрй, несмотря на теоретическую возможность обратного
ну вот вам пример такого преобразования: cp -r src /var/www/html где ж оно недетремнировано?
Etki
даже если детерминированная? почему?
Потому что результат функции это не ее аргумент лрл
G72K
Да не бывает таких сборок
если все зависимости лежат рядом, то бывает
G72K
Потому что результат функции это не ее аргумент лрл
но результат всегда можно получить применив функцию к имеющемуся аргументу и получить гарантированный результат
G72K
Хлеб это зерно
при рассуждениях что "надо бы хлеб, а есть только зерно", наличие возможности в любой момент превратить зерно в хлеб разве не делет такие рассуждения бессмысленными?
Etki
Хлеб все равно не зерно
Etki
Даже если свести все к гитлеру
G72K
Хлеб все равно не зерно
верно. но если вам нужен хлеб вы его получите , так что наличие зерна достаточно )
Etki
Я вообще не понимаю, что мы обсуждаем
Sn00part
я уже тоже. пойду уже коньяк пить в конце концов.
G72K
у кого-нибудь Dex + LDAP работает? Еще не ставил у себя, но пытаюсь понять где TTL для токена задается
Serg
В конфиге декса
Zon
Может я не очень хорошо знаю работу gitRepo, но мне кажется, что если комит из гита потерли, то перезапустить или отскейлить под уже не получится.
Konstantin
контейнер должен быть иммутабелен и баста
Sn00part
это разные области ответственности) не знаю, кстати, как можно из гита стереть коммит. с позиции админа, у реджистри есть бекапы. разработчики бекапы как правило не делают и пролюбливают все чаще.
Sn00part
имадж пересобираться же может, он в себе ничего не хранит stateful
Sn00part
а то, что есть, описано в dockerfile
Sn00part
с гитом сложнее, там постоянно чет мержат, ревертят, черипикают и сквашат
Zon
это разные области ответственности) не знаю, кстати, как можно из гита стереть коммит. с позиции админа, у реджистри есть бекапы. разработчики бекапы как правило не делают и пролюбливают все чаще.
Git squash, например. То, что делать это с мастером не очень бестпрактис, это другое дело. И если гит-сервер недоступен, то аутоскейлинг тоже недоступен. Да, имаджстор тоже может уйти в даун, но это одна сущность вместо двух. + Доступ на запись к имаджстор имеют, как правило, меньше людей. ( в идеале ноль )
Sn00part
👍
G72K
с гитом сложнее, там постоянно чет мержат, ревертят, черипикают и сквашат
git commit id гарантирует его содержимое, с точностью до sha1 коллизий. Чего нельзя сказать о docker image id :)
Sn00part
зачем сравнивать несравнимые вещи? докеримадж сделаем immutable и совпадает он с dockerfile. но при пересборке могут прилететь обновления пакетов и все, приплыли.
Sn00part
с гитом тоже много весёлых штук постоянно происходит. разработчиков больше, чем админов и активность у них больше. и человеческий фактор у них чаще стреляет. вы как будто треш ни разу не мержили, даже после всех ревью.
Sn00part
плохой коммит помержили, потом черепикнули, сверху налабали уже, потом поревертили в первой бранчи, всем привет.