Как управлять Дженкинсом с Rancher в Ubuntu 14.04

Статья от Rancher

Вступление

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

В этой статье мы создадим систему распределенной сборки с использованием Docker для создания и запуска наших образов Jenkins и Rancher для организации нашего кластера Docker. Дженкинс является одним из самых выдающихся CI-решений с открытым исходным кодом. Docker автоматизирует развертывание приложений в программных контейнерах, а Rancher предоставляет полную платформу для управления Docker в производстве.

Эта статья посвящена исключительно облачному развертыванию Jenkins. Однако альтернативой является использование собственного мастера Jenkins с облачными серверами для обеспечения возможности переполнения, когда требуется больше ресурсов. Именно здесь Docker и Rancher действительно хороши: Docker предоставляет нам практически идентичные среды развертывания на любом узле, а Rancher позволяет объединять узлы от различных облачных провайдеров или внутренних серверов в один кластер, работающий через собственную VPN. К концу этого урока вы сможете легко настроить развертывание Dockerized Jenkins с произвольным числом ведомых устройств.

Предпосылки

В этом руководстве будут использоваться три капли: один для сервера Rancher, один для вычислительного узла Rancher, на котором работает мастер Jenkins, и один для второго вычислительного узла Rancher, на котором работает подчиненный Jenkins.

Изображение: HTTPS: //assets.digitalocean.com/articles/Jenkins_Rancher/1.png [изображение]

Мы будем ссылаться на IP-адреса этих капель с помощью `, ` и ++ соответственно; где бы вы ни увидели эти переменные в этом руководстве, замените их соответствующим IP-адресом.

Первоначально мы создадим одну каплю для сервера Rancher; Создание двух вычислительных узлов будет рассмотрено позже. Итак, чтобы начать этот урок, вам понадобится:

  • Одна капля Ubuntu 14.04 с изображением Docker 1.5.0. Поскольку эта Droplet будет использоваться исключительно как сервер Rancher, вы можете выбрать маленький размер Droplet.

Опцию образа Docker 1.5.0 можно найти на странице создания капли на вкладке * Приложения * в разделе * Выбор изображения *. Эта капля также потребует пользовательских данных. Чтобы добавить это, нажмите * Включить данные пользователя * в разделе * Доступные настройки * и введите сценарий ниже в появившемся текстовом поле. Этот скрипт сообщает Droplet запускать сервер Rancher при запуске.

#!/bin/bash
docker run -d --name rancher-server -p 8080:8080 rancher/server

Шаг 1 - Настройка аутентификации

Как только ваш сервер Rancher будет создан, через мгновение вы сможете получить доступ к его пользовательскому интерфейсу через браузер, указывающий на + http: //: 8080 / +. Поскольку сервер Rancher открыт для Интернета, рекомендуется установить аутентификацию. На этом шаге мы настроим аутентификацию на основе Github OAuth, которую в настоящее время поддерживает Rancher.

Вы увидите предупреждение в правом верхнем углу, которое гласит: * Контроль доступа не настроен *, а затем ссылка на * Настройки *. Нажмите * Настройки * и следуйте приведенным там инструкциям, чтобы зарегистрировать новое приложение в Github и скопировать идентификатор клиента и секретный код в соответствующие текстовые поля.

Когда вы закончите, нажмите * Authenticate with Github *, затем * Authorize application * в появившемся окне. Как только вы это сделаете, страница перезагрузится, и инструкции по настройке OAuth будут заменены разделом * Configure Authorization *. Добавьте любых дополнительных пользователей и организаций, которым должен быть предоставлен доступ к Rancher. Если вы сделаете какие-либо изменения, появится кнопка с надписью * Сохранить конфигурацию авторизации *. Нажмите, когда закончите.

