TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #162 126
Развертываем tetragon с помощью fluxCD

Тетрагон работает по технологии eBPF и позволяет мониторить и даже запрещать разное на уровне ядра Linux. Подробнее тут.

В директории apps создадим директорию tetragon.
Структура этой директории с файлами:
├── helmrelease.yaml
├── kustomization.yaml
├── namespace.yaml
└── repository.yaml


helmrelease.yaml:
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: tetragon
namespace: tetragon
spec:
interval: 1h0m0s
releaseName: tetragon
install: # override existing tetragon CRDs
crds: CreateReplace
remediation:
retries: 3
upgrade: # update tetragon CRDs
crds: CreateReplace
chart:
spec:
chart: tetragon
version: 1.4.0
sourceRef:
kind: HelmRepository
name: cilium
namespace: flux-system


Без values. Они у каждого свои, но их можно описать прямо в этом файле.

repository.yaml - подключаем репозиторий.
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cilium
namespace: flux-system
spec:
interval: 1h
url: https://helm.cilium.io


namespace.yaml - обычный манифест namespace-а.

и kustomization.yaml - там подключаем всё вместе.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- repository.yaml
- helmrelease.yaml


Далее у меня в директории clusters описаны разные кластера k8s и в каждой есть директория apps, для "патча" всякого под кластер. В случае tetragon, вот пример patch-values.yaml для тестового кластера:
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: tetragon
namespace: tetragon
spec:
values:
tetragon:
exportAllowList: |-
{"namespace":["default"],"event_set":["PROCESS_EXEC", "PROCESS_EXIT", "PROCESS_KPROBE", "PROCESS_UPROBE", "PROCESS_TRACEPOINT"]}
exportDenyList: |-
{"health_check":true}
{"namespace":["", "kube-system", "cloudquery", "flux-system", "kyverno", "logging", "monitoring", "system-serviceaccounts", "keda", "tetragon", "ingress-nginx"]}
clusterName: "<cluster-name>"
enableK8sAPI: true
enableProcessCred: true
enableProcessNs: false

Мы экспортируем события, связанные с процессами (PROCESS_*), только из namespace default, исключая системные namespace’ы через deny-лист.

И kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../../apps/tetragon
- ../../../policies/tetragon/privileges-raise.yaml
- ../../../policies/tetragon/dns-only-specified-servers.yaml
- ../../../policies/tetragon/tcp-listen.yaml
patches:
- path: patch-values.yaml
target:
kind: HelmRelease
name: tetragon
namespace: tetragon


Политики (policies) лежат отдельно на одном уровне с общим apps.
Структура tetragon внутри конкретного кластера.
├── apps
│   ├── tetragon
│   │   ├── kustomization.yaml
│   │   └── patch-values.yaml


#tetragon #fluxcd
  • 👍 1
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 →