- О проекте
- Архитектура
- apps/
- argo-rollouts.yaml — blue/green и canary деплой
- argocd-image-updater.yaml — автоматическое обновление образов
- cert-manager.yaml — автоматический TLS
- external-secrets.yaml — секреты из облака
- ingress-nginx.yaml — точка входа
- monitoring.yaml — метрики и алерты
- policy-engine.yaml — политики безопасности
- argocd-image-updater
- apps/
- Внедренные DevSecOps практики
Этот репозиторий — App of Apps для продовой GitOps-платформы health-api
. Он описывает системные Argo CD-приложения (kind: Application
) для базовых компонентов, необходимых до запуска микросервисов:
argo-rollouts
— стратегии выкладкиargocd-image-updater
— автоматическое обновление тегов образов по стратегии и верификации подписиcert-manager
— автоматический TLSexternal-secrets
— секреты из облакаingress-nginx
— точка входаkube-prometheus-stack
— мониторингkyverno
— политики безопасности
Платформа живёт дольше, чем любые сервисы, и не зависит от бизнес-логики. Её можно обновлять независимо.
Хотя кластер на текущем этапе обслуживает только
health-api
, его архитектура изначально спроектирована как многоуровневая и масштабируемая платформа — с чётким разделением на системный и прикладной уровни, готовая к подключению новых сервисов без изменения ядра.
- Репозиторий не клонируется напрямую при инициализации кластера через ansible-gitops-bootstrap-health-api.
- Вместо этого он подключается как дочернее приложение из argocd-config-health-api — через объект
Application
, описанный в apps/platform-apps.yaml. - Это позволяет:
- централизованно управлять всеми источниками в argocd-config-health-api,
- отделить платформу от пользовательских сервисов,
- инициализировать Argo CD одним единственным приложением, которое рекурсивно разворачивает весь стек.
Таким образом, Argo CD сам клонирует и синхронизирует этот репозиторий по ссылке, без участия Ansible.
Каждый файл в директории apps/
— это отдельное Argo CD-приложение (Application
) для платформенного компонента. Ниже — краткое описание назначения каждого.
Назначение:
Устанавливает argo-rollouts
для продвинутых стратегий выкладки.
Поддерживает blueGreen
, canary
, step analysis
, ручной промоушен и откаты.
Назначение:
Устанавливает компонент Argo Image Updater через Helm-чарт.
Этот сервис отслеживает новые теги образов в container registry, проверяет подписи (cosign
) и обновляет Argo CD Application с актуальными версиями.
Работает совместно с манифестами в директории argocd-image-updater/
(ConfigMap и Secret).
Назначение:
Устанавливает cert-manager
, который автоматически получает и обновляет TLS-сертификаты (например, от Let's Encrypt).
Нужен для HTTPS и безопасного взаимодействия с внешними сервисами.
Назначение:
Устанавливает external-secrets
— компонент, который синхронизирует Kubernetes Secret
-ы с внешними Secret Manager (например, Yandex Cloud, HashiCorp Vault).
Избавляет от хранения секретов в Git.
Назначение:
Устанавливает ingress-nginx
— главный Ingress-контроллер.
Обрабатывает внешний HTTP/HTTPS трафик и маршрутизирует его по сервисам.
Назначение:
Устанавливает kube-prometheus-stack
: Prometheus, Grafana, node-exporter, алерты и дешборды.
Даёт видимость кластера и сервисов, поддерживает метрики для rollout-стратегий.
Назначение:
Устанавливает kyverno
— движок Policy-as-Code.
Применяет политики к Kubernetes-объектам: проверка аннотаций, запрет привилегированных контейнеров, enforce-логика и т.д.
Конфигурация и секреты для работы Argo Image Updater.
Назначение:
Задаёт глобальные настройки Argo Image Updater.
Определяет используемые container registry, параметры аутентификации и проверку подписей образов (cosign
).
Применяется в namespace argocd
.
Назначение:
Содержит учётные данные для доступа к GitHub Container Registry (GHCR).
Используется Argo Image Updater для чтения информации о тегах и связанных подписях.
Создаётся как Kubernetes Secret в namespace argocd
.
-
Dockerfile
Добавляются стандартные OCI-метки (source
,revision
,created
) для каждого сервиса (backend, frontend).
Эти метки позволяют Argo Image Updater отслеживать происхождение и свежесть образов. -
Helm values
В репозиторииhelm-blue-green-canary-gitops-health-api
для каждого сервиса (например,helm/values/backend.yaml
) настраиваются параметрыimage.repository
и аннотации Argo Image Updater.
Это указывает AIU, какие образы обновлять и по каким правилам. -
ConfigMap
В репозиторииgitops-argocd-platform-health-api
создаётсяargocd-image-updater-config.yaml
с глобальной конфигурацией.
Он описывает, с какими registry работает AIU и где хранится ключ cosign для верификации подписей. -
Secret
В том же репозитории добавляетсяSecret
с учётными данными для доступа к GHCR.
Этот секрет используется AIU для скачивания информации о тегах и подписях.
В этот репозиторий внедрён набор DevSecOps-инструментов, обеспечивающих контроль качества и безопасности GitOps-манифестов.
Назначение:
Проверка синтаксиса и стиля YAML-файлов.
Предотвращает ошибки форматирования и обеспечивает единый стандарт оформления.
Назначение:
Анализ Kubernetes-манифестов с помощью Checkov.
Выявляет небезопасные практики: использование latest
образов, отсутствие ресурсов, некорректные Ingress и т.д.
Назначение:
OPA-политики для Argo CD Application
.
Запрещают:
- использование
targetRevision: HEAD
, - отключение
prune
иselfHeal
вsyncPolicy
.
Гарантируют корректную и безопасную конфигурацию Argo CD-приложений.
Назначение:
Поиск секретов в коммитах и файлах.
Предотвращает утечку токенов, паролей и других чувствительных данных в Git.
Назначение:
Автоматический запуск проверок перед коммитом (yamllint
, checkov
, gitleaks
).
Позволяет выявлять проблемы ещё до попадания изменений в репозиторий.
В результате обеспечивается базовое покрытие DevSecOps: от синтаксиса и стиля YAML до поиска секретов и применения политик безопасности для Argo CD.