После сохранения конфигурации авторизации предупреждение в правом верхнем углу должно быть заменено изображением вашего профиля Github и меню выбора проекта (в котором изначально указано «По умолчанию» *). Нажмите * Default *, чтобы открыть меню выбора проекта, затем нажмите * Управление проектами * и, наконец, * Создайте проект *. Добавьте проект с именем Jenkins, затем снова используйте меню выбора проекта, чтобы выбрать проект Jenkins.

Изображение: HTTPS: //assets.digitalocean.com/articles/Jenkins_Rancher/2.png [изображение]

Это поможет сохранить беспрепятственный интерфейс Rancher, изолируя различные проекты, которые вы запускаете на Rancher. Вы можете создавать дополнительные проекты (для которых требуются дополнительные вычислительные узлы), если вы хотите запускать другие службы помимо Jenkins в том же кластере Rancher. Также обратите внимание, что проект по умолчанию относится к зарегистрированному пользователю, поэтому, если вы собираетесь предоставить нескольким людям доступ к агентам Rancher, вам не следует использовать проект по умолчанию.

Шаг 2 - Регистрация вычислительных узлов Rancher

Теперь, когда сервер и аутентификация настроены, мы можем зарегистрировать несколько вычислительных узлов для запуска наших развертываний Jenkins.

  • Примечание *: До аутентификации вычислительные узлы Rancher могут быть зарегистрированы без предоставления токена регистрации. Однако, поскольку мы включили аутентификацию, все агенты должны предоставить маркер регистрации для добавления в кластер.

В пользовательском интерфейсе Rancher нажмите * Hosts * (в меню слева), затем * Зарегистрируйте новый хост *. Скопируйте команду Docker run из всплывающего окна, затем закройте окно. Вернитесь к панели управления DigitalOcean и создайте две дополнительные капли с изображением Docker 1.5.0, например сервер Rancher. Возможно, вы захотите выбрать больший размер экземпляра для этих двух капель, если ваши сборки требуют больших ресурсов.

Для пользовательских данных в обеих этих каплях добавьте + #! / Bin / bash +, а затем команду запуска Docker, которую вы скопировали ранее. Это должно выглядеть примерно так.

#!/bin/bash
sudo docker run -d --privileged
 -v /var/run/docker.sock:/var/run/docker.sock rancher/agent
 http://:8080/v1/scripts/

Длинная строка цифр и букв в конце будет отличаться для вашей команды. Пожалуйста, убедитесь, что вы выбрали свой проект, прежде чем нажать * Зарегистрировать новый хост *, так как токен уникален для каждого проекта.

Через несколько минут вы сможете увидеть оба своих вычислительных узла Rancher в пользовательском интерфейсе Rancher. На изображении ниже вы увидите названия ваших дроплетов с надписью * RancherAgent *.

Изображение: HTTPS: //assets.digitalocean.com/articles/Jenkins_Rancher/3.png [изображение]

Шаг 3 - Запуск главного узла Jenkins

Теперь мы готовы запустить наш главный узел Jenkins, используя официальный образ Jenkins.

Чтобы запустить контейнер, нажмите * Добавить контейнер * под вычислительным узлом, который вы хотите использовать, и добавьте следующие параметры:

  • Используйте * Master * в качестве имени контейнера в текстовом поле рядом с * Name *.

  • Используйте * jenkins * в качестве исходного изображения в текстовом поле рядом с * Select Image *.

Затем нажмите * + * рядом с * Карта портов *. Заполните 8080 в обоих полях и оставьте TCP в качестве протокола. Это даст нам доступ к веб-интерфейсу Jenkins. Снова нажмите * + *, добавьте порт 50000 в оба поля и оставьте TCP в качестве протокола. Это позволяет рабам подключаться к мастеру.

Затем нажмите * Дополнительные параметры *, затем вкладку * Тома *. Нажмите * + * рядом с * Тома * и укажите + / var / jenkins_home + в появившемся текстовом поле. Наличие домашнего каталога Jenkins в томе позволяет сохранить конфигурацию, если вы перезапустите свой контейнер, а также позволяет создавать резервные копии вашего контейнера с использованием томов из другого контейнера.

