Как настроить кластер Deis на DigitalOcean

Вступление

Deis - это частная платформа с открытым исходным кодом как услуга (PaaS), которая упрощает развертывание и управление приложениями на ваших собственных серверах. Используя технологии, такие как Docker и CoreOS, Deis предоставляет функции рабочего процесса и масштабирования, аналогичные Heroku, для выбранного вами хостинг-провайдера. Deis поддерживает приложения, которые могут работать в контейнере Docker и могут работать на любой платформе, поддерживающей CoreOS.

В этом уроке мы покажем вам, как настроить собственный кластер платформы Deis с 3 компьютерами в DigitalOcean.

Предпосылки

Для завершения этого руководства у вас должно быть следующее:

  • Возможность создавать не менее * 3 капель *, имеющих не менее * 4 ГБ памяти * и * 40 ГБ дискового пространства *. Это будут машины CoreOS, на которых будет установлена ​​платформа Deis

  • Ключ (ы) SSH для добавления к каплям, который используется для аутентификации при использовании инструмента + deisctl +

  • Ключ SSH для аутентификации против создателя Deis

  • Домен, на который будут указывать кластерные машины - этот учебник будет использовать + example.com + в качестве своего домена. Альтернативой является использование http://xip.io [xip]

Этот учебник в значительной степени основан на Wow для настройки кластера CoreOS на DigitalOcean. Просмотрите его, если у вас возникли проблемы с выполнением шагов этого руководства, связанных с созданием кластера CoreOS.

Мы также установим Deis Control Utility, + deisctl + и Deis. client, + deis +, на локальном компьютере Mac OS X, но вы можете установить их в другом месте, например, в Ubuntu 14.04 Droplet, если хотите. Закрытый ключ SSH, который соответствует общедоступному ключу SSH, используемому для создания дроплетов CoreOS, должен существовать на компьютере, где установлен + deisctl +.

Создать новый URL-адрес обнаружения

Чтобы создать кластер CoreOS, на котором мы будем устанавливать платформу Deis, нам сначала нужно сгенерировать новый URL-адрес обнаружения, уникальный адрес, в котором хранятся адреса и метаданные одноранговых CoreOS. Самый простой способ сделать это - использовать бесплатную службу обнаружения + https: // discovery.etcd.io +. Новый URL-адрес обнаружения, перейдя по ссылке https://discovery.etcd.io/new?size=3 в веб-браузере или выполнив следующую команду + curl +:

curl -w "\n" "https://discovery.etcd.io/new?size=3"

Любой метод возвращает уникальный и свежий URL-адрес обнаружения, который выглядит примерно так (выделенная часть будет уникальным токеном):

https://discovery.etcd.io/

Вы будете использовать полученный URL-адрес обнаружения для создания нового кластера платформы Deis. Тот же URL-адрес обнаружения должен быть указан в разделе + etcd + cloud-config каждого сервера CoreOS, который вы хотите добавить в конкретный кластер платформы Deis.

Теперь, когда у нас есть URL-адрес обнаружения, давайте рассмотрим его добавление в + cloud-config +, который мы будем использовать для создания каждой машины нашего кластера Deis.

Данные пользователя Deis

Чтобы создать кластер машин с ОС CoreOS, который будет использоваться в нашем кластере Deis, мы будем использовать специальный файл + cloud-config +, предоставляемый сопровождающими Deis. Этот файл доступен в репозитории Deis GitHub:

Откройте предоставленные данные пользователя в текстовом редакторе и найдите строку, в которой определен URL-адрес _discovery. Это будет выглядеть так:

       --discovery

Раскомментируйте его и замените выделенный + # DISCOVERY_URL + на уникальный URL-адрес обнаружения, созданный на предыдущем шаге.

Этот учебник основан на Deis 1.9.0, но версия, указанная в примере пользовательских данных, может быть более актуальной. Найдите следующую строку (выделенные цифры представляют версию):

