Kubernetes и CI/CD пайплайн

Kate

Administrator
Команда форума
Сегодня мы поговорим об Azure DevOps и процессах непрерывной интеграции/развертывания.

Можно использовать множество функций, которые интегрированы с Azure DevOps. Если подходить ко всему "как к коду" для развертывания, то вместо классического Azure DevOps в качестве решения можно применить Azure DevOps yaml deployment. В этом примере будет рассказано о шагах по развертыванию в среде kubernetes.

Во-первых, для развертываний Kubernetes можно управлять версиями во время миграций с помощью шаблона helm, а затем вы можете включить независимые от среды миграции, изменив файл values.yaml в шаблоне helm для каждого приложения и среды.

9adc5e921d44e02c05446c260e216535.png

Разработанный нами шаблон может обеспечить создание общей структуры и функции отмены в возможных ошибках тестирования конечных точек в версиях. Важной частью здесь является то, как вы будете работать над сценариями тестирования и что именно вы хотите сделать.

Рассмотрим создание шаблона Helm и установку стандартов в отдельной статье.

Мы создаем файл deployment.yaml в Azure DevOps.

Кликнув на кнопку pipeline в меню, необходимо выбрать соответствующую информацию о репозитории после выбора добавления нового pipeline на открывшейся странице.

5cf116a1f4c3201bd350c7e8c766b59d.png

Если вы еще не создавали и не загружали репозиторий, сделайте новый пайплайн, выбрав опцию его стартового запуска. Поскольку мы уже создали yaml пайплайн, продолжим, выбрав второй вариант.

11f0ef9be9c911593cef267dae7f2b46.png

Мы подготовили этапы для работы в созданном нами пайплайне yaml.

Прежде всего, настроили наши приложения, которые были собраны в соответствии с их dockerfile, на прохождение следующих этапов.

d59e844149ef156d53bc7a751d8b947c.png

Этапы:

  1. Сборка
  2. Внедрение в разработку
  3. Тестирование конечной точки
  4. Тест на откат последней версии в случае неудачи
  5. Если тестирование конечной точки прошло успешно, продолжается развертывание в продакшн
  6. Тестирование конечной точки в продакшн
  7. Откат в случае неудачи
27ad72f6c70fa58262698dcf48b665a0.png

Наш файл helm, который мы искусственно передали на этапе Build, изменяется на этой стадии, и вы можете сделать его готовым к работе в среде. В данном случае возможны несколько методов, и какой из них будет правильным, зависит от ваших потребностей. Для работы здесь мы берем скрытые переменные на вкладке библиотеки в пайплайне. В этом примере мы модифицировали оболочку.

66c57d2cea8ce7746a1fcc70305770cc.png

Этап, на котором создаются наши файлы манифеста;

6848f9ca7af9e98701afc3fc52df4f02.png

Артефакты, созданные в процессе сборки, перемещаются по этапам в средах.

7f12f5cf3e4fce07d7e0b1264e47d14a.png

Наше развертывание завершено, и мы перешли к этапу тестирования.

971e198522f244764dc8c6ecc2f0dedb.png

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

6006b0c2bb9fb29bb983880dda072a3d.png

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

Итак, что нам делать, если он успешен:

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

4ce12a150089093480d5f4f66d0c008f.png

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

02a10b9cc571f23b4ba2f2dbb94082fa.png

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

c565f4d80965fccd75243cb98a13bb90.png

Вы можете написать дополнительно различные сценарии тестирования. Каждый написанный тестовый сценарий обезопасит ваш переход в продакшн.

"Закон Вирта: Программное обеспечение становится более медленным быстрее, чем аппаратное обеспечение становится более быстрым”

 
Сверху