Наконец, нажмите * Создать *, чтобы запустить контейнер Jenkins.

[[step-4-­--launching-the-jenkins-slave-node]] === Шаг 4 - Запуск подчиненного узла Дженкинс

На этом этапе мы запустим раба Дженкинса.

Укажите в браузере + http: //: 8080 +, чтобы загрузить пользовательский интерфейс Jenkins.

Изображение: HTTPS: //assets.digitalocean.com/articles/Jenkins_Rancher/4.png [изображение]

В пользовательском интерфейсе Jenkins создайте конфигурацию узла, выбрав «Управление Jenkins» слева, затем «Управление узлами» в следующем меню и, наконец, «Новый узел» слева на последней странице. В следующем меню введите имя своего ведомого в текстовом поле рядом с * Node name * (и запомните его - оно понадобится нам через мгновение), выберите * Dumb Slave * в качестве типа и нажмите * OK *.

Вы будете перенаправлены на страницу с подробной информацией об этом узле. Для * Удаленный корневой каталог * введите + / var / jenkins. Для * Метод запуска * выберите * Запуск подчиненных агентов через Java Web Start *. Возможно, вы также захотите обновить настройку * # для исполнителей * до значения по умолчанию, превышающего 1, чтобы увеличить число параллельных сборок, разрешенных на ведомом устройстве. Остальные настройки можно оставить на их значения по умолчанию. Нажмите * сохранить *, чтобы зафиксировать конфигурацию подчиненного устройства.

Теперь мы готовы запустить наш подчиненный контейнер. В пользовательском интерфейсе Rancher нажмите * Добавить контейнер * на оставшемся вычислительном узле и добавьте следующие параметры:

  • Используйте * Slave 1 * в качестве имени контейнера в текстовом поле рядом с * Name *.

  • Используйте * usman / jenkins-slave * в качестве исходного изображения в текстовом поле рядом с * Select Image *.

Затем нажмите * Дополнительные параметры *. Вы начнете с вкладки * Command *. Нажмите * + * рядом с * Environment Vars * и добавьте одну запись с * Name * как + MASTER_HOST + и * Value * как ++. Снова нажмите * + * и добавьте еще одну запись с * Name * в качестве + NODE + и * Value * в качестве имени вашего ведомого Jenkins, как указано в меню * New Node * через интерфейс Jenkins ранее на этом шаге.

Затем перейдите на вкладку * Тома *. Нажмите * + * рядом с * Тома * и укажите + / var / jenkins + в появившемся текстовом поле.

Наконец, нажмите * Создать *.

Контейнер + jenkins-slave + загрузит файл jar из мастера Jenkins и запустит подчиненный узел Jenkins. Когда появится подчиненное устройство, вы сможете увидеть его состояние после обновления страницы * Manage Nodes *, на которой мы остановились в пользовательском интерфейсе Jenkins. Вы должны увидеть свой подчиненный узел со значением времени ответа и без красного X на значке компьютера, как показано ниже.

Изображение: HTTPS: //assets.digitalocean.com/articles/Jenkins_Rancher/5.png [изображение]

Заключение

В этой статье мы настроили развертывание Jenkins CI с использованием Docker и Rancher. Наш кластер Jenkins теперь готов к дальнейшей настройке и созданию рабочих мест для сборки.

Docker предоставляет нам согласованную среду для запуска Jenkins, а Rancher обеспечивает сетевое взаимодействие между хостом и позволяет нам управлять кластером из веб-интерфейса без необходимости ручного доступа к дроплетам или серверам предоставления. Используя этот набор инструментов, мы можем быстро увеличивать и уменьшать ресурсы нашей системы сборки. Это может быть важно для поддержания ненавязчивых систем сборки в критические моменты, например при запуске.

Related