Рубрики
Uncategorized

Разверните приложение для приложения, используя CI / CD-трубопровод на Kubernetes

Ранее в этом году я получил стипендию Бертельсмана. Я выбрал облачную дорожку, а последний проект Capstone должен был развернуть докеренное приложение с использованием Jenkins на EKS (Elastic Kubernetes Service) ….

Автор оригинала: Onyebuchi Valentine Ahiwe.

Ранее в этом году я получил стипендию Бертельсмана. Я выбрал облачную дорожку, а последний проект Capstone должен был развернуть докеренное приложение с использованием Jenkins на EKS (Elastic Kubernetes Service). Просто чтобы дать некоторое контекст и смысл в эксплуатацию и используемых инструментов, EKS AWS управлял службой Kubernetes. Это позволяет обеспечить кластер Kubernetes на облачной среде AWS. Jenkins — это инструмент CI/CD, который автоматизирует процессы с использованием JenkinsFile (файл конфигурации Jenkins). JenkinsFile заявляет, что этапы и процессы будут проведены на каждом этапе. Эта статья подробно описывает шаги, предпринятые для достижения этой задачи.

Предпосылки Вам понадобится VPS. Вы можете получить один на AWS или GCP. Я буду использовать AWS в этой статье. Вы можете обратиться к моему Статья о настройке VPS на AWS, а также настроить пространство подкачки для вашего VPS. При настройке групп безопасности серверов на AWS откройте следующие порты 22 и 8080. Это позволит вам подключиться к jenkins ui. Мы будем использовать изображение Ubuntu 18.04 для этого развертывания.

Шаг 1: Установите Jenkins и дополнительные пакеты Мы будем использовать репозиторий, который я настроил со всеми необходимыми сценариями, а также трубопровод Jenkins. Этот проект был создан для случая использования в этой статье, но используя конфигурацию в этом репо, вы можете создать CI/CD для любого проекта. Пройдите через readme, чтобы понять работу в проекте. Вы можете проверить это здесь Отказ Откройте репозиторий и проверьте содержимое Intival-setup.sh. . Это поможет вам установить некоторые необходимые пакеты. Скопируйте содержимое файла на сервер.

$ vi initial-setup.sh

Сохраните и закройте файл. Запустите скрипт, чтобы установить пакеты.

$ chmod +x initial-setup.sh
$ ./initial-setup.sh

