Docker BUILD в GITLAB CI CD и kubernetes. Как правильно? Бонус настройка gitlab runner

preview_player
Показать описание

Сборка докер образа очень проста, на обычном компьютере. Когда дела касается автоматизации возникает вопрос: как правильно билдить докер контейнер в Gitlab ci cd или в кубирнетисе? Ведь они все инструкции запускают в докер контейнере. Можно запустить докер в докере, но в документации пишут небезопасно. В гитлабе можно запустить ранер локально на машине, но опять же по причине безопасности это делать не рекомендуют. Выход есть kaniko.

ХОТИТЕ ПОМОЧЬ РАЗВИТИЮ КАНАЛА?
★ BITCOIN: 3DkeRMFu4jsZCvRj8Bxn8iQCkgxfeVaxg8

КОНТАКТЫ:
Рекомендации по теме
Комментарии
Автор

Нельзя просто так взять и начать использовать Kaniko 😉
Важно замечание!
Образ Kaniko собран на минималках и поэтому там внутри при сборке других образов в докерфайле нельзя будет использовать никакие системные команды. Не то что какой-нибудь apt, но даже обычный cp не сработает, потому что там (сюрприз-сюрприз) отсутствует шелл 😁
Вопрос решается очень просто. Нужно использовать executor не с тэгом latest, а с тэгом debug. Он весит сильно больше, но в него включена полноценная ОС со всеми прибамбасами kaniko-project/executor:debug
Ну и ещё, там нет bash/sh, там есть busybox и поэтому первой строкой нужно как-то так:
RUN ["sh", "-c", "mkdir -p /bin && ln -s /busybox/busybox /bin/sh"]

МаксимГайдай-ъж
Автор

Не ожидал что ролик будет такой короткий) Ну по материалу отлично, спасибо)

PythonDevelopment
Автор

Ну ведь это же негодное решение.
При такой сборке потеряется кешь слоев, а это означает что они будут пересобраны заново. И тут плохо даже не то, что это лишнее время или место. Плохо то что следующий собраный образ соберется с версиями базовых компонентов которые изменились. (Да, все фиксируют версии модулей и собираемых библиотек, но базовые системные пакеты не фиксируют практически никто). Таким образом может появиться ошибка там где её не ожидают увидеть, и будут долго искать и исправлять пытаясь сопоставить с текущими никак на неё не влияющими изменениями.
Качественное решение должно подъехать в ближайшие месяцы, когда допилят сборку через buildah в werf. А сейчас приходится посторинке собирать контейнеры верфом в dind, благо первый никогда не пересобирает слои (подгружает с регистри) если их digest по информации из гита не изменился.
Кстати по пути, очень рекомендую эту утилиту. Я покрываю ей все жизненые циклы ПО во всех окружениях: от сборки, деплоя, автотестов, кнопочек в CI (позапускать какие-нибудь бизнес таски) и удаления ПО.

Petyaumniy
Автор

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

sirojiddingroup
Автор

Почему вы комиком не стали? Ведь реально талант на лицо)) Да и денег комики больше получают))

miquelgorod
Автор

Уже на 0:35 отлично раскрыто всё об использовании контейнеров.

kst
Автор

Привет как твои успехи в go изучаешь ли? Будет ли по нему контент? Кстати интересно твое мнение лично go или python и почему?

sammygun
Автор

Спасибо, принял. Пора отказываться от докер ин докер

Porodeus
Автор

А что не так с билдом образов контейнеров на раннере с экзекутором шелл? Или речь о случае, когда негде запустить такой раннер?
И демон докера это виртуализация -- сильное утверждение)

alexandervrublevskiy
Автор

Антон, хелп, можешь помочь понять мне с гитлаб, точнее с СД,
Мне не понятно например все что написано в пайплайне, ну кроме баш команд,
К примеру stage, это для чего ? Допустим написал, это на что то влияет ? Есть ссылка на материал гдето объясняется, спасибо

redfox
Автор

можно ещё подключать сокет локального докера как volume к контейнерам

MN-mieo
Автор

Ну, тут явно начинать надо с того, что за образ мы строим, образ для выполнения ранера? Сразу бросаться в написание минусов - это опрометчиво, это итак гуглиться.

beulitca
Автор

наткнулся на ключ у base64 -w 0, заменяет tr

Noname-clvi
Автор

А как теперь настроить деплой эттго контейнера в куб с хельм чартом?

АлександрВыскребцев
Автор

Вот объясните мне, дураку. Не ужели в макитошах запрещено менять имя хоста, а точнее убирать коммерческое наименование аппарата. Или это что то другое?... Вот на всех видео где пользуются маки всегда полное наименование аппарата даже если это занимает пол, а а самый шик это в конце дописать к имени узла имя или фамилию. Что это?

станиславзотов-ду
Автор

"Докер - Докер демон - Виртуализация". Ну прям простите, но Вы, коллега, несёте чушь: между докером и виртуализацией нельзя ставить знак равенства. Либо вы слишком утрируете определения для аудитории, тем самым её дезинформируя, либо же Вы совсем не понимаете о чём рассказываете. Над финальной фразой про "всё просто" просто угарнул 🤣Вы, коллега, опять же рассказали про Kaniko, но не рассказали про особенности его работы, а именно тот папйплайн, что Вы показали в примере, будет собирать образы ну так в несколько раз медленнее, чем решение Docker in Docker, а именно из-за того что Kaniko не использует overlayfs. Для ускорения сборки у Kaniko имеются аргументы для кеширования слоёв в Docker Registry, что частично ускоряет сборку, но опять же далеко от показателей скорости сборки на DIND, но да же про них Вы не рассказали. Не осветив в видео данный нюанс работы Kaniko, но сильно его рекламируя, в очередной раз подтверждаете тот факт, что Вы рассказываете о вещах, о которых сами не понимаете, как они работают под капотом.

dsizmaylovo
Автор

Мне вот только одно интересно, что за скрытая реклама про переезд в Европу, вы здесь пропагандой занимаетесь или все же просветительской деятельностью?

денисвиноградов-эв