Статьи

Горизонтальное масштабирование с помощью CloudBees Jenkins Operation Center

Эта статья была спонсирована CloudBees . Спасибо за поддержку спонсоров, которые делают возможным SitePoint!

Представьте себе: вы начинаете использовать Jenkins, вероятно, с одной машины. Когда количество проектов и размер самих проектов начинают расти, вы начинаете добавлять подчиненных. Постепенно ваш кластер серверов Jenkins растет, и вы постепенно начинаете терять свою хватку. Что если ваш мастер Дженкинс потерпит крах? Если вы узнаете это чувство или хотите избежать этого, вам определенно следует читать дальше.

В этой статье мы рассмотрим небольшую вершину в операционном центре CloudBees Jenkins . CloudBees Jenkins Operation Center, созданный CloudBees , предлагает вам множество дополнительных функций, чтобы поднять ваш кластер Jenkins на новый уровень. Ключевые функции для CloudBees Jenkins Operation Center:

  • Консолидированный опыт навигации по всем клиентским мастерам.
  • Разделяемые ресурсы сборки сборки, которые могут использоваться любыми клиентскими мастерами.
  • Контроль схем аутентификации и авторизации, используемых мастерами клиентов. Это включает такие функции, как: единый вход и объединенные схемы разрешений.
  • Управление центрами обновлений, используемыми мастерами клиентов.
  • Консолидированное управление лицензиями Jenkins Enterprise.
  • Управление и применение определенных ключевых параметров безопасности на клиентских устройствах.

В этой статье мы просто будем использовать небольшое количество доступных функций. Мы будем создавать клиентский мастер и общий раб. Для этого мы будем использовать три отдельных сервера. Первый из них будет работать в CloudBees Jenkins Operation Center, второй — в Jenkins Enterprise, а третий будет использоваться в качестве общего подчиненного. Мы будем объяснять все в следующих парах глав.

подготовка

Я буду использовать три виртуальные машины на моем локальном компьютере. Если вы хотите следовать, вы можете убедиться, что ваш собственный компьютер достаточно мощный. Если у вас где-то есть три запасных сервера, вы также можете попробовать их непосредственно на этих серверах.

Три сервера будут управляться через Vagrant. Я создал файл Vagrant для нескольких машин, который будет загружать все три сервера. Если вы еще не знакомы с Vagrant, вы можете прочитать эту статью .

Давайте начнем с нашего файла Vagrant. Вы можете найти содержание здесь

Примечание. Все три блока работают под управлением CentOS 7. Вы можете легко заменить их на блоки Ubuntu, если хотите, но учтите, что все приведенные ниже команды предназначены для CentOS.

Три сервера будут созданы, когда вы запустите vagrant up . У каждого из них свой IP:

  • 192.168.56.105: Операционный центр CloudBees Jenkins
  • 192.168.56.106: Jenkins Enterprise — Клиент Мастер (мастер)
  • 192.168.56.107: Общий раб (раб)

Установка CloudBees Jenkins Operation Center

Мы начнем с установки CloudBees Jenkins Operation Center на наш первый сервер. CloudBees Jenkins Operation Center — наш основной центр управления всеми экземплярами Jenkins. Мы будем использовать его для создания главного клиента и общего подчиненного. После входа на первый компьютер Vagrant, запустив vagrant ssh CloudBees Jenkins Operation Center в своем терминале, вы можете выполнить следующие команды для установки CloudBees Jenkins Operation Center.

 sudo rpm --import http://nectar-downloads.cloudbees.com/jenkins-operations-center/latest/rpm/jenkins-ci.org.key sudo wget -O /etc/yum.repos.d/jenkins-oc.repo http://nectar-downloads.cloudbees.com/jenkins-operations-center/latest/rpm/jenkins-oc.repo sudo yum update sudo yum install java jenkins-oc sudo chkconfig jenkins-oc on sudo service jenkins-oc start 

Вы получите сообщение о том, что операционный центр CloudBees Jenkins успешно установлен и запущен.

Прежде чем мы сможем начать использовать CloudBees Jenkins Operation Center, нам нужно открыть порт веб-службы, чтобы разрешить доступ, а также разрешить другим серверам доступ к этому серверу. Мы можем сделать это, изменив брандмауэр, выполнив следующие команды.

 sudo firewall-cmd --zone=public --permanent --add-port=8888/tcp --permanent sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.105/32" accept' sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.106/31" accept' sudo firewall-cmd --reload 

К настоящему времени вы сможете связаться с Центром операций CloudBees Jenkins по следующему URL-адресу: http://192.168.56.105:8888/ . После ввода вышеуказанного URL-адреса появится форма регистрации. Вы можете зарегистрироваться для ознакомительной лицензии, если вы еще не купили продукт у CloudBees . Просто заполните свои данные и нажмите Next .

Когда вы зарегистрируетесь, я рекомендую вам обновить все плагины. CloudBees Jenkins Operation Center требует некоторых конкретных версий плагинов, поэтому мы хотим убедиться, что они у нас есть. Как правило, не рекомендуется обновлять плагины, когда они не нужны, как указано в этой статье, 7 способов улучшить Jenkins .

Примечание. Проблемы с установкой CloudBees Jenkins Operation Center или с использованием другой настройки сервера? Ознакомьтесь с официальным руководством _ для устранения неполадок ._

Подготовка мастера клиента

На главном сервере клиента мы установим Jenkins Enterprise. Jenkins Enterprise — это коммерческий продукт, такой как CloudBees Jenkins Operation Center от CloudBees . Это улучшит ваш опыт работы с Jenkins, установив несколько плагинов.

Вы можете войти в главный сервер клиента, запустив vagrant ssh master в командной строке. Теперь вы можете запустить следующие команды для установки Jenkins.

sudo rpm –import http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.580/rpm/jenkins-ci.org.key

sudo wget -O /etc/yum.repos.d/jenkins.repo http://nectar-downloads.cloudbees.com/nectar/rpm/jenkins.repo

 sudo rpm --import http://nectar-downloads.cloudbees.com/jenkins-enterprise/1.580/rpm/jenkins-ci.org.key sudo wget -O /etc/yum.repos.d/jenkins.repo http://nectar-downloads.cloudbees.com/nectar/rpm/jenkins.repo sudo yum update sudo yum install java jenkins sudo chkconfig jenkins on sudo service jenkins start 

Так же, как мы делали это при установке CloudBees Jenkins Operation Center, нам нужно снова настроить наш брандмауэр.

 sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp --permanent sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.105/32" accept' sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.106/31" accept' sudo firewall-cmd --reload 

Выполнив эти действия на сервере, вы можете войти в экземпляр Jenkins, введя http://192.168.56.106:8080/ в своем любимом веб-браузере. Еще раз, вы получите возможность зарегистрироваться. Заполните свои данные для ознакомительной версии Jenkins Enterprise.

Когда закончите, убедитесь, что вы идете в Управление Jenkins -> Настроить систему и установите количество исполнителей равным 0 . Устанавливая его в 0 , мы обеспечиваем, чтобы впоследствии этот мастер-клиент использовал любого из доступных общих подчиненных вместо того, чтобы строить на самом сервере.

Добавление мастер-клиента в операционный центр CloudBees Jenkins

Установка Jenkins Enterprise — это один шаг. Чтобы создать из него мастер-клиент, мы должны настроить его в CloudBees Jenkins Operation Center. После повторного входа в CloudBees Jenkins Operation Center мы нажимаем на new item в меню и выбираем client master качестве нашего варианта в экземпляре CloudBees Jenkins Operation Center.

Настройка мастера клиента

После создания мастер-клиента вы можете определить несколько параметров, например, какой тип лицензии использовать и есть ли конкретный пользователь, который управляет этим мастером. Последний вариант может пригодиться, когда разные люди управляют определенными экземплярами Jenkins. Вы можете найти больше информации о доступных настройках в официальное руководство . Лицензия по умолчанию — License (no dedicated executors) .

Теперь мы можем подключить этот мастер-клиент к реальному серверу. Заполнив http://192.168.56.106:8080/ в Client Master URL и нажав Push Notification , мы можем подключить наш главный экземпляр к CloudBees Jenkins Operation Center.

Подключение главного клиента к операционному центру CloudBees Jenkins

После подтверждения этого подключения вы найдете подключенный мастер-клиент в обзоре в CloudBees Jenkins Operation Center.

Мастер клиента теперь находится в обзоре CloudBees Jenkins Operation Center

Добавление общего раба

Третий сервер — наш общий раб. Разделяемое ведомое устройство, как следует из названия, подчиненное, которое может совместно использоваться несколькими ведущими клиентами. Всякий раз, когда ведущему клиенту требуется подчиненное устройство, оно извлекает подчиненное устройство из пула в CloudBees Jenkins Operation Center. Какой бы ведомый ни был доступен и подключен к главному клиенту, он будет присоединен к главному клиенту.

Общему ведомому не обязательно нужен собственный сервер. Он может работать на тех же серверах, что и другие наши экземпляры (CloudBees Jenkins Operation Center и Client Master), или даже несколько ведомых устройств могут быть запущены на одном сервере. Тем не менее, лучшие практики требуют распределения нагрузки с использованием отдельного экземпляра, как мы делаем сейчас.

Вы можете войти на подчиненный сервер, запустив vagrant ssh slave в командной строке. Теперь вы можете запустить следующие команды для установки Java.

 sudo yum update sudo yum install java 

Теперь мы должны убедиться, что у нас есть доступный для записи каталог для нашего ведомого. Мы делаем это, выполняя следующие команды на ведомом устройстве.

 sudo mkdir /var/jenkins sudo chown vagrant:vagrant /var/jenkins 

Чтобы добавить общего подчиненного в CloudBees Jenkins Operation Center, щелкните новый пункт в меню и выберите в качестве своего параметра общий доступ к ведомому в CloudBees Jenkins Operation Center.

Измените следующие настройки:

  • Количество исполнителей: 1
  • Удаленный корень FS: / var / jenkins
  • Метод запуска: запуск подчиненных агентов на машинах Unix через SSH
    Использование общего раба
  • Host: 192.168.56.107

Мы собираемся установить SSH-соединение между серверами. В целях безопасности рекомендуется общаться через SSH с отдельным пользователем.

Сейчас мы будем использовать уже существующего бродячего пользователя. Если вы хотите создать своего собственного пользователя, ознакомьтесь с этой статьей. Здесь вы можете узнать, как настроить пару открытого личного ключа.

На нашей собственной машине мы сначала запускаем следующую команду в командной строке.

 cat ~/.vagrant.d/insecure_private_key 

Скопируйте вывод, который вы получите обратно. Теперь вернитесь в ваш браузер. На последнем шаге вы заполнили хост. Теперь нажмите кнопку «Добавить» для добавления учетных данных.

Выберите «Имя пользователя SSH с закрытым ключом» в раскрывающемся списке. Заполните ‘vagrant’ как имя пользователя и выберите ‘enter напрямую’ для закрытого ключа. В появившемся текстовом поле вы можете вставить скопированный ранее контент.

Настройка SSH-соединения между серверами

Нажмите на add когда закончите. Далее вы можете нажать на « save чтобы сохранить этого раба. Теперь раб должен заявить, что готов к сдаче в аренду.

Создание проекта

До сих пор мы только готовили наши серверы. Теперь мы можем реально запустить проект и увидеть использование общего ведомого. Войдите в нашу мастер-клиент и создайте новую работу по фристайлу, нажав на new item и выбрав freestyle project .

Мы добавили новый шаг сборки оболочки со следующим содержанием.

 sleep 10 date 

Создание проекта

Когда вы начнете строить этот проект, вы заметите две вещи. В мастере клиента вы заметите, что проект строится на совместно используемом ведомом устройстве. В CloudBees Jenkins Operation Center вы заметите, что ведомое устройство помечается как «используемое».

Общий раб теперь настроен

Конечно, этот проект нереалистичен, но вы можете представить, что ваш собственный проект сейчас строится. Следующий шаг, который вы, вероятно, захотите сделать, — это добавить больше общих подчиненных, чтобы у вашего главного клиента было больше подчиненных. Кроме того, вы хотите создать больше мастеров клиентов и назначить своих коллег для управления мастером клиентов. Таким образом, вы можете сохранить контроль с помощью CloudBees Jenkins Operation Center, имея несколько серверов Jenkins, работающих с вашими проектами.

Вывод

К сожалению, мы в конце статьи. Как вы можете себе представить, мы не совсем готовы к производству. Чтобы перейти к этому этапу, вы, вероятно, захотите защитить все свои экземпляры Jenkins с помощью единого входа и настроить несколько общих подчиненных или, возможно, общее облако . Также вы можете погрузиться в создание аналитики или настроить центры обновлений .

Как вы можете видеть, Jenkins Operations Center — отличный инструмент для управления вашими экземплярами Jenkins, и в этой статье только что была показана небольшая часть горизонтального масштабирования кластера Jenkins.

Вы уже пробовали использовать CloudBees Jenkins Operation Center? Ваше мнение?