Масштабирование автоматизации сборки благодаря интеграции TeamCity с Kubernetes

В кластере Kubernetes можно развернуть билд-агенты TeamCity, создав надежное и масштабируемое CI/CD-решение — как в облаке, так и на физических серверах.

Создание пайплайнов непрерывной интеграции и доставки для Kubernetes с помощью TeamCity

Kubernetes позволяет командам разработчиков перестать зависеть от физических серверов. Благодаря Kubernetes пользователи получают стабильный непрерывный сервис: IT-команда может в любой момент остановить любой сервер для обслуживания и снова запустить его.

Кроме того, Kubernetes позволяет оптимизировать использование ресурсов, запустив несколько задач на одном сервере.

Благодаря интеграции между TeamCity и Kubernetes командам не придется выбирать между резервированием чрезмерных ресурсов и риском снижения доступности сервера по мере того, как потребность в ресурсах растет.

Выберите подходящую версию TeamCity:

Интеграция TeamCity с кластером Kubernetes

С помощью плагина поддержки Kubernetes TeamCity может запускать агенты в кластере Kubernetes. Плагин поставляется вместе с TeamCity, скачивать или устанавливать его отдельно не нужно.

  • Решение позволяет реализовать масштабируемую CI/CD-архитектуру на основе Kubernetes. Билд-агенты запускаются автоматически, когда они нужны, выполняют свою работу, а затем удаляются после завершения сборки. TeamCity запускает контейнеры с установленными агентами TeamCity по запросу, когда обрабатывает очередь сборки.
  • Нативная поддержка Docker. TeamCity помогает автоматизировать CI/CD-пайплайн на проектах любого размера и сложности благодаря использованию Docker-контейнеров на всех этапах.
  • Запуск каждой сборки в изолированном окружении: для каждого проекта настраивается собственная конфигурация Cloud Profile, привязанная к отдельному кластеру Kubernetes.
  • Одновременное использование гибких возможностей облачной инфраструктуры и преимуществ Kubernetes: отказоустойчивости и «умного» распределения ресурсов.
  • Запуск параллельных заданий с использованием подов Kubernetes. Поды максимально эффективно распределяются между облачными машинами, расширяя возможности параллелизации заданий. В зависимости от настроек, после завершения задания использовавшиеся для его выполнения поды либо продолжают, либо завершают работу, чтобы высвободить ресурсы.

Улучшенное управление развертыванием с помощью Kubernetes

Нативная поддержка Docker в TeamCity позволяет полностью контейнеризовать процесс непрерывной интеграции и развертывания.

Образы контейнеров

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

Настройка тестовых и промежуточных сред

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

Подробные отчеты

TeamCity предлагает подробные отчеты об автоматическом тестировании. Результаты публикуются в реальном времени и содержат ссылки на соответствующие логи и трассировки стеков, чтобы можно было сразу же расследовать причины сбоев.

Билд-раннер Helm для создания зеркал производственных сред

Билд-раннер Helm (доступен в виде плагина) позволяет сконфигурировать задачи Kubernetes и обеспечить соответствие препродакшн-окружения производственной среде.

Начало работы с CI/CD Kubernetes

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

Порядок настройки TeamCity для использования ресурсов кластера Kubernetes:

  • Создайте кластер Kubernetes, в котором будут размещены билд-агенты TeamCity. Можно использовать сервис хостинга Kubernetes, например GKE от Google Cloud или Amazon EKS, либо самостоятельно разместить кластер Kubernetes в облаке или на физических серверах.
  • Чтобы разместить в одном кластере и задания сборки, и тестовые окружения, нужно сконфигурировать в Kubernetes выделенные пространства имен.
  • Предоставьте TeamCity необходимые разрешения записывать данные в кластер.
  • В TeamCity настройте конфигурацию Cloud Profile для Kubernetes и задайте настройки облачного агента. Чтобы задать предельный объем вычислительных ресурсов для каждого инстанса билд-агента TeamCity или настроить политику перезапуска, используйте специальный шаблон пода.
  • Настройте TeamCity так, чтобы для заданий сборки использовался облачный агент.

Вопросы и ответы

Как работает интеграция TeamCity и Kubernetes?

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

Как начать пользоваться интеграцией?

Благодаря поддержке Kubernetes в TeamCity вы можете пользоваться всеми преимуществами надежной масштабируемой инфраструктуры, в которой выполняются задания сборки и автоматические тесты. Подробнее о преимуществах CI/CD, назначении CI/CD-пайплайна и рекомендациях по созданию облачного CI/CD-пайплайна читайте в нашем руководстве.

Готовы приступить к созданию CI/CD? Интегрируйте TeamCity с кластерами Kubernetes и запустите первую сборку в пайплайне непрерывной интеграции и развертывания в Kubernetes.

Начните работу в TeamCity

Эффективный CI/CD-пайплайн для команд, использующих Kubernetes