В платформе Deckhouse появился модуль delivery для непрерывной доставки приложений в Kubernetes

от автора

В составе 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, можно использовать веб-интерфейс утилиты:

Веб-интерфейс Argo CD

Веб-интерфейс Argo CD

В 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.

Для знакомства с платформой рекомендуем раздел «Быстрый старт». Полезные ссылки на ресурсы проекта:

Читайте также в нашем блоге:


ссылка на оригинал статьи https://habr.com/ru/company/flant/blog/723656/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *