Введение
Jenkins – это CI распространяемый с открытым исходным кодом написанный на Java, что позволяет следить за исправлениями разработчиков, а так же быть уверенным в безопасности. Этот сервер служит для непрерывной интеграции. В этой публикации мы установим этот CI используя кластеры kubernetes.
Kubernetes (K8S) – ПО для управления и ограничения контейнерных приложений – ускорение развертывания путем использования автоматизации, в условиях кластера так же можно координировать и масштабировать систему. Благодаря контейнеризации, можно с легкостью ограничить приложения друг от друга, а так же изменить выделенные ресурсы сервера с одного приложения на другое если такое потребуется.
В Serverspace есть возможность создать готовый кластер под Kubernetes, ведь это удобно!
Требования
- Не менее 2 CPU – реализации K8S сервера
Или аренда K8S сервера - Клиент сервер, для управлением и настройкой кластеров K8S
Предустановка
Прежде, чем устанавливать Jenkins, необходимо развернуть Kubernetes. Чтобы сделать это в инфраструктуре Serverspace, просто авторизуйтесь в личном кабинете, затем перейдите в раздел Kubernetes и начните установку:
Настройте выделенный кластер по характеристикам которые вам требуются, не забудьте выдать ему имя.
P.s Для создания кластера потребуется около 15 минут, наберитесь терпения.
После создания кластера, у вас будет возможность скачать файл конфигурации сервера с кубернетесом. Этот конфиг потребуется позже при установке Jenkins, для связи клиент-сервера и сервера с кластерами kubernetes.
Скачайте файл конфигурации себе на компьютер, загрузите его на сервер выбрав одно из предложенных решений:
- Вы можете создать новый файл и вписать в него конфиг кластера kubernetes.
nano config-kubernetes
Вставьте в созданный файл конфиг kubernetes, и сохраните его.
- Удаленно загрузить конфиг благодаря протоколу SFTP.
Начало работы
Установите следующее по для нашего CI.
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
Укажите расположение файла конфигурации сервера k8s.
export KUBECONFIG=<Ваш путь до файла>
P.s. Этот файл мы скопировали/создали после запуска кубернетес сервера.
Проверьте использование конфига.
kubectl cluster-info
Создайте пространство для CI.
kubectl create namespace <your_namespace>
Для установки и запуска CI на сервере k8s, требуется создать файл образа, с настройками нашего сервера.
nano our_project_jen.yaml
Введите в созданный файл конфигурации данные параметры.
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: jenkins
image: jenkins/jenkins:lts
ports:
- name: http-port
containerPort: 8080
- name: jnlp-port
containerPort: 50000
volumeMounts:
- name: jenkins-vol
mountPath: /var/jenkins_vol
volumes:
- name: jenkins-vol
emptyDir: {}
Благодаря этой конфигурации, будет развернут CI последней версией вышедшая в релиз. Так же будут созданы и открыты порты что указаны в конфигурации, вы можете их сменить на нужные вам.
Теперь укажите созданному пространству, какой файл конфигурации использовать.
kubectl create -f jenkins.yaml --namespace <your_namespace>
Дождитесь установки образа и его запуска, воспользуйтесь командой ниже для проверки работы модуля.
kubectl get pods -n jenkins
После запуска образа, я создам еще две службы что бы использовать web версию CI.
Создаю конфиг для службы CI проекта.
nano jenkins-service.yaml
Добавьте в созданный файл эти настройки.
Укажите кластеру использовать этот файл конфигурации с тем же созданным конфигом.
kubectl create -f jenkins-service.yaml --namespace <your_namespace>
Проверка статуса.
kubectl get services --namespace jenkins
Для просмотра ip адреса воспользуйтесь этой командой, либо можете посмотреть его в панели управления кластером K8S.
kubectl get nodes -o wide
Перед переходом к веб версии, проверьте пароль суперпользователя CI.
kubectl logs jenkins-CHANGE -n jenkins
Где “CHANGE ” – наименование вашего контейнера.
Пароль находится в логах нашего запущенного образа.
Переходите на веб версию Jenkins что бы продолжить его установку, введите в диалоговом окне пароль что мы узнали ранее.
Для полноценной установки Jenkins, следуйте инструкции, которая предоставляется в web версии.
Вывод
В этой публикации я разобрал как развернуть Jenkins CI используя ресурсы выделенного kubernetes сервера от Serverspace.