Статьи

Jenkins X Пошаговое руководство по непрерывному развертыванию с Kubernetes

В TestProject мы стремимся использовать самую актуальную лучшие практики, а также в рамках обновления для некоторых компонентов и рабочих процессов в нашей инфраструктуре, мы частично переходит к Дженкинс X . Отсутствует полезный материал, доступный по настройке Jenkins X без сервера, поэтому в рамках нашей уверенности в том, чтобы делиться и отдавать сообществу, мы решили создать полномасштабное пошаговое руководство по этому вопросу!

Внедорожная интеграция Jenkins X и Kubernetes решает следующие проблемы:

  1. Поддержка выделенных серверов для различных компонентов, задействованных в CI / CD, таких как: серверы сборки, среды тестирования, оркестровка серверов и т. Д.
  2. Автоматическое развертывание параллельных сред сборки и тестирования по требованию, позволяющее тестировщикам и разработчикам параллельно выпускать и тестировать выделенные функции.
  3. Естественно интегрируется с потоками разработки и выпуска микросервисов.

В этом пошаговом руководстве мы собираемся создать решение CI / CD для современного облачного приложения на основе микросервисов с Jenkins X.

Jenkins X — это CI / CD-решение для современных облачных приложений в Kubernetes . Это помогает нам создавать отличные конвейеры для наших проектов и реализовывать полный CI и CD.

Непрерывная интеграция (CI) — это методология разработки программного обеспечения для автоматизации интеграции изменений кода от нескольких участников в один программный проект. Непрерывное развертывание (CD) — это методология разработки программного обеспечения, благодаря которой программное обеспечение автоматически, быстро и безопасно развертывается в производственной среде.

Вам также может понравиться: Все, что вам нужно знать о Jenkins X

Jenkins X автоматизирует управление средами и продвижение новых версий приложений между средами через GitOps.

GitOps — это методология разработки программного обеспечения для управления кластерами Kubernetes и доставки приложений. Следуя этой методологии, Git является единственным источником правды как для инфраструктуры в виде кода, так и для кода приложения. Все изменения в желаемом состоянии выполняются Git коммитами.

Jenkins X автоматически раскручивает среды предварительного просмотра для наших запросов извлечения, поэтому мы можем получить быструю обратную связь, прежде чем изменения будут объединены с master.

Давайте начнем! 

Для целей данного руководства мы создали простой демонстрационный проект с микросервисным дизайном, который будет развернут в Kubernetes. Наш демонстрационный проект состоит из 3 основных сервисов: фронтенд-приложения и 2 бэкэнд-сервисов.

Наш демонстрационный проект отображает текущую версию серверных сервисов и свою собственную. Это будет полезно для иллюстрации и тестирования конвейера CI / CD, который мы создаем позже.

Наши сервисы для демонстрационных проектов написаны на Python и упакованы в контейнер Docker на основе образа Alpine. Изображение ниже иллюстрирует наш демонстрационный проект:

К концу этого урока у нас будет работающее решение CI / CD , которое позволит нам разрабатывать, тестировать и доставлять наше приложение быстрым и надежным способом.

Jenkins X Безсерверная архитектура

Перед тем, как мы начнем практическую часть руководства, мы должны охватить основные компоненты безсерверной инфраструктуры Jenkins X. Изображение ниже иллюстрирует эти компоненты:

Давайте рассмотрим немного больше:

  • Kubernetes — ядро ​​разработки наших облачных приложений, где мы создаем, тестируем и разворачиваем наши приложения.
  • Реестр образов Docker — Здесь мы храним наши изображения Docker после их создания. Небольшое замечание: Jenkins X по умолчанию использует реестр Docker вашего облачного провайдера, но его можно настроить на использование другого частного реестра.
  • Git — Здесь мы сохраняем наш код — исходный код приложения, конфигурацию системы и состояние системы.
  • Музей карт — где мы храним наши карты Хелма.
  • Testing Framework — где мы тестируем изменения нашего приложения, мы используем TestProject (это бесплатно).
  • Канико — строит наши контейнеры Docker.
  • Скаффолд Размещает наши контейнеры Docker в Kubernetes.
  • Черновик — Создает наши диаграммы Helm для развертывания наших приложений.
  • Тектон — это то, что управляет нашими трубопроводами.
  • Jenkins X — организует процесс CI / CD.

Установка и настройка Jenkins X без сервера

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

Предпосылки

  1. Облачный аккаунт Google (если у вас его еще нет, вы можете создать его здесь ).
  2. Аккаунт Github (если у вас его еще нет, вы можете создать его здесь ).

Установите Jenkins X на Google Kubernetes Engine (GKE)

  1. Войдите в свой облачный аккаунт Google.
  2. Перейти к вашей консоли (кнопка консоли в правом верхнем углу).
  3. Перейдите к облачной оболочке (кнопка [> _] на верхней синей полосе справа).
  4. Выполните следующие команды для установки jx:

Оболочка