Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018)
Материал из 0x1.tv
- Докладчик
- Алексей Костарев
В докладе рассматриваются вопросы использования технологии контейнеризации docker, кластеризации docker swarm, docker-образов на основе дистрибутива ALT Linux для построения полноценного решения с поддержкой практик DevOps.
Содержание
Видео
Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.
Презентация
Thesis
Одна из важных задач стоящая перед разработчиком конечных решений для Заказчиков — выбор подходящего дистрибутива Linux. Какой бы дистрибутив не был выбран, как правило, вскоре для тестовых или иных целей встаёт задача разворачивания в нём программного обеспечения, отсутствующего в выбранном дистрибутиве. Портирование стороннего ПО, как правило, трудоёмкий процесс даже при наличии исходных кодов.
Большие проблемы также вызывает разработка и тестирование различных версий разрабатываемого и используемого программного обеспечения, перенос новых версий Заказчику и перевод функционирующих систем на новые внедряемые версии.
Одним из решений данных проблем является использование технологии контейнеризации docker и запуска сервисов в кластерном окружении docker-swarm. Это обеспечивает:
- поддержку при разработке, внедрении и эксплуатации различных версий программного обеспечения;
- использование микросервисной архитектуры при создании и интеграции системы;
- оперативную интеграцию сервисного и клиентского ПО различных Linux-дистрибутивов;
- запуск и тестирование конечного решения в различных конфигурациях: моносервер, кластер в рамках одной сети, кластер в рамках нескольких сетей включая облачные сервисы;
- простоту конфигурирования и развёртывания кластерного решения при использовании технологии docker swarm.
В докладе описывается опыт использования технологии docker для поддержки полного цикла разработки программного обеспечения.
Ввиду подверждённой надёжности и удобства использования в реальных проектах для построения docker-образов был выбран docker-образ дистрибутива Альт на платформе p8. Данный дистрибутив входит в Единый реестр российских программ для электронных вычислительных машин и баз данных.
Технология docker поддерживает мощный механизм наследования образов. Он позволяет значительно сократить ресурсы, необходимые для создания docker-решений: дисковую и оперативную память, объём передаваемых слоёв образов по сети.
На рисунке 1 приведено дерево основных используемых docker-образов.
Корневым для большинства дочерних образов является образ flexberry/alt.p8[1], содержащий минимальный набор команд и библиотек необходимых для запуска и отладки серверных приложений.
Сложные информационные системы строятся на различных стеках технологий. Технология docker за счёт микросервисной архитектуры позволяет легко интегрировать ПО, созданное в различных языках программирования и стеках технологий, например, в одной системе можно соединить Java, .NET и PHP-решения. В частности, в наш стек технологий входит программное обеспечение (ПО) платформы Flexberry, написанное на языке C#.
Данное ПО функционирует в дочернем docker-образе (flexberry/ alt.p8-apache2-mono) в состав которого включён Web-сервер Apache2 и пакет mono4. Этот образ становится базовым для прикладного решения, работающего на mono4.
WEB-приложения пользователей создаются на основе программного обеспечения с открытым исходным кодом Flexberry Ember (https://github.com/Flexberry/ember-flexberry) и оформляются в виде отдельных docker-образов в состав которых наряду с кодом Ember-приложения включается OData-сервис, обеспечивающий REST-интерфейс для общения приложения с базой данных PostgreSQL.
База данных также функционирует в виде docker-контейнера образа flexberry/alt.p8-postgresql[2].
В рамках разрабатываемых проектов используются официальные или дочерние от них образы различных сервисов (Pentaho, Alfresco, jBPM, MongoDB, и др.) репозитория hub.docker.com. По мере возможности эти сервисы путём сборки из исходных кодов или переноса бинарных кодов и файлов конфигурации с использованием механизма сборки «multistage build» переносятся в дочерние образы собираемые на основе flexberry/alt.p8.
Интеграция сервисов производится на основе кластерной системы docker-swarm, обеспечивающей:
- распределённый запуск серверных приложений в кластере;
- минимизацию работ по настройке файлов конфигурации системы за счёт использования внутреннего DNS;
- дополнительный уровень защиты за счёт организации внутренней сети и закрытию прямого доступа к внутренним портам (база данных, OData-запросы, и т.д.) проекта;
- репликацию части сервисов с балансировкой нагрузки;
- отказоустойчивость за счёт перезапуска приложений на узлах кластера при выходе из строя одного из узлов.
Разрабатываемые docker-образы по конкретному проекту являются дочерними к вышеперечисленным образам и часто содержат закрытую информацию что исключает их размещение на общедоступных ресурсах (в частности hub.docker.com). В связи с этим для работы с ними используются внутренние регистраторы docker-образов. Все разрабатываемые образы проекта с префиксом dh.flexberry.ru/ хранятся на внутреннем репозитории docker-образов dh.flexberry.ru и передаются Заказчику в рамках локальной сети которого также создаётся внутренний репозиторий docker-образов домена dh.flexberry.ru.
К сожалению, в настоящий момент невозможно использование docker-технологии в сертифицированных решениях. Необходимо «приземлять» docker-контейнеры (запускать сервисы контейнеров непосредственно в HOST-системе). Использование единого корневого образа flexberry/alt.p8 упрощает данный процесс , так как механизм установки, компиляции или запуска сторонних бинарных кодов отлаживается на этапе разработки проекта в рамках docker-образа.
Все исходные коды проекта включая коды для сборки образов (Dockerfile, файлы конфигурации, вспомогательные файлы, и т.д.) ведутся с использованием git-репозитория (см. рис. [kaf_docker2]). Это позволяет поддерживать технологию DevOps с версионированием исходных кодов и docker-образов и возможностью поддержки различных версий программного обеспечения и docker-образов с гибким механизмом переключения между различными версиями как в процессе разработки, так и в процессе функционирования проектов у Заказчиков.
Кроме этого docker-swarm технология позволяет использовать облачные платформы Windows Azure, Amazon и другие для включения в состав сервисов проекта приложений, запущенных в этих облачных платформах.
Использование данного подхода позволило обеспечить поддержку основных циклов DevOps: планирование, программирование, компиляции, тестирования, формирования версий и релизов, разворачивание решения у Заказчика, функционирования и мониторинга разрабатываемых систем.
В итоге это позволяет значительно снизить накладные расходы и ресурсы, необходимые для поддержки полного цикла разработки решений.
Все открытые родительские docker-образы платформы Flexberry располагаются в репозитории https://hub.docker.com/u/flexberry/.
Документацию по созданию docker-образов и разворачиванию на их основе решений можно найти на сайте https://docs.docker.com/.
Примечания и ссылки
- Usman Ismail, Bilal Sheikh, Continuous Integration and Deployment with Docker and Rancher. January 2016
- The New Stack: The Docker and Container Ecosystem, eBook SeriesThe New Stack. AUTOMATION & ORCHESTRATION WITH DOCKER &
- CONTAINERS Технологическая программная платформа Flexberry для профессиональной разработки программного обеспечения http://flexberry.ru/.
- ↑ https://hub.docker.com/r/flexberry/alt.p8/
- ↑ https://hub.docker.com/r/flexberry/alt.p8-postgresql/
Plays:99 Comments:0