Развертывание Deis с помощью Rigger

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

Данный мануал поможет запустить процесс оркестровки Deis с помощью инструмента Rigger.

Требования

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

  • Токен доступа к API хостинг-провайдера.
  • Пара ключей SSH.
  • Утилиты zip, make (для работы сценария оркестровки Rigger) и git (для загрузки Rigger и образца приложения). В Ubuntu их можно установить так:

sudo apt-get update
sudo apt-get install zip make git

  • Для работы в Mac OS X нужна лицензия Xcode:

sudo xcodebuild -license

Все команды мануала можно запускать на локальной рабочей станции Mac или Linux. Их также можно запустить на удаленном сервере, но это необязательно.

Примечание: Данный мануал предназначен для Deis 1.12.0.

1: Установка Rigger

Чтобы установить Rigger, загрузите пакет с помощью git:

git clone https://github.com/deis/rigger.git

Откройте полученный каталог:

cd rigger

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

./rigger

Запустив ее, вы увидите такой вывод:

Downloading rerun from GitHub...

В конце вывода будут строки:

Available commands in module, "rigger":
checkout: "checkout the Deis repo with version: $VERSION into directory: $DEIS_ROOT"
configure: "initialize a rigger varsfile to use with future commands"
[ --advanced]: "configure all the nitty gritty details of the infrastructure and Deis deployment"
[ --provider <>]: "which cloud provider to use to provision a Deis cluster"
[ --version <>]: "choose what version of Deis to deploy"
create-registry: "Create a local dev registry"
deploy: "Install and Deploy Deis"
destroy: "destroy all infrastructure created by the provision step"
provision: "provision new infrastructure and deploy Deis to it"
[ --cleanup]: "destroy cluster after action"
setup-clients: "download and stage deisctl and deis clients for your own use"
shellinit: "show the current sourceable environment variables (useful for eval-ing)"
[ --file <>]: "use a specific file"
shell-reset: "an eval-able output that unsets variables that have been injected by rigger"
[ --file <>]: "use a specific file"
test: "run a test suite on the provisioned Deis cluster"
[ --type <smoke>]: "provide a type of test to run"
upgrade: "Tests upgrade path for Deis"
[ --to <master>]: "Define version of Deis to upgrade to"
[ --cleanup]: "destroy cluster after action"
--upgrade-style <graceful>: "choose the style of upgrade you'd like to perform"

2: Настройка развертывания

Чтобы настроить Deis для работы с вашим провайдером, вызовите команду:

./rigger configure --provider "your-provider" --version "1.12.0"

Rigger задаст вам пару вопросов (ответы выделены красным):

-> What your-provider token should I use? DO_TOKEN (no default)
[enter or paste your token here]
You chose: ******
-> Which private SSH key should be used? SSH_PRIVATE_KEY_FILE [ /Users/sgoings/.ssh/id_dsa ]
1) /Users/sgoings/.ssh/id_dsa
2) ...
#? [enter a number]
You chose: 1) /Users/sgoings/.ssh/id_dsa
... output snipped ...
Enter passphrase for /Users/sgoings/.ssh/id_dsa: [enter your ssh passphrase]
Rigger has been configured on this system using ${HOME}/.rigger/<id>/vars
To use the configuration outside of rigger, you can run:
source "${HOME}/.rigger/<id>/vars"

3: Оркестровка Deis

Теперь можно запустить rigger, чтобы выполнить оркестровку инфраструктуры и развернуть Deis.

./rigger provision

Важно! На Mac OS X Rigger может вернуть такую ошибку:

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

В таком случае вам нужно принять лицензию Xcode с помощью команды sudo xcodebuild -license, как указано в требованиях.

Процесс оркестровки Deis с помощью Rigger может занять около 15 минут. Он состоит из таких этапов:

  • Terraform автоматически загружается и устанавливается в ${HOME}/.rigger.
  • Клиенты Deis (deis и deisctl) загружаются в каталог ${HOME}/.rigger/<id>/bins.
  • Terraform выполняет оркестровку 3 виртуальных серверов CoreOS.
  • Определяет DEISCTL_TUNNEL.
  • xip.io устанавливает простую точку входа DNS в кластер.
  • Выполняется команда deisctl install platform
  • Выполняется команда deisctl start platform

Важно! Если вы видите такую ошибку при оркестровке инфраструктуры:

3 error(s) occurred:
* your-server.deis.1: Error creating server: Error creating server: API Error: 403 Forbidden
* your-server.deis.0: Error creating server: Error creating server: API Error: 403 Forbidden
* your-server.deis.2: Error creating server: Error creating server: API Error: 403 Forbidden

Убедитесь, что ваш токен является read-write, а затем перезапустите команду ./rigger provision.

4: Развертывание приложения

Создав кластер Deis с помощью Rigger, вы можете развернуть в нем приложение.

Перейдите в этот каталог:

cd ../

Загрузите тестовое приложение проекта Deis:

git clone https://github.com/deis/example-nodejs-express.git

Перейдите в новый каталог:

cd example-nodejs-express

Загрузите в эту оболочку переменные среды rigger:

source "${HOME}/.rigger/<id>/vars"

Зарегистрируйте аккаунт администратора в кластере:

deis auth:register http://deis.${DEIS_TEST_DOMAIN}
username: [ enter a username ]
password: [ enter a password ]
password (confirm): [ enter the same password ]
email: [ enter an email for this user ]
Registered <username>
Logged in as <username>

Добавьте открытый ключ в кластер Deis:

deis keys:add
Found the following SSH public keys:
1) deiskey.pub deiskey
2) id_dsa.pub sgoings
0) Enter path to pubfile (or use keys:add <key_path>)
Which would you like to use with Deis? [ enter number ]

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

Введите команду:

deis apps:create

Она вернет такой результат:

Creating Application... done, created hearty-kingfish
Git remote deis added
remote available at ssh://git@deis.${DEIS_TEST_DOMAIN}:2222/hearty-kingfish.git

Затем выгрузите результат:

git push deis master

Это займет некоторое время. Вы увидите такой вывод:

-----> Launching...
done, hearty-kingfish:v2 deployed to Deis
http://hearty-kingfish.${DEIS_TEST_DOMAIN}
To learn more, use `deis help` or visit http://deis.io

Скопируйте и введите этот URL в браузер. Это простое приложение выведет на странице сообщение:

Powered by Deis

5: Отключение Deis

Чтобы выключить Deis, нужно вернуться в каталог rigger:

cd ../rigger

И ввести команду:

./rigger destroy

Как видите, оркестровка кластера Deis – очень быстрый и простой процесс благодаря Rigger.

Tags: , , ,