Статьи

Представляем Depcon: самый быстрый способ развертывания Docker в Mesos / Marathon

Depcon — это самый быстрый способ начать развертывание контейнеров Docker в кластере Mesos / Marathon. Вот список функций, которые помогут вам начать использовать Depcon в вашем конвейере развертывания:

  • Native Binary:  написанный на Go с двоичной поддержкой для Linux, Mac OS X, Windows и BSD систем
  • Полная поддержка марафона:  поддерживает 100%  API марафона
  • Дескрипторы нескольких форматов:  принимает дескрипторы развертывания Marathon в JSON или YAML
  • Поддержка групп:  поддержка создания расширенных групп развертывания с вложенными зависимостями.
  • Формат вывода:  все выходные данные и ответы могут быть выведены в CLI Tabular, JSON или YAML.
  • Подстановка свойств:  поддерживает  ${PROPERTY} подстановку в  дескрипторе приложения . Например, вы можете вставить значения из системы сборки непосредственно в шаблон, который разрешает и развертывает
  • Масштабирование:  быстрое масштабирование работающего приложения Docker для установки желаемого количества экземпляров
  • Ресурсы:  быстрое обновление процессора или памяти работающего приложения Docker
  • Задача:  полное управление задачами
  • Async / Sync Deployments:   Depcon позволяет вам развернуть приложение и либо подождать, пока оно станет работоспособным, либо просто развернуть и выйти, позволяя проводить опросы на собственной частоте с помощью Depcon.
  • Конфигурация среды:  Depcon создает и использует файл конфигурации, который позволяет вам определять предпочтительные глобальные параметры, а также именованные среды. В именованных средах данные аутентификации и информация о конечных точках сохраняются, что позволяет быстро переключаться между средами.

Kubernetes, Compose и Amazon ECS Future Support

Цель Depcon — предложить один инструмент, который можно использовать для развертывания в распространенных технологиях. Текущая дорожная карта направлена ​​на полную поддержку сред Kubernetes, Compose и ECS. Это позволит вам интегрировать Depcon в существующие развертывания и управлять гибридным центром обработки данных. У нас также есть в планах возможность использовать файл Compose и преобразовать его в соответствующий тип дескриптора для среды, в которой он развертывается, будь то Mesos / Marathon, Kubernetes или Amazon ECS.

Установка Depcon

Чтобы установить Depcon Binary:

  1. Загрузите двоичный файл для своей архитектуры по адресу:  https://github.com/gondor/depcon.
  2. Скопируйте  depcon бинарный файл в системный путь

В Ubuntu или Debian: 

  1. Загрузите пакет Debian с  https://github.com/gondor/depcon.
  2. В вашем терминале запустите: sudo dpkg -i depcon-ver-arch.deb

Установка из источника:

go get -v github.com/gondor/depcon

Запуск Depcon в первый раз

При первом запуске Depcon будет запущен мастер на основе интерфейса командной строки, запрашивающий несколько параметров и позволяющий определить вашу первую среду. Вот пример прохождения:

$ depcon

------------[   Generating Initital Configuration   ]----------

Root single environment [Y/n]? Y
Default output format (can be overridden via runtime flag)
1 - column
2 - json
3 - yaml
Option: 1

Environment Name (eg. test, stage, prod) : test
Marathon URL (eg. http://hostname:8080)  : http://marathon-uri:8080
Authentication Required [y/N]? N

Развертывание вашего первого марафонского приложения

Теперь, когда мы настроили нашу первую среду, давайте развернем приложение Docker на Marathon, используя Depcon. В рамках этого примера мы также продемонстрируем возможность замены токенов в дескрипторе приложения.

Давайте возьмем один из  рецептов  с сайта Марафона, но добавим  ${NAME} параметр для подстановки. Сохранить этот файл как busybox.json

{
    "id": "simple-docker", 
    "container": {
      "docker": {
        "image": "busybox"
      }
    },
    "cmd": "echo hello from ${NAME}",
    "cpus": 0.2,
    "mem": 32.0,
    "instances": 2
}

Поддержка YAML:   выше приведен дескриптор приложения Marathon в формате JSON. Depcon расширяет это, позволяя вам определять вышеупомянутое в YAML или JSON. Вы можете легко конвертировать туда и обратно между форматами с помощью Depcon, используя  convert подкоманду

Используя Depcon, давайте развернемся  busybox.json в нашей  test среде, которую мы создали во время первого запуска. Мы также  ${NAME} заменим параметр значением «Марафон»

$ depcon app create busybox.json -p NAME=Marathon --wait

INFO [depcon.deploy.wait]: Waiting for application deployment to complete for /simple-docker
INFO [depcon.deploy.wait]: Waiting for application deployment to complete for /simple-docker
INFO [depcon.deploy.wait]: Waiting for application deployment to complete for /simple-docker
INFO [depcon.deploy.wait]: Application deployment has completed for /simple-docker, elapsed time 7.58 sec(s)
WARNING [depcon.deploy.wait]: No health checks defined for '/simple-docker', skipping waiting for healthy state

ID:   /simple-docker
CPUs:     0.20
Memory:   32.00
Ports:    10000
Instances:  2
Tasks:          Staged                   : 2
                Running                  : 0
                Healthy                  : 0
                UnHealthy                : 0

Container:      Type                     : Docker
                Image                    : busybox

Как вы можете видеть, указав этот  --wait параметр, Depcon подождал, пока приложение не будет полностью подготовлено, и затем вышел из цикла. Если проверки работоспособности были определены, то Depcon будет ждать, пока все проверки не будут выполнены.

Ниже вы можете видеть на снимке экрана, что на Marathon запущено приложение «simple-docker», а  ${NAME} параметр был изменен на «Marathon». В качестве альтернативы, если  NAME переменная окружения,  -p опция может быть опущена.

SimpleDocker-Marathon

Удаление / Уничтожение Приложения

Удаление запущенного приложения с помощью Depcon — это одна команда. Давайте удалим приложение «simple-docker», которое мы создали выше:

$ depcon app destroy simple-docker

DEPLOYMENT_ID                         VERSION
c351f8b3-cf72-43e8-aeb3-19a127120b2e  2015-11-03T21:19:40.769Z

Другие общие операции

Список всех запущенных приложений:

depcon app list

Получение приложения в форме JSON:

depcon app get simple-docker -o json

Откат приложения до предыдущей версии:

depcon app rollback myapp version

Масштабирование приложения:

depcon app scale myapp 4

Список всех запущенных задач:

depcon task list

В итоге

Выше приведена лишь небольшая часть того, что может быть достигнуто с использованием Depcon в качестве инструмента развертывания. Благодаря возможности ожидания восстановления работоспособности приложений с выходом в CLI, JSON или YAML упрощается интеграция с Jenkins или любым другим конвейером развертывания.

Мы надеемся, что к началу 2016 года будет полностью поддержана поддержка Kubernetes, Amazon ECS и Docker, что позволит Depcon быть единым инструментом для запуска Docker локально или против кластера с дескрипторами приложений в качестве ваших рецептов.

Чтобы внести свой вклад, отметить или следить за активной разработкой, посетите  проект Depcon на Github.