Докер как облачная среда разработки в браузере

Привет, Хабр! Меня зовут Ильдар.

Последнее время я использую докер, как среду разработки, в этом посте я расскажу, как я это делаю.

Я разработал Облачную ОС, которая позволяет разрабатывать микросервисы в облаке, на сервере или локальном компьютере.

Сферы применения:

  • автоматизация процессов CI/CD;

  • локальные системы контроля версий;

  • облачные IDE системы для разработки программного обеспечения;

  • управление веб хостингом;

  • и т.п.

Проект https://cloud.bayrell.org/ru/

Что такое Облачная ОС?

BAYRELL Cloud OS — это opensource облачная операционная система с возможностью устанавливать приложения и различный софт в единую облачную экосистему, с помощью веб интерфейса.

Облачная ОС позволяет развернуть свое собственное облако на базе Docker Swarm и управлять им через веб интерфейс.

В чем отличие от Portainer?

В Облачной ОС не нужно создавать YAML файлы. Вся конфигурация по запуску приложения находится в самом приложении.

Я хочу создать репозиторий готовых программ, которые помогут программистам и devops в их работе, позволяя устанавливать эти программы через веб интерфейс, без необходимости править конфиги nginx и yaml файлы.

Например:

  • админка для управления сервером;

  • настройка nginx через веб интерфейс;

  • деплой проектов;

  • мониторинг сервера и логов;

  • и т.д

Функционал Облачной ОС

Веб панель для управления докер кластером

Запустить приложения можно из репозитория облачного ПО https://bayrell.org/ru/repo

Запущенные приложения
Запущенные приложения

В классическом докер у меня возникал вопрос. Я запустил базу данных. А как ей управлять и получить доступ к веб интерфейсу adminer? Особенно если сервер в интернете?

В Облачной ОС это решается следующим образом. Рядом с запущенным контейнером если у программы есть интерфейс управления, появляется кнопка админ. Параметры админки задаются шаблоном приложения, который разработал вендор при сборке контейнера.

В данном случае доступны две админки:

  • управление базой данных MySQL

  • доступ к VSCode в браузере

Возможность запускать контейнера без yaml файла

Основная идея в заранее подготовленных шаблонах. При сборке контейнера, тот кто собирает контейнер, должен создать шаблон запуска этого контейнера. Этот шаблон содержит информацию как запускать контейнер.

Указываются:

  • параметры запуска контейнера

  • volume, которые нужно подключить

  • переменные для запуска

  • прочие настройки

Смысл в том, чтобы пользователь при запуске контейнера, указал только необходимые параметры запуска, и не думал, как нужно создать yaml файл и откуда его взять.

Например, для запуска MySQL контейнера нужно указать только root password и hostname где запустить контейнер.

Запуск MySQL
Запуск MySQL

HTTP маршрутизация

BAYRELL Cloud OS содержит аналог Ingress из Kubernetes — встроенный Nginx для маршрутизации запросов к контейнерам.

После создания докер кластера возникает вопрос. А как добавить домены? Обычно начинают открывать порты 8080, либо ставить traefik. Имхо, нужно несколько раз подумать, прежде чем открывать порты в докере. Потому что открывая порты, вы даете доступ всему интернет.

В Облачной ОС встроен механизм управления маршрутизацией запросов в контейнеры, через веб интерфейс. Можно добавить домен и указать в какой контейнер должен быть отправлен запрос.

Возможность добавления доменов
Возможность добавления доменов

Для каждого домена можно настроить маршруты

Маршруты для домена
Маршруты для домена

Система виртуальных пространств

Виртуальные пространства нужны для запуска ERP систем в едином окне. Например, нужно запустить систему контроля версий, корпоративную почту, систему тайм менеджмента и корпоративную википедию на одном домене.

Для этого есть виртуальные пространства. Создается пространство, добавляется домен, и запускаются все приложения в едином окне.

Единое окно означает:

  • Будет единая авторизация между корпоративными системами.

  • Системы доступны будут с одного URL.

  • Управление пользователями из единого источника.

Тонкий клиент

Еще одна причина, почему я не пользуюсь Portainer, в том, что он открывает доступ к управлению к серверу по HTTP, иногда даже без сертификата.

В Облачной ОС разработан тонкий клиент https://blog.bayrell.org/ru/bayrell-os/441-ustanovka-bayrell-cloud-os-desktop-client.html

Тонкий клиент позволяет получить доступ к веб интерфейсу и настройкам кластера используя защищенное SSH соединение.

Как использовать Облачную ОС для разработки в браузере?

Основная инструкция содержится в видео

Установка Облачной ОС для программистов. Обзор BAYRELL Cloud OS
vkvideo.ru

Инструкция по установке https://blog.bayrell.org/ru/bayrell-os/267-ustanovka-bayrell-cloud-os.html

Если вкратце, то нужно:

  1. Установить облачную ОС

  2. Через веб интерфейс поставить MySQL и VSCode

  3. Запустить контейнер с настроенным php или python

  4. Добавить домен для локальной разработки

  5. Зайти через веб интерфейс в запущенный VSCode

  6. Начать разрабатывать проект

Что есть для разработчиков:

  1. Готовые сборки для php

  2. Админка для MySQL

  3. Управление доменами и nginx конфигурацией

  4. Возможность собирать и запускать контейнеры в браузере на сервере.

  5. Редактор кода VSCode в браузере

Зачем это нужно?

Разрабатывать софт можно в браузере. Каждый проект работает в контейнере изолированно друг от друга. Особенно, это полезно для python проектов, где могут быть конфликты pip.

Если у вас большой проект и много микросервисов, то вам не нужно запускать их все локально. Вы можете вести разработку сразу на сервере. Для каждого программиста можно настроить свою докер среду.

Можно разрабатывать и обучать нейронки прямо на сервере. Об этом подробнее здесь https://habr.com/ru/articles/694616/

Если у вас есть опыт использования облачных сред разработки — делитесь в комментариях.

© Habrahabr.ru