Контейнеры принесли монументальный сдвиг в DevOps, позволяя командам отправлять код быстрее, чем когда -либо прежде. Тем не менее, нам все еще нужно пройти через процесс строительства, упаковки и развертывания этих контейнеров. Вот почему мы используем контейнерные трубопроводы.
Тем не менее, есть много разных вариантов, когда дело доходит до контейнерных трубопроводов. Как мы узнаем, какой из них использовать? В этой статье мы сравним шесть вариантов и рассмотрим конфигурацию, преимущества, ограничения и цены каждого.
Что такое контейнерные трубопроводы?
Во -первых, давайте поговорим о том, что на самом деле такое контейнерный трубопровод. Трубопроводы помогают автоматизировать отдельные этапы в процессе разработки программного обеспечения, особенно непрерывную интеграцию и непрерывную доставку (CI/CD).
Контейнерные трубопроводы автоматизируют каждую из этапов в процессе развертывания контейнеров, от создания начального изображения до развертывания до производства.
Как правило, весь контейнерный трубопровод состоит из трех этапов:
- Интеграция: изменения проверяются в управлении источником, запуская процесс сборки и модульные тесты.
- Приемное тестирование: контейнер развернут в тестовой среде и проверяется для функциональности.
- Развертывание: окончательное, полностью проверенное изображение развернуто для производства.
Инструменты контейнерного трубопровода обычно предлагают как минимум два из трех, но они могут различаться.
Теперь давайте посмотрим на наши шесть вариантов.
1. Хероку
Хероку Полный контейнерный трубопровод, использующий Docker Анкет Вы можете создавать, проверять, проверять и развернуть контейнеры на одной и той же платформе без необходимости предоставлять оборудование или использовать различных поставщиков услуг.
Конфигурация
Приложения Heroku настроены с использованием Heroku.yml Манифест, который определяет шаги, необходимые для создания и развертывания контейнера. Манифест для приложения с пользовательским Dockerfile может выглядеть так:
build: docker: web: Dockerfile
К развернуть этот контейнер, используя git , просто беги:
$ heroku stack:set container $ git add heroku.yml $ git commit -m "Add heroku.yml" $ git push heroku master
Хероку также поддерживает трубопроводы , что позволяет вам развернуть контейнер в несколько разных сред, чтобы отразить этапы в рабочем процессе непрерывной доставки. Например, вы можете использовать трубопроводы для проверки изменений в стадийной среде перед тем, как развернуться в производство.
Преимущества и ограничения
Heroku чрезвычайно прост в использовании, требуя лишь одного файла YAML для всего трубопровода. Он полностью управляется, предоставляет несколько сред для тестирования и развертывания изменений и даже позволяет вам откаты изменений В случае плохого развертывания.
Однако не все функции Heroku поддерживают развертывание Docker. Например, вы не можете использовать Heroku Ci Чтобы запустить тестовый набор вашего приложения, что означает либо запуск тестового набора при создании изображения, либо используя Многоценные сборки . Вы также не можете использовать Трубопроводные акции Для продвижения контейнера с одной стадии трубопровода до следующей. Вместо этого вы должны передать контейнер на целевую стадию.
Ценообразование
Хероку предлагает бесплатный план с 1000 бесплатных часов выполнения в месяц для одного веб -динамона и одного работника Dyno. Оплаченные планы начинаются с 7 долларов США за динамо/месяц и предоставляют дополнительные функции, такие как динамики большей мощности и улучшенная масштабируемость. Для получения дополнительной информации см. Героку ценовая страница Анкет
Мой взгляд
Heroku-очень простое и экономически эффективное раствор контейнерного трубопровода. Это дает вам полный контроль над процессом CI/CD, обеспечивая полностью управляемую среду. С бесплатным уровнем и Бесплатная стандартная поддержка , стоит попробовать.
2. Лазурные DevOps
Azure DevOps Это услуга Microsoft All-In-One для управления проектами, управления исходным кодом (SCM) и CI/CD. Это позволяет вам управлять почти на каждом этапе жизненного цикла DevOps, предлагая многие усовершенствованные контейнерные функции, в том числе личные Регистрации контейнера и интеграция с Azure Kubernetes Service (AKS). Azure Tipelines Предоставьте сервис CI/CD платформы.
Конфигурация
Все Azure DevOps можно управлять с помощью веб-пользовательского интерфейса, но вы также можете настроить конвейеры Azure, используя манифест на основе YAML, проверенный в исходном коде вашего приложения. Web UI позволяет вам управлять и отслеживать среды развертывания и выпускать версии, артефакты и многое другое.
Преимущества и ограничения
Если ваша команда уже использует Azure, то Azure DevOps является естественным расширением вашего существующего рабочего процесса. Он поддерживает как управляемые, так и локальные установки, а также поддерживает ряд целей развертывания Azure, включая службу Azure App, Kubernetes и функции Azure. Тем не менее, интеграция с другими услугами (включая Azure Services) не простая. Настройка интеграции в Azure DevOps требует, чтобы вы копировали и вставляли значения, даже из таких сервисов, как реестр контейнеров Azure, что делает его менее сплоченным и трудным для настройки.
Ценообразование
Azure Pipelines предлагает бесплатный уровень с одной бесплатной одновременной работой CI/CD и 1800 минутами в месяц. Дополнительные рабочие места стоят 40 долларов, а артефакты хостинга (например, изображения) стоят 2 доллара за ГБ в месяц. Дополнительные услуги, такие как Azure Boards, поставляются с дополнительными ежемесячными сборами. Чтобы узнать больше, посетите Azure DevOps Services Pricing страница.
Мой взгляд
Azure DevOps отлично подходит для команд, которые хотят решения для управления DevOps, или которые уже используют Azure. Это значительно упрощает жизненный цикл разработки, централизуя его в одном месте. Тем не менее, это может быть трудно настроить, и это может быть чрезмерно комплексным для команд, которым просто нужен базовый контейнерный трубопровод.
3. Gitlab ci/cd
Gitlab Начал жизнь как SCM с открытым исходным кодом, но быстро превратился в полное решение для управления DevOps. Как и Azure DevOps, он предоставляет такие функции, как управление проектами, реестры частных контейнеров и организованные среды сборки (включая Kubernetes).
Конфигурация
Gitlab CI/CD питается Gitlab Runner , который выполняет каждый шаг в вашем конвейере CI/CD в автономной среде. Конфигурация выполняется через .gitlab-ci.yml Manifest, который поддерживает некоторые расширенные конфигурации, включая условную логику и импорт других манифестов.
В качестве альтернативы, вы можете автоматизировать весь свой трубопровод без конфигурации, используя Auto DevOps Анкет Gitlab автоматически определяет, как создать ваше приложение на основе исходного кода (в данном случае, Dockerfile), используя Heroku BuildPacks (через herokuish ). Автоматические DevOps могут автоматически запускать модульные тесты, выполнять анализ качества кода и сканировать изображения по вопросам безопасности.
Для развертывания Гитлаб использует DPL Инструмент, который поддерживает широкий спектр поставщиков, включая облачные платформы и кластеры Kubernetes.
Преимущества и ограничения
Gitlab предлагает чрезвычайно гибкий конвейер, который вы можете настроить себя или полностью автоматизировать с помощью встроенных инструментов. Конфигурация YAML допускает больший диапазон структур и шагов проекта, таких как создание зависимостей проекта и Объединение нескольких трубопроводов от разных проектов. Поскольку Gitlab использует существующие инструменты с открытым исходным кодом, такие как Herokuish и DPL, он поддерживает широкий спектр типов проектов, языков и целей развертывания.
Хотя Gitlab может развернуть бегунов и артефактов в существующих средах, он не может обеспечить или поддерживать эти среды самих (за исключением Google Kubernetes Engine и Amazon Elastic Kubernetes Service). В нем также отсутствует инструмент конфигурации графического трубопровода, который может сделать управление трубопроводами менее интуитивно понятным, чем с такими инструментами, как Azure Tipelines.
Ценообразование
Gitlab использует модель Open Core: она предлагает базовую версию с открытым исходным кодом и платную корпоративную версию с дополнительными функциями. За платные планы, Цены является многоуровневым в зависимости от количества пользователей, количества минут, затрачивающих на запуск CI Tipвей в месяц, и доступ к определенным функциям. Все планы включают неограниченные репозитории кода, инструменты планирования проекта и 2000 бесплатных минут трубопровода в месяц. Оплаченные планы варьируются от 4 долл. США за пользователя/месяц до 99 долл. США за пользователя/месяц.
Мой взгляд
Gitlab — это невероятно универсальный и мощный инструмент CI/CD, который обладает чрезвычайно полезными функциями. Версия с открытым исходным кодом достаточно богата функциями, чтобы конкурировать со многими коммерческими опциями, а также позволяет вам самостоятельно. Тем не менее, это требует от вас поддерживать отдельную среду развертывания.
4. AWS Elastic Beanstalk
Эластичный бобовый стебель это меньше трубопровода и скорее инструмент для организации ресурсов AWS. Он может автоматически обеспечить, баланс нагрузки, масштаб и мониторинг ресурсов, таких как контейнеры ECS, ведра S3 и экземпляры EC2. Это позволяет вам создавать полностью пользовательский трубопровод в AWS в зависимости от ваших конкретных требований.
Конфигурация
Конфигурация Beanstalk описывает как развертывание контейнера, так и среду, в которой развертывается контейнер. Это определено в Dockerrun.aws.json файл. Beanstalk представляет уникальный Концепции , такие как:
Применение: логическая коллекция компонентов Beanstalk, таких как среды и версии. Версия приложения: легко развертываемая версия вашего исходного кода. Среда: набор ресурсов AWS, необходимый для запуска версии приложения. Преимущества и ограничения
Beanstalk — чрезвычайно мощный инструмент не только для Docker, но и для AWS. Он обеспечивает автоматическое масштабирование, обновления, мониторинг и управление выпуском. Это также позволяет вам получить доступ и управлять ресурсами напрямую.
Тем не менее, бобовый стебель более сложный, чем обычные трубопроводы. Вам необходимо предварительно предварительно разместить изображения Docker в репозитории изображения, если вы не используете Единая контейнерная среда и контейнерные версии тесно связаны с окружающей средой. Вы можете запускать обновления только через CLI Beanstalk; Следовательно, если контейнер терпит неудачу, вам необходимо обратиться к нему вручную с помощью консоли бобов.
Ценообразование
Сама Beanstalk — это бесплатная, но компоненты AWS, которые он полагается, по их обычным ценам. Например, если вы настраиваете свою среду с помощью узла ECS и балансировщика нагрузки ELB, вас взимают плату за узел и балансировщик нагрузки, как будто вы их обычно предоставили.
Мой взгляд
Благодаря огромному количеству услуг AWS, Beanstalk предоставляет отличный способ управлять всеми. Он может быть чрезвычайно мощным при использовании в качестве инструмента оркестровки, но он может быть слишком сложным для использования в качестве контейнера.
5. Google Cloud Build
Облачная сборка является относительно базовым сервисом CI Container CI, созданной на платформе Google Cloud (GCP). Он может создавать изображения непосредственно из исходного кода или Dockerfile и развернуться непосредственно в GKE, Cloud Run и других сервисах GCP.
Конфигурация
Облачная сборка настроен через файл cloudbuild.yaml (или json). Вы можете определить процесс создания изображений, а также где хранить полученное изображение. Например, построение и нажатие изображения Docker в реестр контейнеров Google так же просто, как:
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'gcr.io/$PROJECT_ID/myimage', '.'] images: ['gcr.io/$PROJECT_ID/myimage']
Облачная сборка Триггеры , который автоматически начинает основываться на изменениях вашего исходного кода.
Преимущества и ограничения
Облачная сборка аккуратно интегрируется с другими службами GCP в том числе GKE, App Engine и Cloud Run. Вы можете напрямую управлять размером и емкостью ваших строительных машин, а также Кэш -изображения слои для более быстрых сборки. Вы также можете запустить местные сборки Чтобы проверить или отлаживать свою сборку, прежде чем настаивать на облаке.
Поскольку облачная сборка построена вокруг GCP, она поддерживает только ограниченное количество целей развертывания. Развертывание контейнеров на другие платформы возможно, но требует дополнительных шагов. Кроме того, как и Gitlab, Cloud Build не имеет инструмента конфигурации визуального трубопровода.
Ценообразование
Цены основан на размере ваших машин сборки и времени наращивания. Стандартный экземпляр N1-Standard-1 стоит 0,003 долл. США за сборку сборки, до 0,064 долл. США на экземпляре N1-HIGHCPU-32. Вы также получаете 120 бесплатных мишту в день в экземпляре N1 Standard-1.
Мой взгляд
Облачная сборка является относительно упрощенной, но это также одна из его сильных сторон. Это быстро, легко учиться, довольно недорого и хорошо интегрироваться с другими услугами GCP. Если у вас уже есть среда развертывания или уже использовать GCP, я рекомендую попробовать.
6. Дженкинс х
Дженкинс является одним из самых популярных доступных инструментов CI/CD, а Jenkins X расширяет его, добавляя комплексную интеграцию Kubernetes. Jenkins X не просто развертывается в Kubernetes, он также может предоставить для вас кластеры Kubernetes.
Конфигурация
Дженкинс x трубопроводы построены на Тектон трубопроводы , который помогает в запуске трубопроводов CI/CD на Kubernetes. Вы можете настроить свой трубопровод, используя Jenkins-x.yml Файл (по сравнению с традиционным Jenkinsfile). Jenkins X также предоставляет Построить пакеты , который может помочь исходному коду упаковки в изображения, которые затем можно развернуть в Kubernetes.
Преимущества и ограничения
Jenkins X использует два популярных существующих проекта — Jenkins и Kubernetes — для создания масштабируемой платформы CI/CD. Он может автоматизировать весь трубопровод CI/CD и поддерживает среды предварительного просмотра и рекламные акции. Поскольку он включает в себя Дженкинс, он имеет доступ ко всему сообществу разработчиков Дженкинса.
Тем не менее, Jenkins X требует Kubernetes и очень самоуверен в отношении того, как настроен кластер. Инструмент командной строки автоматизирует большую часть этого процесса, но это важное внимание
Ценообразование
Jenkins X — открытый исходный код.
Мой взгляд
Для команд, использующих Jenkins, Jenkins X будет чувствовать себя естественным прогрессом. Он имеет некоторые строгие ограничения и требования, но для команд, использующих Kubernetes, наличие инструмента, который изначально интегрируется с вашей инфраструктурой, может быть выгодой.
Вывод
Давайте посмотрим на быстрое сравнение:
— Бесплатно на 1000 часов динамо/месяц — 7 долларов США за дино/месяц | Хероку | Паас | — Многочисленные среды развертывания — Полный инструмент CI/CD Pipeline — Полностью управляемые среды развертывания — Частный реестр контейнеров — поддержка локальных сборок — откаты развертывания. | Ямл |
— 40 долларов США/Работа/месяц — 1 бесплатная работа и 1800 минут/месяц | Лазурные DevOps | Паас или самостоятельно | — Полный инструмент управления DevOps — Редактор визуальных конвейеров — Частный реестр контейнеров — интеграция AKS | Ямл или Интернет |
— Открытый исходный код (ядро) — 4 долл. США/месяц с 2000 бесплатными минутами трубопровода в месяц | Gitlab ci/cd | Паас или самостоятельно | — Гибкий и расширяемый трубопровод — Автоматизация трубопровода с автоматическими DevOps — поддерживает ряд целей развертывания | Ямл |
— На основании ресурсов AWS предоставляется | AWS Elastic Beanstalk | Паас | — Орчестроение ресурсов AWS | Json |
— от 0,003 до 0,064 долл. США за сборку с сборкой- 120 бесплатных минут/дня в день | Google Cloud Build | Паас | — Легкая конфигурация — интегрируется с другими службами GCP — поддержка локальных сборков | Yaml или Json |
— Открытый источник | Дженкинс х | Самостоятельно | — Знакомство пользователям Jenkins — использует Kubernetes для масштабируемости — может предоставить и управлять кластерами Kubernetes | Ямл |
Для команд, желающих просто развернуть и размещать контейнеры Docker в стабильной среде, Хероку трудно победить. Он предлагает быструю и настраиваемую платформу, поддерживает широкий спектр интеграций и имеет огромный рынок сторонних дополнений. Elastic Beanstalk — это близкая секунда для его способности организовать ресурсы AWS, и это рекомендуемый выбор для команд с более сложными требованиями.
Для контейнера CI Gitlab, возможно, является наиболее полным вариантом из -за его огромного количества функций, возможностей Auto DevOps и модели открытого ядра. Google Cloud Build использует скорость и емкость платформы Google Cloud для Fast Builds, а Jenkins X выгоды от участия в проекте Jenkins. Большинство из этих услуг являются либо с открытым исходным кодом, либо предлагают бесплатные испытания, поэтому мы рекомендуем попробовать их и посмотреть, что лучше всего подходит для вашего рабочего процесса.
Оригинал: «https://dev.to/heroku/comparing-container-pipelines-5fje»