ExecStart=/usr/bin/sh -c 'curl -sSL --retry 5 --retry-delay 2 http://deis.io/deisctl/install.sh | sh -s '

Обратите внимание на номер версии. Обязательно используйте версию в пользовательских данных при установке + deisctl + и + deis + в следующих шагах.

Вы можете сохранить этот файл пользовательских данных где-нибудь, если хотите.

Создать CoreOS Droplets

Теперь, когда у нас есть user data, которые мы будем использовать, давайте теперь создадим машины с CoreOS. Если вы не знаете, как предоставить файл + cloud-config + через user data во время создания капли, обратитесь к https://www.digitalocean.com/community/tutorials/how-to-set-up-a. -coreos-cluster-on-digitalocean # раздел «Как предоставить Cloud-Config-on-Digitalocean» [Как обеспечить Cloud-Config] нашего учебника по кластеризации CoreOS.

Создайте как минимум три капли * в одном регионе * со следующими характеристиками:

  • Не менее * 4 ГБ памяти * и * 40 ГБ дискового пространства *

  • * Частная сеть * включена, если доступна. Если приватная сеть недоступна в выбранном вами регионе, отредактируйте пользовательские данные и замените каждое вхождение + $ private_ipv4 + на + $ public_ipv4 +

  • * Включите данные пользователя * и введите данные пользователя с предыдущего шага

  • Выберите * Стабильный канал CoreOS * в качестве дистрибутива Linux

  • Выберите свой ключ SSH из списка

Если вы предпочитаете использовать вспомогательный инструмент + docl + для предоставления ваших капель, следуйте инструкциям here.

После того, как вы создали хотя бы три из этих машин, у вас должен быть кластер CoreOS, готовый для установки на платформу Deis. Давайте перейдем к настройке DNS.

Настроить DNS

Для правильного функционирования Deis требуется DNS-запись с подстановочными знаками. Если домен верхнего уровня (TLD), который вы используете, это + example.com +, ваши приложения будут существовать на уровне + *. Example.com +. Например, приложение под названием «app» будет доступно через + app.example.com +.

Один из способов настроить это в DigitalOcean - настроить циклический DNS через панель управления DNS. Для этого добавьте в свой домен следующие записи:

  • Запись CNAME с подстановочным знаком в вашем домене верхнего уровня, т.е. запись CNAME с + * + в качестве имени и + @ + в качестве канонического имени хоста

  • Для каждой созданной машины CoreOS A-запись, указывающая на TLD, т.е. A-запись с именем + @ +, с открытым IP-адресом дроплета

Файл зоны теперь будет содержать следующие записи: (ваши IP-адреса будут другими)

DNS Records 1 of 2*   CNAME   @
@   IN A
@   IN A
@   IN A

В этом примере маршрутизатор / контроллер Deis будет доступен через + deis.example.com +.

Для удобства вы также можете настроить DNS-записи для каждого узла:

DNS Records 2 of 2deis-1  IN A
deis-2  IN A
deis-3  IN A

Если вам нужна помощь в использовании панели управления DNS, ознакомьтесь с this учебник.

Использование xip.io

Если вы не хотите настраивать собственный домен, вы можете использовать + xip.io + для предоставления своего подстановочного DNS. По сути, это позволит вам использовать IP-адрес вашего Droplet, добавленный «.xip.io», в качестве подстановочного домена, который преобразуется в IP-адрес.

После того как вы установите платформу Deis в своем кластере, определите, на каком компьютере с ОС CoreOS работает модуль + deis-router @ 1.service + с + deisctl list + -we установит + deisctl + в следующем разделе. Затем определите публичный IP-адрес этой машины. Если это + 104.131.47.125 +, вы можете использовать следующий домен для доступа к маршрутизатору Deis:

xip.io exampledeis..xip.io

Применить настройки группы безопасности

