Мы все любим Docker за его гибкость и удобство. Однако постоянная работа в консоли иногда не совсем то, что действительно хотят видеть инженеры DevOps. Сегодня мы расскажем про одно очень интересное решение для управления контейнерами. На палубе появляется VMware Admiral.
Установка
Когда проблема автоматизации развертывания и поддержания жизненного цикла контейнеров возникла перед разработчиками VMware, они решили создать продукт, полностью решающий эти задачи. Изначально он предназначался для управления только контейнерами в составе платформы VMware vSphere, однако, получил поддержку управления Docker-контейнерами и был выделен в отдельный программный продукт.
VMware Admiral был выпущен под свободной лицензией, а исходный код выложен на GitHub. Это позволяет без лишних ограничений использовать этот прекрасный инструмент, а также модифицировать его под свои нужды. Установить его на сервер можно тремя разными способами. Не забудьте, что Docker уже должен быть установлен.
Как контейнер Docker
Подобно другим схожим инструментам, VMware Admiral доступен в качестве контейнера в Docker Hub и может быть развернут одной командой в Docker версий 1.11.x и 1.12.x:
docker run -d -p 8282:8282 --name admiral vmware/admiral
После того, как образ будет скачан и запущен, станет доступен веб-интерфейс по следующему адресу:
http://SERVER_IP_ADDRESS:8282
Скомпилированное приложение
Достаточно простым способом можно развернуть заранее скомпилированное Java-приложение. Скачиваем его по ссылке и запускаем одной простой командой:
java -jar admiral-host-*-uber-jar-with-agent.jar --bindAddress=0.0.0.0 --port=8282
Как и в первом случае, VMware Admiral станет доступен посредством веб-интерфейса.
Самостоятельная компиляция
Также имеется возможность клонировать репозиторий локально и собрать все из исходников самостоятельно. Для этого следует воспользоваться соответствующей инструкцией.
Использование
Хосты с Docker
Самым популярным способом установки приложений в Docker является ресурс DockerHub. В репозиториях ресурса расположены тысячи вариантов серверных приложений, доступных для развертывания. VMware Admiral сделал эту операцию удобнее — для того чтобы развернуть любое приложение, достаточно один раз щелкнуть мышью.
Общедоступные репозитории
Основным преимуществом VMware Admiral является возможность развертывания нужных приложений сразу на множество серверов с Docker на борту. Для этого нужно пройти два этапа:
На хостах открыть доступ к REST API
Добавить хосты в Admiral
Рассмотрим каждый из этапов подробнее. На удаленных хостах выполняем следующие действия:
Создаем конфигурационный файл для dockerd:
nano /etc/systemd/system/docker.service.d/startup_options.conf
Прописываем в него следующее содержимое:
#/etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376
Вместо стандартного порта 2376 можно указать любой другой. Соответственно, его нужно будет указывать при добавлении узла в кластер.
Перечитываем конфигурационные файлы:
sudo systemctl daemon-reload
Перезапускаем демон:
sudo systemctl restart docker.service
Теперь наш узел сможет принимать и реагировать на команды удаленного управления из VMware Admiral. Пришло время создать кластер и добавить в него узлы:
Открываем веб-интерфейс управления Admiral, набрав в браузере адрес:
http://Server_IP_Address:8282
Переходим на вкладку Кластеры
Нажимаем +Создать
Добавление хоста с Docker
Заполняем поля, внося данные первого узла кластера и нажимаем Сохранить
Переходим в созданный кластер на вкладку Ресурсы
Нажимаем +Узел
Заполняем данные второго узла кластера и нажимаем Добавить
Добавление узла
Повторяем процедуру, пока в кластер не будут внесены все требуемые узлы
Готовый кластер
Точно таким же образом можно создать кластер из хостов с VMware vSphere Integrated Containers. Теперь всеми узлами будет управлять VMware Admiral. Для этого на них автоматически развертывается специальный агент в виде контейнера. Попробуем на каждом подконтрольном узле развернуть нужный нам сервис из публичного репозитория:
- Переходим на вкладку Общедоступные репозитории
- Выбираем нужное приложение и нажимаем на стрелочку вниз, рядом с кнопкой Подготовка
- Нажимаем Введите дополнительные сведения
- Переходим на вкладку Политика
- В графе Размер кластера указываем желаемое количество хостов, на которых будет развернуто приложение
- Подготовка контейнера
- Заполняем оставшиеся параметры (если необходимо) и нажимаем Подготовить
Буквально через несколько секунд на все хосты кластера будет установлено нужное приложение, и оно станет доступно для использования. Это отличный вариант для быстрого масштабирования веб-сервисов или тестирования продукта.
Что такое Harbor
Для того чтобы хранить образы контейнеров обычно используется общедоступный репозиторий Docker Hub. Такой подход неприменим для корпоративного использования. Для решения этой проблемы был создан Project Harbor, представляющий собой форк Docker Hub с массой дополнительных возможностей, требуемых для Enterprise.
Ключевая особенность решения — повышенная безопасность образов. При выполнении push- и pull- операций Harbor сканирует их на уязвимости и, в случае обнаружения проблем, уведомляет администратора реестра, а также позволяет заблокировать проблемный образ.
VMware Harbor был выпущен также, как и Admiral в виде отдельного продукта под свободной лицензией и его можно скачать из репозитория на GitHub. Совместное применение этих программных продуктов позволяет создать полноценную инфраструктуру на базе контейнеров.
Установка VMware Harbor не отличается сложностью:
Скачиваем архив в формате tgz
Выполняем команду
tar xvf harbor-offline-installer-.tgz
Переходим в директорию
cd harbor-offline-installer-
Запускаем установочный скрипт
sudo ./install.sh
После выполнения установки можно зайти в веб-интерфейс Harbor, используя адрес сервера.
Заключение
Работа с контейнерами Docker и vSphere Integrated Containers значительно упрощается при использовании такого инструмента, как VMware Admiral. Объединив vSphere Integrated Containers Engine by VMware с VMware Harbor и VMware Admiral вы получите гибкое и хорошо настраиваемое решение Enterprise-уровня для развертывания любых сервисов на базе контейнеров, а также сможете управлять существующими Docker-хостами из привычного интерфейса.
blog.selectel.ru/budet-ispolneno-gospodin-admiral/