Post #162
126
Развертываем tetragon с помощью fluxCD
Тетрагон работает по технологии eBPF и позволяет мониторить и даже запрещать разное на уровне ядра Linux. Подробнее тут.
В директории
Структура этой директории с файлами:
helmrelease.yaml:
Без values. Они у каждого свои, но их можно описать прямо в этом файле.
repository.yaml - подключаем репозиторий.
namespace.yaml - обычный манифест namespace-а.
и kustomization.yaml - там подключаем всё вместе.
Далее у меня в директории
Мы экспортируем события, связанные с процессами (PROCESS_*), только из namespace default, исключая системные namespace’ы через deny-лист.
И kustomization.yaml:
Политики (policies) лежат отдельно на одном уровне с общим
Структура tetragon внутри конкретного кластера.
#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