В составе Kubernetes-платформы Deckhouse появился новый модуль delivery, в основе которого — утилита с открытым исходным кодом Argo CD. Модуль автоматизирует процессы непрерывной доставки, развертывания и обновления пользовательских приложений в кластере. Также, благодаря доработке «ванильной» версии Argo CD, delivery повышает удобство доставки ПО в закрытые контуры при помощи werf.

Argo CD «из коробки»
Argo CD — GitOps-утилита для непрерывной доставки (continuous delivery) приложений в Kubernetes; проект CNCF в статусе graduated. Argo CD позволяет настраивать доставку декларативно и использует Git как единый «источник правды». Утилита следит за изменениями в Git-репозитории: как только появляется новая конфигурация приложения, Argo CD приводит приложение к описанному в конфигурации состоянию. Помимо Git, Argo CD также умеет использовать другие источники, например репозиторий для Helm-чартов.
Argo CD входит в состав платформы Deckhouse «из коробки». До появления модуля delivery пользователям платформы, которые работали с Argo CD, приходилось самостоятельно устанавливать и обновлять утилиту. Теперь всё это делает Deckhouse. Тем самым экономятся время и трудозатраты инженеров, которые поддерживают Kubernetes-кластеры.
Для управления Argo CD в связке с Deckhouse, помимо CLI, можно использовать веб-интерфейс утилиты:
В UI можно наблюдать за развернутыми приложениями, их ресурсами, состоянием, различными событиями, а также получать логи.
CI/CD для закрытых контуров
Argo CD Image Updater — компонент, который позволяет автоматически обновлять приложение при выходе новой версии. Разработчики «Фланта» доработали компонент так, чтобы добавить поддержку OCI-репозиториев. Благодаря этой доработке Argo CD Image Updater следит не только за обновлением образов приложений, но и за обновлением всего Helm-чарта (конфигурации), выложенного в container registry. То есть Argo CD Image Updater обновляет не только образы, но и манифесты.
Helm-чарты и образы можно выкладывать в container registry как отдельные артефакты. Однако чтобы упростить процесс, можно объединить чарт и образ в один артефакт — бандл, реализованный с помощью werf. В этом случае не нужно думать о том, что конфигурация и приложения обновляются разными циклами. Также упрощается проверка артефактов на уязвимости и другие угрозы. werf-бандл особенно полезен для закрытых окружений с повышенными требованиями к безопасности процесса доставки ПО.
Container registry можно использовать и для первичного деплоя приложения, и для автообновлений по pull-модели. Argo CD Image Updater сканирует OCI-репозиторий с заданным интервалом. Как только в container registry появляется новая версия ПО в виде бандла, Argo CD скачивает его и обновляет приложение в кластере.
Для деплоя ПО из OCI-репозитория нужно создать три объекта:
-
Secret для доступа к registry в формате dockerconfigjson.
-
Application с конфигурацией приложения.
-
WerfSource, в котором содержится информация о container registry и ссылка на Secret для доступа.
Пример объектов:
--- apiVersion: deckhouse.io/v1alpha1 kind: WerfSource metadata: name: example spec: imageRepo: cr.example.io/myproject # репозиторий бандлов и образов pullSecretName: example-registry # Secret с доступом --- apiVersion: v1 kind: Secret metadata: namespace: d8-delivery # namespace модуля name: example-registry type: kubernetes.io/dockerconfigjson # поддерживается только этот тип Secret'ов data: .dockerconfigjson: ... --- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: annotations: argocd-image-updater.argoproj.io/chart-version: ~ 0.0 name: myapp namespace: d8-delivery # namespace модуля spec: destination: namespace: myapp server: https://kubernetes.default.svc project: default source: chart: mychart # бандл -- cr.example.com/myproject/mychart helm: {} repoURL: cr.example.com/myproject # репозиторий Argo CD из WerfBundle targetRevision: 1.0.0 syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
При этом WerfSource — необязательный объект: OCI-репозиторий можно добавить стандартными для Argo CD способами, а также настроить registry в Image Updater самостоятельно, через ConfigMap. Такой вариант подойдет тем, кто хотел бы использовать привычный подход в работе с Argo CD.
Публиковать новые версии ПО в container registry можно вручную или с помощью любого CI/CD-решения, включая werf (подробнее о возможностях, которые дает интеграция werf и Argo CD, — в нашей статье).
Планы по развитию модуля
В будущем в Deckhouse появятся:
-
Интеграции с популярными CI-системами для сборки и развертывания приложений.
-
Средство для хранения кода.
-
Возможность работы с динамическими секретами.
-
Подробная документация по деплою приложений в Deckhouse.
Из функций Argo CD в модуль планируется добавить поддержку Argo Rollouts, метрик и дашбордов.
P.S.
Модуль доступен только в Enterprise-версии Deckhouse.
Для знакомства с платформой рекомендуем раздел «Быстрый старт». Полезные ссылки на ресурсы проекта:
-
Telegram-канал с анонсами и новостями проекта;
-
официальный Twitter-аккаунт на английском.
Читайте также в нашем блоге:
ссылка на оригинал статьи https://habr.com/ru/company/flant/blog/723656/
Добавить комментарий