Тотальная контейнеризация и переосмысление роли контейнеров в процессе девелопмента и развития инфраструктуры не могла не сподвигнуть главных адептов open source мира на дальнейшие свершения. Red Hat уверенно гнет свою линию, и если несколько лет назад OpenShift был всего лишь PaaS-ом, то сегодня — это нечто большее. Сам по себе OpenShift понятен, но не прост. Сделать процесс управления контейнерами и развертывания приложений как можно более безболезненным и безопасным — главная задача, которую преследует OpenShift, и стоит отметить, ребята из Red Hat преуспели в этом. Но, сам по себе OpenShift никак не приближает к заветной мечте — предоставить девелоперу, ПМу, QA инженеру окружение, где будет все. Это такой себе идеальный мир без Jira или RedMine, без нескончаемых Jenkins слейвов, незаконченных обновлений стейджинга, различных IDE, которые по разному ведут себя с разными проектами, без ручных настроек проектов на GitHub. Этот идеальный мир — проект, который Red Hat анонсировали относительно недавно, а именно в мае 2017, и имя ему openshift.io.
Чтобы выжать из OpenShift все, на вооружение было взято несколько opens source проектов (как это обычно и происходит с компанией Red Hat, бизнес которой и построен вокруг open source) — fabric8 и Eclipse Che. Обо всем по порядку.
OpenShift неплохо справляется с развертыванием приложений в Kubernetes подах. Но, едва ли платформа дает абсолютно все, что может потребоваться девопсам, ПМам и рядовым кодерам. Тут на выручку и приходит Fabric8 — интегрированная девелопмент платформа для Kubernetes.
Основная идея состоит в том, что мало просто задеплоить приложение. Нужно начинать сначала, а именно с создания проекта и управления исходниками. Так, запустив Fabric8 локально, либо выцыганив аккаунт на openshift.io (пока что закрытая бета), вам будет предложено создать space, в котором вы укажете местонахождение исходников, а также выберете тип pipeline. Да, openshift.io автоматически создаст вам несколько неймспейсов со служебными подами, в зависимости от выбранного типа CI/CD.
Так, например, можно заказать себе одну из следующих цепочек:
- Build release
- Build release > stage
- Build release > stage > prod
Как видим, идем от простого к сложному. То есть, можно просто использовать Jenkins для CI, и для вам будут подниматься slaves в подах, как только срабатывает webhook на GitHub (провайдер может быть другим). Либо же, после Jenkins билда, образ будет запушен в локальное регистри и переиспользован уже в stage неймспейсе. Заключительная конфигурация предполагает promotion со стейджинга на продекшен — в данном случае это происходит не автоматически, а только по требованию пользователя.
Сам fabric8 разворачивается на OpenShift в виде подов. В запущенном виде, с 1 проектом, который использует продвинутый CI/CD — Build release > stage > prod — было насчитано аж 39 запущенных контейнеров — это сервер аутентификации (это кстати KeyCloak), АПИ сервер, базы данных, служебные поды, Jenkins и его слейвы, Eclipse Che и сопутствующие воркспейсы. Запаситесь RAM-ом, в общем :)
Кстати, про Eclipse Che. Картинка Openshift.io была бы не полной, если бы девелопмент не проистекал непосредственно в браузере. В CI/CD сценарии, явно не хватает комитов, которые и дернут webhooks. И Openshift.io знает, откуда вы будете комитить, предлагая разрабатывать приложения там же, в OpenShift. Red Hat уже давно заинтересовался Eclipse Che и даже купил компанию Codenvy, разработчики которой и являются отцами-основателями проекта. Интересно, что за последние 2 года web IDE либо разорились, либо были поглощены гигантами (как не вспомнить уход Cloud 9 под крыло AWS). Ну, это так, к слову :)
Eclipse Che запускается в поде на OpenShift и создает workspace требуемой конфигурации. То есть, после создания space и импорта проекта, Eclipse Che импортит исходники и открывает в онлайн IDE, прямо тут, не отходя от кассы. Che воркспейс — это под с набором серверов и прочего софта, которые в конечном итоге и предоставляют IDE в браузере. Воркспейсы запускаются и останавливаются on demand, то есть когда это нужно пользователю. Теперь цепочка выглядит более целостной:
import — code and push — CI/CD
Но и это не конец. Кроме написания кода, CI и развертывания приложений, есть еще и планирование. Дабы предоставить все в одной коробке был разработан Planner. Такой себе аналог Jira, конечно гораздо проще, но и разработка платформы еще кипит, так что стоит ожидать улучшений.
Fabric8 и его коммерческий аналог openshift.io медленно, но верно, идут (или стараются идти) к тому, чтобы комплексно решать боли и проблемы девелопмент команд, и в первую очередь девопсов. На данный момент решение сыровато и явно не готово к real life projects, но ведь и OpenShift не сразу строился. Банки, фин. учреждения, компании со строжайшей политикой безопасности — это потенциальные потребители такого решения. Тем более под маркой Red Hat. Но, не забываем, что за каждым продуктом компании стоит open source проект — бери и устанавливай, было бы время и желание ковыряться.
Поживем-увидим. Тем более, что в openshift.io Red Hat разрабатывает систему аналитики. Компания анализирует сотни тысяч проектов в открытом доступе, чтобы подсказать, как улучшить ваш код, предложить новую версию библиотеки, сообщить об уязвимости и т.д.
Microsoft, кстати, тоже пытается продвигать подобную платформу — VSTS. Но, Отличие Red Hat в том, что они сделали ставку на Kubernetes, и, судя по всему, не прогадали.
Автор: ivantsoft