Автор оригинала: 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 ). Вы увидите экран, похожий на один ниже.
Чтобы получить пароль вашего администратора, запустите эту команду, чтобы получить его.
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Это выпустит ваш пароль администратора. Имя пользователя, связанное с этим паролем, — это администратор, вы хотите войти в систему с этим пользователем. После ввода пароля администратора вы получите страницу, спрашивающую на установку плагинов.
Выберите «Установка предложенных плагинов», чтобы установить некоторые стандартные плагины, которые помогут во время настройки трубопровода. После того, как установка будет сделана, вас просят создать обычный пользователь.
После создания пользователя вас просят установить URL Jenkins. Оставьте его как по умолчанию, и теперь вы должны войти в систему.
Мы должны сделать немного домашнего хозяйства. На левой боковой панели нажмите «Управление Jenkins». Это открывает панель управления Дженкинсом. Нажмите на «Настроить глобальную безопасность». Прокрутите вниз и включите «включить совместимость прокси» на «защите CSRF». Применить и сохранить.
Мы будем использовать Plugin Blue Ocean на Jenkins, чтобы настроить наш конвейер CI/CD. Blue Ocean — это просто новый элегантный интернет-интерфейс для классических дженкинс. Несмотря на то, что Дженкинс — это расширяемый и надежный, его плохой пользовательский опыт много подвергается критике. Дженкинс представил Blue Ocean, чтобы улучшить пользовательский опыт вместе с некоторыми преимуществами. На левой боковой панели нажмите на управление Jenkins. Это открывает панель управления Дженкинсом. Нажмите на «Управление плагинами». Нажмите «Доступно», а затем ищите «Blue Ocean».
Вы можете выбрать все плагины Blue Ocean и нажмите «Загрузить сейчас и установить после перезагрузки». После завершения загрузки нажмите «Вернуться на верхнюю страницу». Вернитесь к менеджеру плагинов и ищите AWS на доступных плагинах. Установите «Трубопровод: ступени AWS». Нажмите «Загрузить сейчас и установить после перезагрузки».
После завершения загрузки нажмите «Перезапустить Jenkins, когда установка завершена, и рабочие задания не работают».
Как только вы нажмете на него, вы будете перенаправлены на страницу ожидания для завершения обновления. Как только обновление завершено, вы будете перенаправлены обратно на панель инструментов Jenkins.
Иногда вы можете застрять на этой странице. Вы можете освежить и посмотреть, появится ли приборная панель. Также иногда сервер Jenkins может не перезапустить для успешного установки новых плагинов. Вы можете подключиться к вашему EC2, используя свой Linux Terminal или Budley. После подключения вы можете проверить состояние сервера Jenkins, а также если время выполнения совпадает с при установке плагинов. Если время выполнения совпадает, вы можете проигнорировать перезагрузку сервера Jenkins.
# Check status of Jenkins server $ systemctl status jenkins # Restart the Jenkins server $ sudo systemctl restart jenkins
Шаг 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». Это открывает панель управления Дженкинсом. Нажмите на «Управлять учетными данными».
Нажмите на «Global». На левой боковой панели нажмите «Добавить учетные данные». Теперь мы добавим ваши учетные данные Dockerhub, где встроенные изображения Docker, которые построены в трубопроводе. Установите идентификатор учетных данных как «DockerHub», потому что он наносится JenkinsFile.
Далее добавьте еще одно учетные данные, используя AWS IAM пользователь Доступ к ключу ID и Секретный ключ доступа Отказ Установите идентификатор учетных данных как «AWS», потому что он ссылается на jenkinsfile.
Шаг 4: Установка трубопровода на синий океан Откройте вашу приборную панель Jenkins ( http://IP вашего сервера>: 8080 ). На левой боковой панели нажмите «Открытый синий океан». Это откроет UI Blue Ocean.
Настройка трубопровода, используя Github Repo, который был указан ранее Отказ
Сразу же вы закончите, трубопровод должен начать здание немедленно. Вы можете нажать на проект, чтобы следовать процессу развертывания.
Это означает, что приложение успешно развернуто. Чтобы получить 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
Посещение URL-адреса балансировщика нагрузки покажет вам веб-приложение.
Вы также можете настроить трубопровод для автоматического восстановления и перераспределения приложения на Kubernetes, когда в репо, когда есть новые коммиты. Нажмите на знак передач на приборной панели трубопровода. Перейдите в «Сканирование триггеров репозитория» и щелкните флажок. Установите его до 1 минуты. Применить и сохранить.
Поздравляю!!! Мы смогли развернуть докеренное веб-приложение на 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»