У DigitalOcean Droplets по умолчанию нет брандмауэров, поэтому мы должны добавить некоторые правила `+ iptables + ', чтобы гарантировать, что наши компоненты не доступны для посторонних. В репозитории Deis есть скрипт, который можно найти по адресу here, который может сделать именно это.

curl -O https://raw.githubusercontent.com/deis/deis/master/contrib/util/custom-firewall.sh

Изучив содержимое скрипта, запустите его на каждом из ваших серверов. Например, используя записи DNS, которые мы создали ранее, мы выполняем эти команды:

ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh

Обязательно запустите скрипт на всех ваших серверах.

Установите Deis Tools

Теперь, когда у нас настроен кластер CoreOS, мы установим утилиту и клиент Deis Control. Вам следует установить эти инструменты на компьютер, с которого вы хотите управлять кластером Deis. Мы продемонстрируем установку их на отдельную Ubuntu 14.04 Droplet, но вы можете установить их где угодно.

Установите Deis Control Utility

Утилита Deis Control позволяет вам взаимодействовать с машинами Deis и устанавливать платформу Deis в кластере.

Перейдите в каталог, в который вы хотите установить двоичный файл + deisctl +. Затем установите утилиту Deis Control, загрузив и запустив скрипт установки с помощью следующей команды (замените версию на номер, найденный в пользовательских данных):

/bin/bash -c 'curl -sSL http://deis.io/deisctl/install.sh | sh -s '

Это устанавливает + deisctl + в текущий каталог и обновляет файлы модулей Deis.

Давайте свяжем его с + / usr / local / bin, чтобы он был в вашем` + PATH`:

sudo ln -fs $(pwd)/deisctl /usr/local/bin/deisctl

Теперь вы можете использовать команду + deisctl +.

Установите Deis Client

Клиент Deis, также известный как интерфейс командной строки Deis, позволяет вам взаимодействовать с контроллером Deis.

Перейдите в каталог, в который вы хотите установить двоичный файл + deis +. Установите клиент Deis, загрузив и запустив скрипт установки с помощью следующей команды (замените версию номером, найденным в пользовательских данных):

/bin/bash -c 'curl -sSL http://deis.io/deis-cli/install.sh | sh -s '

Это устанавливает + deis +, который является клиентом для текущего каталога. Давайте свяжем его с + / usr / local / bin, чтобы он был в вашем` + PATH`:

sudo ln -fs $(pwd)/deis /usr/local/bin/deis

Клиент Deis установлен. Теперь вы можете использовать команду + deis +.

Provision Deis Platform

С компьютера, на котором вы установили инструменты Deis, мы обеспечим платформу Deis.

Убедитесь, что ваш агент SSH работает (и выберите закрытый ключ, который соответствует ключам SSH, добавленным в ваши капли CoreOS):

eval `ssh-agent -s`
ssh-add ~/.ssh/

Затем мы должны экспортировать + DEISCTL_TUNNEL +, чтобы указать на одну из наших машин Deis по имени или общедоступному IP-адресу. Если вы настроили «удобные» DNS-записи, вы можете использовать одну из них для туннеля. Например:

export DEISCTL_TUNNEL=

Именно здесь + deisctl + попытается связаться с кластером. Вы можете проверить, что он работает правильно, запустив + diesel list. Если вы видите одну строку вывода, утилита управления связывается с указанной машиной CoreOS.

Прежде чем подготовить платформу, нам нужно добавить SSH-ключ к Deis, чтобы он мог подключаться к удаленным хостам во время + deis run +:

deisctl config platform set sshPrivateKey=~/.ssh/

Нам также нужно сообщить контроллеру, под каким доменным именем мы развертываем приложения:

deisctl config platform set domain=

Как только предыдущие команды конфигурации были выполнены, используйте эту команду для предоставления платформы Deis:

deisctl install platform

Вы увидите вывод, подобный следующему, который указывает, что модули, необходимые для запуска Deis, были загружены в кластер CoreOS:

Install Output:● ▴ ■
■ ● ▴ Installing Deis...
▴ ■ ●
Storage subsystem...
deis-store-metadata.service: loaded
...
Done.

Please run `deisctl start platform` to boot up Deis.

Запустите эту команду, чтобы запустить платформу Deis:

deisctl start platform

Когда вы видите «Deis начался», ваша платформа Deis работает в кластере!

Вы можете убедиться, что все устройства Deis являются loaded и active, выполнив следующую команду:

deisctl list

Все подразделения должны быть активны.

Установите Deis-store-admin (Необязательно)

Вы можете установить компонент + deis-store-admin + перед тем, как продолжить. Это часто полезно при диагностике проблем хранения.

Чтобы установить компонент, выполните следующие команды:

deisctl install store-admin
deisctl start store-admin

Теперь, когда вы завершили подготовку кластера, зарегистрируйте пользователя-администратора Deis, чтобы начать использовать платформу!

Зарегистрировать пользователя Deis

Теперь, когда платформа Deis запущена, мы должны зарегистрировать пользователя с помощью команды + deis +. Команда + deis + связывается с контроллером Deis через модуль router, который доступен в нашем примере по адресу + deis.example.com +:

deis register http://deis.

Вам будет предложено ввести * имя пользователя *, * пароль * и * адрес электронной почты *. После предоставления этих предметов вы автоматически войдете в платформу Deis.

Затем добавьте правильный ключ SSH в + deis +. Введите следующую команду:

deis keys:add

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

Войти в Deis

Если вам нужно войти позже, используйте следующую команду:

deis login http://deis.

Вам будет предложено ввести логин, который вы создали ранее.

Развернуть пример приложения (необязательно)

Deis поддерживает три различных способа создания приложений:

  1. Heroku Buildpacks

  2. Dockerfiles

  3. Docker Images

Мы покажем, как использовать рабочий процесс Heroku Buildpack для развертывания приложения с помощью example-ruby-sinatra, предоставленного Deis.

Перейдите в каталог, в который вы хотите загрузить пример приложения. Когда вы окажетесь в нужном месте, запустите эту команду, чтобы клонировать репозиторий git:

git clone https://github.com/deis/example-ruby-sinatra.git
cd example-ruby-sinatra

Команда + deis create + может использоваться для создания приложения на контроллере Deis. Запустите это сейчас:

deis create

Это создает приложение и присваивает ему имя с помощью алгоритма автоматического именования Deis:

deis create output:Creating application... done, created
Git remote deis added

В этом случае имя приложения - + dapper-yachting +.

Теперь, чтобы развернуть приложение, используйте + git push deis master +. Сделай это сейчас:

git push deis master

После запуска команды для развертывания вы увидите много строк вывода. Когда он завершится, в выводе будет сказано, что приложение было развернуто, и вам сообщат его автоматически сгенерированное имя и где к нему можно получить доступ:

git push deis master output:...
-----> Launching...
      done, :v2 deployed to Deis



      To learn more, use `deis help` or visit http://deis.io

To ssh://[email protected]:2222/dapper-yachting.git
* [new branch]      master -> master

В этом примере URL-адрес + http: // dapper-yachting.dev.example.com +, который является именем приложения в сочетании с именем кластера.

Вы можете проверить, работает ли он, перейдя по URL-адресу приложения в веб-браузере или с помощью следующей команды curl (подставьте в свой URL-адрес):

curl http://

Вы должны увидеть вывод, похожий на следующий:

App output:Powered by Deis! Running on container ID a0d35733aad8

Пример приложения ищет идентификатор контейнера, в котором оно выполняется, и выводит его. Congrats! Ваша платформа Deis работает!

Заключение

Теперь, когда у вас есть рабочая установка Deis, попробуйте развернуть приложения Deis, используя два других рабочих процесса. Рабочий процесс dockerfile похож на поток Heroku Buildpack в том, что он также использует + git push + для развертывания, в то время как рабочий процесс docker image использует + deis pull + для развертывания. Кроме того, Deis предоставляет гораздо больше функциональных возможностей, чем было описано здесь - ознакомьтесь с their документацией, чтобы узнать больше!

Related