После того, как сценарий будет выполняться, посетите свои серверы Public IP-адрес на порту 8080, чтобы просмотреть панель инструментов Jenkins ( HTTP://IP вашего сервера>: 8080 ). Вы увидите экран, похожий на один ниже.

0 * 593ypyy2b6cl9kkf.png.

Чтобы получить пароль вашего администратора, запустите эту команду, чтобы получить его.

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Это выпустит ваш пароль администратора. Имя пользователя, связанное с этим паролем, — это администратор, вы хотите войти в систему с этим пользователем. После ввода пароля администратора вы получите страницу, спрашивающую на установку плагинов.

0 * mr4r_3mbh1nbkumb.png.png.png

Выберите «Установка предложенных плагинов», чтобы установить некоторые стандартные плагины, которые помогут во время настройки трубопровода. После того, как установка будет сделана, вас просят создать обычный пользователь.

0 * _hsnt-mzgpy5gbb2.png

После создания пользователя вас просят установить URL Jenkins. Оставьте его как по умолчанию, и теперь вы должны войти в систему.

0 * 2G64MJYRIAVV7DGI.PNG

Мы должны сделать немного домашнего хозяйства. На левой боковой панели нажмите «Управление Jenkins». Это открывает панель управления Дженкинсом. Нажмите на «Настроить глобальную безопасность». Прокрутите вниз и включите «включить совместимость прокси» на «защите CSRF». Применить и сохранить.

0 * O4H9P8NPVWHN-7_5.PNG

Мы будем использовать Plugin Blue Ocean на Jenkins, чтобы настроить наш конвейер CI/CD. Blue Ocean — это просто новый элегантный интернет-интерфейс для классических дженкинс. Несмотря на то, что Дженкинс — это расширяемый и надежный, его плохой пользовательский опыт много подвергается критике. Дженкинс представил Blue Ocean, чтобы улучшить пользовательский опыт вместе с некоторыми преимуществами. На левой боковой панели нажмите на управление Jenkins. Это открывает панель управления Дженкинсом. Нажмите на «Управление плагинами». Нажмите «Доступно», а затем ищите «Blue Ocean».

1 * p9s_qqa9qlermod_apcrq.png.

Вы можете выбрать все плагины Blue Ocean и нажмите «Загрузить сейчас и установить после перезагрузки». После завершения загрузки нажмите «Вернуться на верхнюю страницу». Вернитесь к менеджеру плагинов и ищите AWS на доступных плагинах. Установите «Трубопровод: ступени AWS». Нажмите «Загрузить сейчас и установить после перезагрузки».

1 * nt-wh85nbhl3wcrnru0ogg.png

После завершения загрузки нажмите «Перезапустить Jenkins, когда установка завершена, и рабочие задания не работают».

1 * A5th9ae9sfauaybzlze7hw.png.

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

1 * owrzr0arbok7p5dkb7kqog.png.

Иногда вы можете застрять на этой странице. Вы можете освежить и посмотреть, появится ли приборная панель. Также иногда сервер Jenkins может не перезапустить для успешного установки новых плагинов. Вы можете подключиться к вашему EC2, используя свой Linux Terminal или Budley. После подключения вы можете проверить состояние сервера Jenkins, а также если время выполнения совпадает с при установке плагинов. Если время выполнения совпадает, вы можете проигнорировать перезагрузку сервера Jenkins.

# Check status of Jenkins server
$ systemctl status jenkins

# Restart the Jenkins server
$ sudo systemctl restart jenkins
1 * zgdl83mlnbij_oxekytj3g.png.

Шаг 2: Настройка AWS CLI и положения Kubernetes Cluster При использовании Jenkins команд оболочки на этапах трубопровода выполняются с помощью пользователя Jenkins. Некоторые из этих команд должны быть запущены с использованием привилегий Super User. Мы предоставим Jenkins User Super Privilegges, чтобы эти команды запускались без ошибки в трубопроводе.

$ sudo visudo -f /etc/sudoers

Добавьте следующую строку в конце Visudo файл.

jenkins ALL= NOPASSWD: ALL

Это также позволит пользователю Jenkins работать SU (Super пользователь) Команды без необходимости вводить пароль. Как только это сделано, переключитесь на пользователь Jenkins на терминал.

$ sudo su - jenkins

Далее нам нужно настроить AWS CLI с пользователем IAM с программным доступом. Этот пользователь IAM должен иметь необходимые привилегии для создания и управления кластером EKS. Вы можете увидеть, как это сделать здесь Отказ Я советую вам предоставить пользователю IAM АдминистраторКакСекс Чтобы облегчить предоставление кластера для вас. Как только вы создадите пользователя IAM, обратите внимание на Доступ к ключу ID и Секретный ключ доступа Отказ Теперь настройте AWS CLI с пользователем IAM. Вы должны войти в систему как пользователь Jenkins на терминале. Использовать США-Восток-1 Как регион при настройке AWS CLI.

$ aws configure

После завершения конфигурации запустите эту команду, чтобы убедиться, что пользователь IAM был успешно настроен.

$ aws s3 ls

Вы можете получить ошибку, как этот Произошла ошибка (AccessDodeded) при вызове операции ListBuckets: доступ запрещен. Эта ошибка в порядке, потому что вы не дали пользователю разрешения на доступ S3. Вы не должны видеть эту ошибку, если вы предоставляете пользователю IAM АдминистраторКакСекс или доступ к S3. Теперь, когда CLI AWS настроен с пользователем IAM, который имеет необходимые привилегии, которые мы можем идти вперед и создать кластер Kubernetes. Запустите эту команду, чтобы создать кластер.

$ eksctl create cluster --name stage-cluster --version 1.14 --region 
us-east-1 --nodegroup-name standard-workers --node-type t2.small --
nodes 2 --nodes-min 1 --nodes-max 4 --managed

Создание кластера Kubernetes занимает около 20-30 минут для завершения. Вы также можете отслеживать создание на консоли AWS. После завершения создания вы можете запустить эту команду, чтобы проверить ваши узлы. Обратите внимание, что вы должны войти в систему как пользователь Jenkins.

$ kubectl get nodes

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

Шаг 3: Установка учетных данных AWS и Docker на Jenkins Откройте вашу приборную панель Jenkins ( http://IP вашего сервера>: 8080 ). Войдите с пользователем, который вы создали. На левой боковой панели нажмите «Управление Jenkins». Это открывает панель управления Дженкинсом. Нажмите на «Управлять учетными данными».

1 * 5fowrhq_e4qv7tz8f3_o_w.png.

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

1 * mzi9jccwy5b-rjxabidnkq.png

Далее добавьте еще одно учетные данные, используя AWS IAM пользователь Доступ к ключу ID и Секретный ключ доступа Отказ Установите идентификатор учетных данных как «AWS», потому что он ссылается на jenkinsfile.

1 * z2ahhr_zmcdgjfetszub-a.png

Шаг 4: Установка трубопровода на синий океан Откройте вашу приборную панель Jenkins ( http://IP вашего сервера>: 8080 ). На левой боковой панели нажмите «Открытый синий океан». Это откроет UI Blue Ocean.

1 * wacsweii2xbnsj0nnvbc0ya.png.

Настройка трубопровода, используя Github Repo, который был указан ранее Отказ

1 * yzyhaa-id9g2pfarqg6rrw.png
1 * po4t_6o3v9oa138yzunuzw.png.

Сразу же вы закончите, трубопровод должен начать здание немедленно. Вы можете нажать на проект, чтобы следовать процессу развертывания.

1 * xqbgfhqcbu21vfuvpqxsbg.png.
1 * p0a4pkd_vplttesyqoraxq.png.

Это означает, что приложение успешно развернуто. Чтобы получить URL для посещения, убедитесь, что вы все еще вошли в систему, как пользователь Jenkins на терминале. Затем запустите следующие команды.

# If not logged in
$ sudo su - jenkins

# To get nodes
$ kubectl get nodes

# To get pods running
$ kubectl get pods

# To get services and the URL of the application 
$ kubectl get services
1 * 86xrhp5m0zzk6 - hvmstka.png

Посещение URL-адреса балансировщика нагрузки покажет вам веб-приложение.

1 * qtkv797vm9xz9mmqogpqiq.png.

Вы также можете настроить трубопровод для автоматического восстановления и перераспределения приложения на Kubernetes, когда в репо, когда есть новые коммиты. Нажмите на знак передач на приборной панели трубопровода. Перейдите в «Сканирование триггеров репозитория» и щелкните флажок. Установите его до 1 минуты. Применить и сохранить.

1 * wsjucz3ctysukfv_2rilza.png.

Поздравляю!!! Мы смогли развернуть докеренное веб-приложение на Kubernetes, используя Jenkins для управления потоком от изменения кода в развертывание. Любые изменения, которые вы делаете в исходном коде, и нажмите на REPO, будет автоматически развернут без вашего ручного вмешательства. Удачи!!!

Ссыловые ссылки: 1) https://logz.io/blog/amazon-eks-cluster/ 2) https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html

Оригинал: «https://www.codementor.io/@vahiwe/deploy-your-dockerized-application-using-a-ci-cd-pipeline-on-kubernetes-1avel0rm58»