Друзья! Мы долго и напряженно работали и теперь нам, уже честно, нравится то, что получилось. А получилось просто, удобно и понятно, для всех и везде. Вся конфигурация сложного и мощного Битрикс серверного окружения (серверы приложений, реалтайм-чаты, кэши, системы хранения и др.) из дюжины контейнеров и микросервисов описана полностью декларативно исключительно в форматах Dockerfile, Docker-compose и .env-файлов - нет никаких скриптов с кодом настройки, многоуровневых меню и императивщины. Мы выложили результат нашего труда в официальный git-репозиторий вендора и залили официальные образы контейнеров в официальное хранилище предсобранных образов (docker images). Смело качайте, устанавливайте "Управление сайтом" и "Битрикс24" любой редакции за "пару-тройку" (С) минут (хоть самую "навороченную" редакцию "энтерпрайз") где хотите, от рабочего стола разработчика до мощного кластера серверов (включая оркестраторы типа "кубернетес") и наслаждайтесь прозрачной и быстрой работой системы в контейнерах!
От переполняющего меня ощущения радости и льющихся из глаз потоков слез счастья я буду дальше предельно краток и скуп на картинки. Картинок - не будет. Я просто, "на пальцах", понятным языком, в виде ответов на вопросы, расскажу, какие возможности открывает перед вами официальное контейнерное окружение Битрикс от вендора и почему ваша жизнь может круто измениться и стать на порядок более эффективной через несколько минут!
Что такое "контейнеры"?
Сложно объяснить, особенно если не разбираешься в теме - легко. А вот объяснить просто - сложно! :-)
"Контейнеры" - это самый современный и быстрый способ распространения простых и сложных программ, позволяющий быстро запустить их где угодно - от рабочего стола разработчика и тестировщика, до кластера кубернетес. "Контейнеры" на порядки снижают сложность и время развертывания, кратно увеличивая качество решения для конечного пользователя. Не нужно больше тратить, иногда, дни и недели на развертывание - запуск Битрикс из контейнеров даже в самой сложной конфигурации "энтерпрайз" с Postgres и "всеми наворотами" занимает несколько минут.
Персональный совет: приходите к любому вендору с первым и главным вопросом "вы поддерживаете контейнеры?", как с лакмусовой бумагой. Если вендор современный и продвинутый, он их поддерживает в своих продуктах или планирует поддержать в ближайшее время. Запомните, практически весь самый популярный и полезный в мире софт доставляется в "контейнерах". Отлично, идем дальше по вопросам!
Сколько может быть "контейнеров" в приложении?
Простые приложения могут распространятся в виде одного "контейнера", который создается из одного "образа" - например nginx или mysql. Сложные приложения, типа Apache Superset, могут содержать в себе 2-3 и более контейнеров для разных микросервисов. Битрикс содержит дюжину контейнеров и микросервисов (их число постоянно добавляется, следите за новостями), в зависимости от конфигурации дистрибутива и редакции.
Внутри нашей сборки есть одобренные и протестированные вендором образы "nginx", "php", "mysql", "postgres" и множество других. Все эти образы "контейнеров" тщательно описаны нами в Dockerfiles, куда при сборке кладутся подготовленные наши и легко читаемые простыми смертными конфигурационные файлы.
А можно запустить "контейнеры" на нескольких серверах?
По умолчанию, Битрикс запустит все свои контейнеры и микросервисы на одном сервере (или рабочем столе разработчика, тестировщика, администратора, безопасника) так, как описано в декларативном Docker-compose. Но легко можно разделить систему на части и некоторые контейнеры и микросервисы можно, при желании, запустить на выделенных серверах, например контейнеры для MySQL, Postgres, Sphinx. Еще нередко выносят на отдельные серверы контейнеры и микросервисы для чатов и быстрых коммуникаций.
А можно запустить "контейнеры" Битрикс в Kubernetes?
Легко! Обычно достаточно одного вечера и хорошо заваренного чайника с зеленым чаем, чтобы из имеющихся и тщательно подготовленных нами Dockerfiles и Docker-compose подготовить конфигурационные файлы Pods, Deployments и Ingress-Controllers для развертывания системы в Kubernetes. Ведь самое сложное в развертывании в Kubernetes - это подготовить качественные образы "контейнеров" и конфигурационные файлы, что мы уже и сделали для вас и будем поддерживать их в актуальном состоянии, как вендор (шепчу на ухо: активно пользуйтесь этим преимуществом).
А можно не собирать образы "контейнеров", а сразу скачать образы, подготовленные вендором, и запустить?
Многие спрашивают об этом и ответ - да! Ведь самостоятельная сборка образов может занять определенное время (в зависимости от мощности железа, наличия и качества работы вашего реестра образов контейнеров) и требовать определенных навыков, а при наличии доверия к вендору (или отсутствия времени или желания) можно образы и не собирать, а сразу их скачать из нашего официального репозитория образов и запустить. Вот пишу это, а у самого слюнки капают, как же я ждал этого.
А что такого сложного в самостоятельной сборке образа контейнера PHP, Nginx или NodeJS для запуска Битрикс?
Скажу честно - в подготовку конфигурационных и Docker-файлов того же образа PHP нами вложено немало сил и тестирования совместимости. Очень, очень много тонкостей нам пришлось учесть, чтобы Битрикс работал у вас с этой контейнерной конфигурации как новенький iPhone работает с новенькими AirPods. Аналогично, непросто было делать и тестировать в разных редакциях и условиях образ с специализированными модулями для Nginx, предназначенными для максимально быстрой работы Битрикс. Дам совет - если хотите снизить технологические риски и получить максимально быструю работу Битрикс - берите наши образы и конфиги контейнеров, иначе что-то может потом работать не так или не так быстро.
А как дела с информационной безопасностью?
ИБ - это важно. Мы уделили особое внимание вопросам обеспечения информационной безопасности контейнерной сборки, фанатично проработав с внутренним отделом информационной безопасности Dockerfiles и защитив все потоки данных в продукте внутри контейнерной сборки. Но, тем не менее, мы настоятельно рекомендуем, для разворачивания контейнерной сборки "на проде" собрать внутреннее совещание с вашими системными администраторами и безопасниками, просмотреть глазами все конфигурационные файлы контейнерной сборки еще раз, все "понять и простить" (С) и только когда все потоки данных и настройки будут понятны, переходить к переносу контейнерной конфигурации "на бой". Обратите внимание, в нашем официальном репозитории - очень, очень подробная документация, и ее нужно всю прочитать (и перечитать). Если же вам требуется гибкое управление микросервисами и автоматическое восстановление после падения серверов, я рекомендую потратить еще один вечер и аккуратно портировать наши конфигурационные файлы контейнеров в конфигурационные файлы Pods и Deployments кубернетес и запуститься там - вам понравится опыт и, поверьте, обратно в Docker-compose вы больше не вернетесь! :-)
"Полюбит, не полюбит"?
Контейнерную сборку Битрикс, я уверен, полюбят разработчики, т.к. теперь, чтобы запустить "Управление сайтом" или "Битрикс24" на рабочем столе, потребуется пара минут (я серьезно, проверьте прямо сейчас). У разработчика все многочисленные контейнеры и микросервисы "Управление сайтом" и "Битрикс24" теперь перед глазами - видны все логи, метрики использования процессора, памяти, сети, диска, все теперь совершенно ясно, не нужно "делать доступ к логам на сервер" и ждать его две недели и не дождаться.
Новую официальную контейнерную сборку, я убежден, полюбят и тестировщики. Все контейнеры и микросервисы тестируемого веб-сайта теперь у тестировщика перед глазами на рабочем столе и/или внутри Docker-Desktop. Видны все ошибки и предупреждения в логах. Все то, что запущено у тестировщика на рабочем столе, будет один к одному запущено "на бою". "У меня работало, а у клиента - нет" (С), останется в прошлом. Качество тестирования увеличится в разы, это проверено моей личной практикой не раз.
Контейнерную сборку беззаветно полюбят безопасники. Теперь у них весь "Битрикс24" перед глазами - видны все логи всех контейнеров и потоки данных. Все пароли и конфиги. Не нужно договариваться с системными администраторами и ждать неделю доступ к логам и конфигам на серверы (и не дождаться) - все можно оперативно проверить на рабочем столе и практически все то же самое будет и "на бою".
Обычно контейнерные сборки тепло воспринимают и продакты. Вы легко сможете показать продакту или бизнес-менеджеру развернутый за минуты на рабочем столе (или сервере) веб-проект на "Управлении сайтом" или "Битрикс24", наполненный контентом, с работающими админками, чатами, звонками и уведомлениями. Это сильно снижает риски внедрения и поощряет эксперименты с добавлением других популярных контейнеров с полезным открытым софтом, поверьте мне.
А вот кто реально затаит на вас обиду, так это наши любимые бесценные системные администраторы (я, конечно, шучу!). Ведь теперь любой сможет за 2 минуты запустить у себя на рабочем столе перед совещанием "Битрикс24-энтерпрайз" с Postgres и Sphinx и проверить, как в нем работает реал-тайм поисковая индексация сообщений в живой ленте. Но героических сисадминов ждут впереди новые и интересные вызовы - нужно учиться эффективно обновлять контейнеры, перезапускать при необходимости, управлять их логами, выделять им необходимое количество ресурсов и учиться дергать глазом, когда разработчики передадут им не Docker-compose, а полноценный Helm Chart с глубоко кастомизированным Ingress-Controller - но это уже совсем другая история! :-) (не пугайтесь, я одной ногой сисадмин, поэтому все что написано выше - чистая неправда)
Итого
Надеюсь, друзья, было интересно это все читать и все было предельно понятно и ясно, особенно где тут для вас бизнес-польза и увеличение эффективности труда и снижение рисков. Контейнеры принесли простоту и скорость внедрения, увеличив его качество в разы. А официальные контейнеры от вендора - еще большее благо, т.к. вендор берет на себя большую часть рисков их сопровождения и поддержки. Рекомендую прямо сейчас запустить у себя контейнерную сборку Битрикс внутри Docker-Desktop на рабочем столе и прочувствовать простоту и эффективность технологии и наслаждаться.
Задавайте, пожалуйста, побольше вопросов и удачных вам проектов!