Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018)

Материал из 0x1.tv

(перенаправлено с «20180929D»)
Докладчик
Алексей Костарев.jpg
Алексей Костарев

В докладе рассматриваются вопросы использования технологии контейнеризации docker, кластеризации docker swarm, docker-образов на основе дистрибутива ALT Linux для построения полноценного решения с поддержкой практик DevOps.

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

Презентация

Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018).pdf

Thesis

Одна из важных задач стоящая перед разработчиком конечных решений для Заказчиков — выбор подходящего дистрибутива Linux. Какой бы дистрибутив не был выбран, как правило, вскоре для тестовых или иных целей встаёт задача разворачивания в нём программного обеспечения, отсутствующего в выбранном дистрибутиве. Портирование стороннего ПО, как правило, трудоёмкий процесс даже при наличии исходных кодов.

Большие проблемы также вызывает разработка и тестирование различных версий разрабатываемого и используемого программного обеспечения, перенос новых версий Заказчику и перевод функционирующих систем на новые внедряемые версии.

Одним из решений данных проблем является использование технологии контейнеризации docker и запуска сервисов в кластерном окружении docker-swarm. Это обеспечивает:

  • поддержку при разработке, внедрении и эксплуатации различных версий программного обеспечения;
  • использование микросервисной архитектуры при создании и интеграции системы;
  • оперативную интеграцию сервисного и клиентского ПО различных Linux-дистрибутивов;
  • запуск и тестирование конечного решения в различных конфигурациях: моносервер, кластер в рамках одной сети, кластер в рамках нескольких сетей включая облачные сервисы;
  • простоту конфигурирования и развёртывания кластерного решения при использовании технологии docker swarm.

В докладе описывается опыт использования технологии docker для поддержки полного цикла разработки программного обеспечения.

Ввиду подверждённой надёжности и удобства использования в реальных проектах для построения docker-образов был выбран docker-образ дистрибутива Альт на платформе p8. Данный дистрибутив входит в Единый реестр российских программ для электронных вычислительных машин и баз данных.

Технология docker поддерживает мощный механизм наследования образов. Он позволяет значительно сократить ресурсы, необходимые для создания docker-решений: дисковую и оперативную память, объём передаваемых слоёв образов по сети.

На рисунке 1 приведено дерево основных используемых docker-образов.

Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018) 2018-10-03 20-30-14 image0.png

Корневым для большинства дочерних образов является образ 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/.

Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018) 2018-10-03 20-31-26 image0.png
Организация процесса DevOps на платформе контейнеризации docker (Алексей Костарев, OSSDEVCONF-2018)!.jpg

Примечания и ссылки

  • 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/.
  1. https://hub.docker.com/r/flexberry/alt.p8/
  2. https://hub.docker.com/r/flexberry/alt.p8-postgresql/

Plays:99   Comments:0