GitOps-репозиторий для управления Kubernetes-инфраструктурой через ArgoCD.
├── clusters/ # Конфигурации окружений
│ ├── dev/ # Development кластер
│ └── prd/ # Production кластер
├── platform/ # Платформенные компоненты
│ ├── core/ # Bootstrap ArgoCD, RBAC
│ ├── gitops/ # ApplicationSets, Image Updater
│ ├── infrastructure/ # Инфраструктура (nginx, cert-manager, storage)
│ └── observability/ # Мониторинг (Grafana, Loki, OTEL)
├── tenants/ # Приложения команд
│ └── product-team/ # Tenant: product-team
├── policies/ # OPA Rego политики
└── .github/workflows/ # CI валидация
- Root Application (
platform/core/cluster-bootstrap/app-of-apps.yaml) указывает наclusters/<env>/ - Kustomization (
clusters/<env>/kustomization.yaml) собирает все ArgoCD Applications - Патчи подставляют правильный destination кластер через
destination.yaml
Git Push → ArgoCD → Sync Applications → Kubernetes
↑
argocd-image-updater (автообновление образов)
Порядок деплоя контролируется через argocd.argoproj.io/sync-wave:
0— Ingress, базовая инфраструктура5— Приложения (chat-api)
| Компонент | Описание |
|---|---|
| ingress-nginx | Ingress controller |
| cert-manager | TLS сертификаты (Let's Encrypt) |
| external-dns | DNS записи в Cloudflare |
| sealed-secrets | Шифрование секретов в git |
| external-secrets | Синхронизация секретов из внешних хранилищ |
| reflector | Репликация секретов между namespace |
| longhorn | Distributed storage |
| Компонент | Описание |
|---|---|
| Grafana | Дашборды и визуализация |
| Loki | Агрегация логов |
| OTEL Collector | Сбор телеметрии |
| Компонент | Описание |
|---|---|
| Open WebUI | UI для LLM моделей |
- Создай директорию в
tenants/<team>/apps/<app>/base/ - Добавь
application.yamlс ArgoCD Application - Добавь
kustomization.yaml - Включи в
clusters/<env>/kustomization.yaml:resources: - ../../tenants/<team>/apps/<app>/base
Для автоматического обновления версий используется argocd-image-updater:
annotations:
argocd-image-updater.argoproj.io/image-list: app=ghcr.io/org/app:^1
argocd-image-updater.argoproj.io/app.update-strategy: semver
argocd-image-updater.argoproj.io/write-back-method: gitGitHub Actions валидирует манифесты на каждый PR:
- Kustomize build — рендеринг манифестов
- Kubeconform — валидация против JSON схем
- OPA — проверка политик безопасности
- Контейнеры должны иметь limits (cpu, memory)
- Обязательные probes (liveness, readiness)
- Запуск не от root (
runAsNonRoot: true) - Наличие namespace
- OTEL endpoint для телеметрии
# Рендеринг манифестов
kubectl kustomize clusters/dev/
# Валидация
kubeconform -summary -strict <(kubectl kustomize clusters/dev/)
# Проверка политик
opa eval -f pretty -d policies/ -i rendered.yaml "data.kubernetes.deny[msg]"- Kubernetes кластер
- ArgoCD установлен в namespace
argocd - Доступ к GitHub репозиторию
MIT