Go to file
2026-04-23 19:09:37 +03:00
apps add 13 chart 2026-04-23 19:09:37 +03:00
clusters contracts,notes,mapper 2026-04-23 13:32:16 +03:00
infrastructure test 2026-04-16 14:38:18 +03:00
.gitignore Update .gitignore 2026-04-07 15:09:41 +00:00
README.md Initial setup of FluxCD v2 monorepo with Kustomize overlays and Helm releases 2026-04-07 11:11:00 +03:00

FluxCD v2 Monorepo

Репозиторий Infrastructure as Code, управляемый FluxCD v2 с использованием Kustomize-оверлеев и Helm-релизов.

Структура репозитория

├── clusters/                       # Точка входа для каждого кластера (Flux читает отсюда)
│   └── contour/                    # Кластер contour
│       ├── flux-system/            # Автогенерируется через `flux bootstrap` (не редактировать)
│       ├── helm-repositories.yaml  # Определения HelmRepository
│       ├── infrastructure.yaml     # Flux Kustomization → ./infrastructure
│       └── apps.yaml               # Flux Kustomization → ./apps
│
├── infrastructure/                 # Инфраструктурные компоненты
│   ├── kustomization.yaml          # Список всех инфра-сервисов
│   └── example-infra/              # Пример инфра-компонента
│       ├── kustomization.yaml      # Собирает base + patches
│       ├── base/                   # Базовые манифесты (namespace, HelmRelease)
│       └── patches/                # Патчи поверх base
│
├── apps/                           # Прикладные сервисы
│   ├── kustomization.yaml          # Список всех приложений
│   └── example-app/                # Пример приложения
│       ├── kustomization.yaml      # Собирает base + patches
│       ├── base/                   # Базовые манифесты (Deployment, Service, ConfigMap)
│       └── patches/                # Патчи поверх base

Как это работает

Flux отслеживает директорию clusters/<имя-кластера>/. Каждый кластер содержит два Flux Kustomization CRD верхнего уровня:

  1. infrastructure.yaml — реконсилирует ./infrastructure. Содержит HelmReleases и вспомогательные ресурсы.
  2. apps.yaml — реконсилирует ./apps. Содержит Deployments, Services и другие ресурсы приложений.

apps зависит от infrastructure, что гарантирует готовность инфраструктуры до деплоя приложений.

Каждый сервис (в infrastructure/ или apps/) имеет собственную структуру:

  • base/ — базовые манифесты, общие для всех окружений
  • patches/ — патчи, применяемые поверх base
  • kustomization.yaml — на уровне сервиса, собирает base + patches через Kustomize

Начало работы

Бутстрап Flux

flux bootstrap git \
  --url=<URL_ВАШЕГО_РЕПОЗИТОРИЯ> \
  --branch=master \
  --path=clusters/contour

Проверка реконсиляции

flux get kustomizations
flux get helmreleases -A
flux events --watch

Добавление нового инфраструктурного компонента

  1. Создайте директорию с base и patches:

    infrastructure/my-component/
    ├── kustomization.yaml      # resources: [./base], patches: [patches/...]
    ├── base/
    │   ├── kustomization.yaml
    │   ├── namespace.yaml
    │   └── helmrelease.yaml
    └── patches/
        └── values.yaml
    
  2. Зарегистрируйте в infrastructure/kustomization.yaml:

    resources:
      - example-infra
      - my-component    # Добавьте эту строку
    
  3. Если нужен новый HelmRepository, добавьте его в clusters/<кластер>/helm-repositories.yaml.

Добавление нового приложения

  1. Создайте директорию с base и patches:

    apps/my-app/
    ├── kustomization.yaml      # resources: [./base], patches: [patches/...]
    ├── base/
    │   ├── kustomization.yaml
    │   ├── namespace.yaml
    │   ├── deployment.yaml
    │   └── service.yaml
    └── patches/
        └── replicas.yaml
    
  2. Зарегистрируйте в apps/kustomization.yaml:

    resources:
      - example-app
      - my-app          # Добавьте эту строку
    

Добавление нового кластера

  1. Создайте точку входа clusters/<имя>/ с infrastructure.yaml, apps.yaml и helm-repositories.yaml
  2. Выполните бутстрап Flux с --path=clusters/<имя>

Справочник API-версий

Ресурс apiVersion
Kustomization kustomize.toolkit.fluxcd.io/v1
GitRepository source.toolkit.fluxcd.io/v1
HelmRepository source.toolkit.fluxcd.io/v1
HelmRelease helm.toolkit.fluxcd.io/v2