- PVSM.RU - https://www.pvsm.ru -
Читатели этого блога, а также посетители последних HighLoad++ и РИТ++ с большой вероятностью уже слышали про нашу утилиту для DevOps-инженеров dapp [1], но теперь мы решили официально и окончательно представить [2] её «большому миру». Формальное право на то нам даёт тот факт, что мы работаем с dapp для решения задач в production уже больше года, поэтому считаем, что технология созрела для более массового использования.
Итак, dapp — написанный на Ruby инструмент, созданный в компании «Флант» как Open Source-проект для реализации и сопровождения процессов CI/CD. Что он позволяет?
Когда мы рассказывали о dapp впервые (пост [3], видео [4]), речь шла об использовании этой утилиты для сборки образов Docker-контейнеров. Не буду пересказывать весь доклад, но перечислю основные возможности dapp, которые (с помощью конфигураций образов, описанных в Dappfile
) позволяют выполнять сборку образов быстро и эффективно:
before_install
, install
, before_setup
, setup
), результаты выполнения которых кэшируются (даёт значительный рост в скорости повторных сборок образа);git patch apply
) при новых сборках и кэширующая содержимое этих патчей;Последнее мы планировали дополнить поддержкой Ansible, и актуальность этого вопроса для нас только возрастает, но фактическая реализация пока отстаёт от намерений.
Зато мы продвинулись в другом важном направлении — расширении возможностей dapp за рамками сборки образов, в области других составляющих процессов непрерывной интеграции и доставки приложений. Начальная поддержка деплоя в dapp ознаменовала возможность интеграции с системой Kubernetes, используемой нами для оркестровки контейнеров (подробнее мы недавно рассказывали: «Наш опыт с Kubernetes в небольших проектах (обзор и видео доклада) [6]»). Суть этой фичи заключается в следующем:
backend.yaml
, frontend.yaml
, cron.yaml
в специальном каталоге .kube/
).kubectl
, которая разворачивает описанную в них инфраструктуру в нужном кластере Kubernetes (опять же, кластеры могут быть разными для каждого контура).
Технически это реализовано с помощью команды dapp kube deploy
(см. документацию [7]), которая по своей сути является обёрткой к менеджеру пакетов Kubernetes — Helm [8], позволяя:
Dappfile
, в Helm (имеет helper для составления имени образа).Примечание: Сам деплой мы делаем через GitLab CI, о чём писали в недавней статье «GitLab CI для непрерывной интеграции и доставки в production»: «Часть 1: наш пайплайн [9]», «Часть 2: преодолевая трудности [10]».
Прямо сейчас наш коллега пишет статью-знакомство с dapp, в которой будет приведён пример сборки приложения в dapp и сравнение этого процесса с Docker Compose. Мы опубликуем её в блоге на следующей неделе.
А пока предлагаю ссылки на уже имеющуюся информацию:
Исходный код dapp написан на языке Ruby и опубликован на GitHub [1] под свободной лицензией Apache License 2.0 (она же используется в таких близких нам проектах, как Moby/Docker, Kubernetes, Helm, etcd и других).
Мы приглашаем DevOps-инженеров и Open Source-энтузиастов, заинтересованных в применении dapp, к участию в проекте. Исследуйте его, задавайте вопросы (можно прямо здесь в комментариях), указывайте на проблемы [14], предлагайте улучшения [15]. Спасибо за внимание!
Автор: shurup
Источник [16]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/260770
Ссылки в тексте:
[1] dapp: https://github.com/flant/dapp
[2] представить: http://flant.ru/news/66
[3] пост: https://habrahabr.ru/company/flant/blog/324274/
[4] видео: https://youtu.be/8R5UDg29Vic?t=12m45s
[5] Docker 17.06: https://habrahabr.ru/company/flant/blog/332160/
[6] Наш опыт с Kubernetes в небольших проектах (обзор и видео доклада): https://habrahabr.ru/company/flant/blog/331188/
[7] см. документацию: https://flant.github.io/dapp/kube_commands.html
[8] Helm: https://github.com/kubernetes/helm
[9] Часть 1: наш пайплайн: https://habrahabr.ru/company/flant/blog/332712/
[10] Часть 2: преодолевая трудности: https://habrahabr.ru/company/flant/blog/332842/
[11] flant.github.io/dapp: http://flant.github.io/dapp/
[12] Первое приложение на dapp: http://flant.github.io/dapp/get_started.html
[13] dapp_ru: https://t.me/dapp_ru
[14] проблемы: https://github.com/flant/dapp/issues
[15] улучшения: https://github.com/flant/dapp/pulls
[16] Источник: https://habrahabr.ru/post/333682/
Нажмите здесь для печати.