TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #165 114
GitOps с FluxCD на примере проекта opencti

Есть чарт с проектом opencti. У нас есть цель из одного git репозитория подключить его в другой, где лежит flux.

Пример структуры opencti репозитория:
 $ tree
.
├── base
│   ├── harbor-creds-secret.yaml
│   ├── helmrelease.yaml
│   ├── kustomization.yaml
│   ├── rabbitmq-endpoint.yaml
│   ├── rabbitmq-svc.yaml
│   ├── repository.yaml
│   ├── tls-secret.yaml
│   ├── vault-auth-sa-token.yaml
│   └── vault-auth-sa.yaml
├── overlays
│   ├── ingest
│   │   ├── kustomization.yaml
│   │   └── opencti-ingest-release.yaml
│   └── web
│   ├── kustomization.yaml
│   └── opencti-web-release.yaml
└── README.md


Выше - базовый слой + несколько оверлеев, которые переопределяют базу. Все работает, если просто выполнить например:
kubectl apply -k overlays/<overlay_name>


Но, мы хотим полноценный GitOps и у нас есть flux репозиторий.
Там на уровне кластера подключаем следующие файл:
1. GitRepository
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: opencti
namespace: flux-system
spec:
interval: 1m0s
url: ssh://git@<domain>/path/to/opencti.git
ref:
branch: main
secretRef:
name: opencti-git-secret


Это "указатель" на то, что смотреть мы будем не во flux репо, а другой гит репозиторий.

2. Secret для авторизации в гите. У меня это ssh ключи для flux. Секрет должен иметь вид:
apiVersion: v1
kind: Secret
metadata:
name: opencti-git-secret
namespace: flux-system
stringData:
identity: ""
identity.pub: ""
known_hosts: ""
type: Opaque


3. Kustomization для оверлея веб.
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: opencti-web
namespace: flux-system
spec:
interval: 2m
path: ./overlays/web
prune: true
targetNamespace: opencti
sourceRef:
kind: GitRepository
name: opencti
namespace: flux-system
wait: true
timeout: 10m0s
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
name: opencti-web


4. Тоже самое для ingest оверлея.
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: opencti-ingest
namespace: flux-system
spec:
interval: 2m
path: ./overlays/ingest
prune: true
targetNamespace: opencti
sourceRef:
kind: GitRepository
name: opencti
namespace: flux-system
wait: true
timeout: 10m0s
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
name: opencti-ingest


Ну и основной kustomization, где все подключаем:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- repository.yaml
- repository-secret.yaml
- kustomization-web.yaml
- kustomization-ingest.yaml


Затем эту директорию подключаем в kustomization уровнем выше, у меня это уровень кластера.

#fluxcd
  • 👍 2
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →