Andrei
Alexander N.
про init знаю, думал может появились какие-то менее костыльные варианты )
Andrey
Нет. Никакого "умного" деплоя Helm не умеет.
Alexander N.
ок, спасибо!
Anton
в каком то смысле ваш апп будет дожидаться появления зависимостей, если например падает при недоступности бд. он же будет перезапускаться =)
Denis
Всем првиет! Подскажите в k8s service можно задать диапозон портов?
Rainbow
Что поделать, readme часть кода же
смотреть, что по факту image не поменялся. Там же есть sha256. Может он, ещё не читал. 100% можно детектить, что у контейнера отличаются только меткой.
Rainbow
там же собирается по слоям, у слоя md5 свой или ещё какой хэш. Хэши последних слоёв равны - не поменялся.
Rainbow
docker pull же не перекачивает слои, если они одинаковые у разных тегов одного image
Andor
даже если они у разных тегов разных образов
Andor
"слои" и "образы" это "многие ко многим"
Rainbow
да не, docker pull же ничего не качает, если контент не менялся
Rainbow
docker pull ничего не качает, deployment не должен обновлятся.
Andor
если тег поменялся, то обновится, даже если не качал ничего
Rainbow
поменять тег - слой не будет выкачиваться
Rainbow
и не пушит так же
Rainbow
или я прям совсем сейчас себе шаблон порву, если не так.
Andor
порвёшь
Andor
выкачиваться может и не будет, но тегаться будет
Rainbow
docker pull some:label1
docker tag -t some:label2 some:label1
docker push some:label2
Rainbow
docker pull some:label2
ничего не качнет
Rainbow
docker build ничего не пересобёрет
Andor
потому что нельзя "скачать тег"
Andor
можно "узнать sha слоёв по тегу и скачать их"
Rainbow
Я могу путать понятия, с другой стороны. Если работает
some:label1
а дальше
docker pull some:label2
ничего нового не выкачивает
то deployment не нужно запускать, ничего не поменялось.
Rainbow
docker pull*
Rainbow
Ок, почитаю про манифест, что там может быть такого, что можно сделать так, чтобы одинаковые слои работали по разному.
Дмитрий
Дмитрий
Ставлю миникуб)
Дмитрий
Винда просто умерла )
Andor
Andor
ну речь вроде о том что при ретеге одного и того же имджа у тебя не будет ничего качаться туда-сюда
Rainbow
У меня есть 2 тега
027cb8a34f212354af11dfc548d339e3a7ddf063
dcddfdc066d02ac80341de3e044918d49df5622c
Они собраны на 100% одинаково.
docker build просто берёт все их кеша слоёв.
Есть же способ это задетектить, чтобы не перезапускать deployment просто так. Я про это начал говорить, в теме не разбирался пока, руки не доходят.
Vadim
ну можно ручками выдергивать какой хэш у последнего слоя, конечно
Andor
это не теги, это хеши
Rainbow
docker build -t service:dcddfdc066d02ac80341de3e044918d49df5622c .
Rainbow
это теги
Rainbow
$CI_COMMIT_SHA
Rainbow
И тут косяк только один, левые комиты заставляют deployment обновиться, хотя не нужно.
Andor
а это проблема?
Rainbow
Ну, нам уже пол года пофиг. А вообще безполезное действие
Rainbow
Я написал, что это если с этим нет проблем, то наоборот круто. Это тест, что приложение не валится от рандомных перезапусков =)
Andor
думаю этим должен CI заниматься, а не докер и не кубер
bebebe
Vadim
общепринята практика делать [ci skip] в хедлайне коммита, например
Rainbow
Andor
точнее CD
Rainbow
Зачем мне думать, что поменялось, если это знает докер.
Rainbow
репа поменялась, а docker build ничего не сделал, deployment не нужно перерезапускать
Rainbow
readme.md поменялось, оно в dockerignore
Rainbow
сервис не поменялся, но тег меняется, потому что новый комит, а deployment смотрит на image, сменился, перезапускаю.
Rainbow
Это МИНИ проблема, просто разговор зашел про это.
Andor
да это проблема того же типа что и "запускать тесты только если код поменялся, а не readme"
Andor
она не про докер и не про кубер
Rainbow
Ну docker может на 100% сказать, что что-то поменялось, мне для этого не нужно ничего делать. Это отличие от тестов.
Rainbow
Для тестов ещё нужно пойти напрячься, чтобы граф зависимостей собрать.
Andor
не может
Andor
докер оперирует уже артефактами сборки, а не исходными данными
Rainbow
если поменять файл, который в dockerignore, то он будет поновой все собирать? Не будет.
Rainbow
если поменять файлы, которые не попадают в image вообще, он будет пересобирать? Не будет, все из кэша
Rainbow
если у меня
src
docs
и docs не попадает в image, просто не хотелось бы перезапускать deployment из-за комита в docs, который поменял тег.
Rainbow
это скорее всего 1 if, не более.
Andor
ну не собирай образ просто
Andor
то есть в твоём случае не тегай
Andrey
Rainbow
docker build -t service:$SHA_COMMIT_SHA .
выполняется всегда, после этого можно сказать, что image поменялся или нет.
Rainbow
Да не хочу я делать работу, которуюделает docker build. Уже все готово же.
Andor
ну сделай чтобы не выполнялось
Rainbow
ну так после docker build нужно смотреть,что текущий image не отличается от работающего и скипать, я про это говорю 20 минут уже)
Andor
при чём тут образ вообще?
Rainbow
docker build не собирает ничего, если не было правок. Следовательно не нужно перезапускать deployment. Я только про это.
Rainbow
docker build бесплатный если не было правок, даже если другой тег.
Rainbow
kubectl apply напряжный, если поменялся тег и 50 реплик
Andor
ну раздели build и tag