
OpenShift.IO: all-in-one платформа для розробки і CI/CD
Тотальна контейнеризація і переосмислення ролі контейнерів у процесі девелопменту і розвитку інфраструктури не могла не спонукати головних адептів 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 запущених контейнерів - це сервер автентифікації (це до речі KceCloak), АПІ сервер, бази даних, службові спи, 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, і, судячи з усього, не прогадали.