Tetragon#

Tetragon - инструмент безопасности, аудита и мониторинга уровня процессов в Kubernetes. Он использует технологию eBPF для отслеживания системных вызовов (syscalls), выполнения команд, сетевой активности и других событий внутри контейнеров и хостовых систем без необходимости модификации приложений.

Основные задачи и возможности
  • Отслеживание выполнения команд (exec tracing):

    Регистрирует запуск бинарных файлов внутри pod, что позволяет выявлять подозрительную активность (например, запуск bash, wget или nc).

  • Контроль безопасности с помощью политик eBPF:

    Позволяет блокировать или предупреждать о выполнении определенных команд по правилам (например, запретить strace или tcpdump).

  • Аудит и сбор событий в реальном времени:

    Генерирует события аудита, которые могут быть отправлены в SIEM-системы, Loki, Kafka или другие системы анализа.

  • Интеграция с Cilium и Hubble:

    Работает как часть экосистемы Cilium, дополняя сетевую безопасность детальной видимостью на уровне ОС.

  • Низкий уровень накладных расходов:

    Использование eBPF обеспечивает высокую эффективность и масштабируемость, даже в больших кластерах.

  • Поддержка Kubernetes-native подхода:

    Политики и конфигурации управляются через CRD, что позволяет применять их декларативно, как обычные манифесты.

Примечание

Tetragon не является инструментом по умолчанию в компоненте Security. Его можно установить как инструмент (Tool) или явно включить в список spec.tools при установке компонента Security.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем tetragon и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

enabled - включить развертывание Helm chart Tetragon#

Параметр

Описание

Значение по умолчанию

enabled

Включает установку chart целиком

true

imagePullSecrets - определить секреты для загрузки образов из приватных реестров#

Параметр

Описание

Значение по умолчанию

imagePullSecrets

Список секретов Kubernetes, используемых для загрузки контейнерных образов

[]

priorityClassName - определить PriorityClass для pod агента Tetragon#

Параметр

Описание

Значение по умолчанию

priorityClassName

Имя PriorityClass, назначаемое pod Tetragon

""

imagePullPolicy - определить политику загрузки образов Tetragon#

Параметр

Описание

Значение по умолчанию

imagePullPolicy

Политика загрузки контейнерных образов, например Always, IfNotPresent или Never

IfNotPresent

serviceAccount - определить настройки ServiceAccount для pod Tetragon#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создавать отдельный ServiceAccount для Tetragon

true

serviceAccount.annotations

Аннотации для ServiceAccount Tetragon

{}

serviceAccount.name

Имя существующего или создаваемого ServiceAccount; пустое значение означает автогенерацию имени

""

podAnnotations - определить дополнительные аннотации для pod Tetragon#

Параметр

Описание

Значение по умолчанию

podAnnotations

Дополнительные аннотации, которые будут добавлены на pod Tetragon

{}

podSecurityContext - определить pod-level securityContext для Tetragon#

Параметр

Описание

Значение по умолчанию

podSecurityContext

Настройки securityContext на уровне pod для Tetragon

{}

nodeSelector - определить правила выбора узлов для Tetragon#

Параметр

Описание

Значение по умолчанию

nodeSelector

Node selector для размещения pod Tetragon на подходящих узлах

{}

tolerations - определить tolerations для pod Tetragon#

Параметр

Описание

Значение по умолчанию

tolerations

Список tolerations, позволяющий запускать pod Tetragon на tainted-узлах

- operator: Exists

affinity - определить affinity-правила для pod Tetragon#

Параметр

Описание

Значение по умолчанию

affinity

Affinity и anti-affinity правила для размещения pod Tetragon

{}

extraHostPathMounts - определить дополнительные hostPath-монтирования для pod Tetragon#

Параметр

Описание

Значение по умолчанию

extraHostPathMounts

Дополнительные hostPath-монтирования, подключаемые в pod Tetragon

[]

extraConfigmapMounts - определить дополнительные монтирования ConfigMap для pod Tetragon#

Параметр

Описание

Значение по умолчанию

extraConfigmapMounts

Дополнительные монтирования ConfigMap в pod Tetragon

[]

daemonSetAnnotations - определить аннотации для DaemonSet Tetragon#

Параметр

Описание

Значение по умолчанию

daemonSetAnnotations

Аннотации, применяемые к объекту DaemonSet Tetragon

{}

extraVolumes - определить дополнительные volumes для pod Tetragon#

Параметр

Описание

Значение по умолчанию

extraVolumes

Дополнительные volumes, подключаемые к pod Tetragon

[]

updateStrategy - определить стратегию обновления DaemonSet Tetragon#

Параметр

Описание

Значение по умолчанию

updateStrategy

Стратегия обновления для DaemonSet Tetragon

{}

podLabels - определить дополнительные labels для pod Tetragon#

Параметр

Описание

Значение по умолчанию

podLabels

Дополнительные labels, добавляемые на pod Tetragon

{}

daemonSetLabelsOverride - определить переопределяемые labels для DaemonSet Tetragon#

Параметр

Описание

Значение по умолчанию

daemonSetLabelsOverride

Набор labels, полностью или частично переопределяющий labels DaemonSet Tetragon

{}

selectorLabelsOverride - определить переопределяемые selector labels для ресурсов Tetragon#

Параметр

Описание

Значение по умолчанию

selectorLabelsOverride

Набор labels для переопределения selector-меток ресурсов Tetragon

{}

podLabelsOverride - определить переопределяемые labels для pod Tetragon#

Параметр

Описание

Значение по умолчанию

podLabelsOverride

Набор labels для переопределения labels pod Tetragon

{}

serviceLabelsOverride - определить переопределяемые labels для Service Tetragon#

Параметр

Описание

Значение по умолчанию

serviceLabelsOverride

Набор labels для переопределения labels сервисов Tetragon

{}

dnsPolicy - определить DNS policy для pod Tetragon#

Параметр

Описание

Значение по умолчанию

dnsPolicy

DNS policy для pod Tetragon, например Default, ClusterFirst или ClusterFirstWithHostNet

Default

exportDirectory - определить каталог для JSON-экспорта событий Tetragon#

Параметр

Описание

Значение по умолчанию

exportDirectory

Путь внутри pod, в который Tetragon записывает JSON-файлы экспорта событий

"/var/run/cilium/tetragon"

hostNetwork - определить использование hostNetwork для pod Tetragon#

Параметр

Описание

Значение по умолчанию

hostNetwork

Включает запуск pod Tetragon в сети хоста; требуется для корректной видимости процессов

true

tetragon - определить настройки агента Tetragon#

Параметр

Описание

Значение по умолчанию

tetragon.enabled

Включает развертывание агента Tetragon

true

tetragon.nameOverride

Переопределяет имя ресурсов агента Tetragon

""

tetragon.image.override

Полностью переопределяет образ контейнера агента Tetragon

~

tetragon.image.repository

Репозиторий образа агента Tetragon

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-tetragon/tetragon'

tetragon.image.tag

Тег образа агента Tetragon

v1.6.0

tetragon.resources

Ресурсные requests и limits для контейнера агента Tetragon

{}

tetragon.extraArgs

Дополнительные аргументы командной строки для агента Tetragon

{}

tetragon.extraEnv

Дополнительные переменные окружения для контейнера агента Tetragon

[]

tetragon.podAnnotations.enabled

Включает добавление аннотаций на pod агента Tetragon

false

tetragon.extraVolumeMounts

Дополнительные volumeMounts для контейнера агента Tetragon

[]

tetragon.securityContext.privileged

Запускает контейнер агента Tetragon в привилегированном режиме

true

tetragon.livenessProbe

Переопределяет стандартную livenessProbe контейнера Tetragon

{}

tetragon.processCacheSize

Размер LRU-кеша процессов, используемого для поиска предков последующих exec-событий

65536

tetragon.debug

Включает режим отладки агента Tetragon

false

tetragon.exportFilename

Имя файла JSON-экспорта; пустая строка отключает файловый JSON-экспорт

tetragon.log

tetragon.exportFilePerm

Права доступа к файлу JSON-экспорта в строковом виде, например 600, 640 или 644

"600"

tetragon.exportFileMaxSizeMB

Размер файла JSON-экспорта в мегабайтах, после которого выполняется ротация

10

tetragon.exportFileMaxBackups

Количество ротированных файлов JSON-экспорта, сохраняемых на диске

5

tetragon.exportFileCompress

Сжимать ротированные файлы JSON-экспорта

false

tetragon.exportRateLimit

Лимит экспорта событий в минуту; значение -1 отключает ограничение

-1

tetragon.exportAllowList

Allowlist для JSON-экспорта событий, позволяющий ограничить набор экспортируемых событий

(complex)

tetragon.exportDenyList

Denylist для JSON-экспорта в файловые sink’и; не влияет на gRPC-вывод

(complex)

tetragon.fieldFilters

Фильтры включения и исключения полей событий Tetragon; при наличии INCLUDE-фильтра остальные поля по умолчанию исключаются

""

tetragon.redactionFilters

Фильтры маскирования секретов в args полях событий на основе RE2-выражений и, при необходимости, фильтрации по binary_regex

""

tetragon.clusterName

Имя кластера, записываемое в поле cluster_name в сообщениях GetEventsResponse

""

tetragon.enableK8sAPI

Разрешает обращение к Kubernetes API для связывания событий Tetragon с podи Kubernetes

true

tetragon.enableProcessCred

Включает видимость Linux capabilities в exec- и kprobe-событиях

false

tetragon.enableProcessNs

Включает видимость namespaces в exec- и kprobe-событиях

false

tetragon.processAncestors.enabled

Список через запятую типов событий, для которых нужно собирать сведения о предках процесса; поддерживаются base, kprobe, tracepoint, uprobe и lsm

""

tetragon.btf

Абсолютный путь к BTF-файлу для явной передачи через опцию –btf

""

tetragon.commandOverride

Полностью переопределяет команду запуска контейнера агента Tetragon

[]

tetragon.argsOverride

Полностью переопределяет аргументы запуска контейнера агента Tetragon

[]

tetragon.prometheus.enabled

Включает экспорт метрик Tetragon в формате Prometheus

true

tetragon.prometheus.address

Адрес, на котором публикуются метрики; пустая строка означает все доступные интерфейсы

""

tetragon.prometheus.port

Порт публикации метрик Prometheus

2112

tetragon.prometheus.metricsLabelFilter

Список через запятую labels метрик, которые нужно включить; поддерживаются namespace, workload, pod и binary

"namespace,workload,pod,binary"

tetragon.prometheus.serviceMonitor.enabled

Создавать ресурс ServiceMonitor для scrape метрик pod Tetragon

true

tetragon.prometheus.serviceMonitor.labelsOverride

Набор labels для переопределения labels ресурса ServiceMonitor Tetragon

{}

tetragon.prometheus.serviceMonitor.extraLabels

Дополнительные labels для ресурса ServiceMonitor Tetragon

{}

tetragon.prometheus.serviceMonitor.scrapeInterval

Интервал опроса метрик ServiceMonitor; если не задан, используется глобальный интервал Prometheus

60s

tetragon.grpc.enabled

Включает публикацию gRPC-интерфейса Tetragon

true

tetragon.grpc.address

Адрес публикации gRPC, например localhost:54321 или unix-сокет

"localhost:54321"

tetragon.gops.enabled

Включает публикацию gops-сервера

true

tetragon.gops.address

Адрес публикации gops-сервера

"localhost"

tetragon.gops.port

Порт публикации gops-сервера

8118

tetragon.pprof.enabled

Включает публикацию pprof-сервера

false

tetragon.pprof.address

Адрес публикации pprof-сервера

"localhost"

tetragon.pprof.port

Порт публикации pprof-сервера

6060

tetragon.enablePolicyFilter

Включает policy filter; требуется для фильтрации по namespace Kubernetes и pod labels

True

tetragon.enablePolicyFilterCgroupMap

Включает cgroup map для policy filter

false

tetragon.enablePolicyFilterDebug

Включает отладочные сообщения policy filter

false

tetragon.enableMsgHandlingLatency

Включает мониторинг задержек обработки сообщений

false

tetragon.healthGrpc.enabled

Включает health gRPC-сервер агента Tetragon

true

tetragon.healthGrpc.port

Порт публикации health gRPC-сервера

6789

tetragon.healthGrpc.interval

Интервал проверки состояния агента

10

tetragon.hostProcPath

Путь к файловой системе proc хоста в окружении выполнения

"/proc"

tetragon.eventCacheRetries

Количество повторных попыток в кеше событий Tetragon

15

tetragon.eventCacheRetryDelay

Задержка в секундах между повторными попытками в кеше событий Tetragon

2

tetragon.enableKeepSensorsOnExit

Сохраняет enforcement policy активной даже после завершения процесса Tetragon

false

tetragon.processCacheGCInterval

Интервал запуска сборщика мусора кеша процессов

30s

tetragon.cri.enabled

Настраивает pod Tetragon на доступ к CRI, работающему на хосте

false

tetragon.cri.socketHostPath

Путь на хосте к сокету CRI, например containerd или CRI-O

""

tetragon.cgidmap.enabled

Включает использование cgroup id вместо имен cgroup для связывания pod; зависит от включенного CRI

false

tetragonOperator - определить настройки Tetragon Operator#

Параметр

Описание

Значение по умолчанию

tetragonOperator.enabled

Включает развертывание Tetragon Operator

true

tetragonOperator.nameOverride

Переопределяет имя Deployment Tetragon Operator

""

tetragonOperator.replicas

Количество реплик Deployment Tetragon Operator

1

tetragonOperator.failoverLease.enabled

Включает механизм lease-based failover для нескольких реплик оператора

false

tetragonOperator.failoverLease.namespace

Namespace для создания Lease-ресурса; при пустом значении используется namespace установки Tetragon

""

tetragonOperator.failoverLease.leaseDuration

Максимальная длительность отсутствия обновления lease, после которой лидер считается недоступным

15s

tetragonOperator.failoverLease.leaseRenewDeadline

Интервал, с которым лидер пытается продлить lease

5s

tetragonOperator.failoverLease.leaseRetryPeriod

Пауза между повторными попытками продления lease при ошибке

2s

tetragonOperator.annotations

Аннотации для Deployment Tetragon Operator

{}

tetragonOperator.podAnnotations

Аннотации для pod Tetragon Operator

{}

tetragonOperator.extraLabels

Дополнительные labels для Deployment Tetragon Operator

{}

tetragonOperator.extraPodLabels

Дополнительные labels для pod Tetragon Operator

{}

tetragonOperator.priorityClassName

Имя PriorityClass для pod Tetragon Operator

""

tetragonOperator.serviceAccount.create

Создавать отдельный ServiceAccount для Tetragon Operator

true

tetragonOperator.serviceAccount.annotations

Аннотации для ServiceAccount Tetragon Operator

{}

tetragonOperator.serviceAccount.name

Имя существующего или создаваемого ServiceAccount оператора; пустое значение означает автогенерацию имени

""

tetragonOperator.podSecurityContext

Настройки securityContext на уровне pod для Tetragon Operator

{}

tetragonOperator.securityContext.allowPrivilegeEscalation

Разрешает повышение привилегий в контейнере Tetragon Operator

false

tetragonOperator.securityContext.capabilities.drop

Список Linux capabilities, удаляемых у контейнера Tetragon Operator

- "ALL"

tetragonOperator.resources.limits.cpu

CPU limit контейнера Tetragon Operator

500m

tetragonOperator.resources.limits.memory

Memory limit контейнера Tetragon Operator

128Mi

tetragonOperator.resources.requests.cpu

CPU request контейнера Tetragon Operator

10m

tetragonOperator.resources.requests.memory

Memory request контейнера Tetragon Operator

64Mi

tetragonOperator.strategy.type

Тип стратегии обновления Deployment Tetragon Operator

RollingUpdate

tetragonOperator.strategy.rollingUpdate.maxSurge

Максимальное количество дополнительных pod при rolling update

1

tetragonOperator.strategy.rollingUpdate.maxUnavailable

Максимальное количество недоступных pod при rolling update

0

tetragonOperator.nodeSelector

Node selector для размещения pod Tetragon Operator

{}

tetragonOperator.tolerations

Список tolerations для pod Tetragon Operator

[]

tetragonOperator.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution

Предпочтительные anti-affinity правила для разнесения pod оператора по разным узлам

(complex)

tetragonOperator.image.override

Полностью переопределяет образ контейнера Tetragon Operator

~

tetragonOperator.image.repository

Репозиторий образа Tetragon Operator

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-tetragon/tetragon-operator'

tetragonOperator.image.tag

Тег образа Tetragon Operator

v1.6.0

tetragonOperator.image.pullPolicy

Политика загрузки образа Tetragon Operator

IfNotPresent

tetragonOperator.extraVolumes

Дополнительные volumes для Deployment Tetragon Operator

[]

tetragonOperator.extraVolumeMounts

Дополнительные volumeMounts для контейнера Tetragon Operator

[]

tetragonOperator.forceUpdateCRDs

Принудительно обновлять CRD при работе оператора

false

tetragonOperator.podInfo.enabled

Включает CRD PodInfo и контроллер, который синхронизирует ресурсы PodInfo

false

tetragonOperator.tracingPolicy.enabled

Включает создание CRD TracingPolicy и TracingPolicyNamespaced

true

tetragonOperator.prometheus.enabled

Включает метрики Tetragon Operator

true

tetragonOperator.prometheus.address

Адрес публикации метрик Tetragon Operator; пустая строка означает все интерфейсы

""

tetragonOperator.prometheus.port

Порт публикации метрик Tetragon Operator

2113

tetragonOperator.prometheus.serviceMonitor.enabled

Создавать ServiceMonitor для метрик Tetragon Operator

true

tetragonOperator.prometheus.serviceMonitor.labelsOverride

Набор labels для переопределения labels ServiceMonitor оператора

{}

tetragonOperator.prometheus.serviceMonitor.extraLabels

Дополнительные labels для ServiceMonitor Tetragon Operator

{}

tetragonOperator.prometheus.serviceMonitor.scrapeInterval

Интервал опроса метрик ServiceMonitor оператора; если не задан, используется глобальный интервал Prometheus

60s

export - определить настройки экспорта событий Tetragon#

Параметр

Описание

Значение по умолчанию

export.mode

Режим экспорта событий; значение stdout включает sidecar для вывода в stdout, пустая строка отключает экспорт

"stdout"

export.resources

Ресурсные requests и limits для контейнера экспорта событий

{}

export.securityContext

Настройки securityContext для контейнера экспорта событий

{}

export.filenames

Список файлов, которые fluentd должен отслеживать и экспортировать

- tetragon.log

export.stdout.extraEnv

Дополнительные переменные окружения для контейнера export-stdout

[]

export.stdout.extraEnvFrom

Дополнительные источники envFrom для контейнера export-stdout, например configMapRef или secretRef

[]

export.stdout.envFromSecrets

Упрощенный способ добавить secret-ссылки в envFrom; можно указывать строкой или объектом с дополнительными параметрами

[]

export.stdout.enabledCommand

Добавлять команду в manifest для контейнера export-stdout; при false используется команда образа по умолчанию

true

export.stdout.enabledArgs

Добавлять аргументы в manifest для контейнера export-stdout; при false используются аргументы образа по умолчанию

true

export.stdout.commandOverride

Явное переопределение команды контейнера export-stdout

[]

export.stdout.argsOverride

Явное переопределение аргументов контейнера export-stdout

[]

export.stdout.extraVolumeMounts

Дополнительные volumeMounts для pod экспорта в stdout

[]

export.stdout.image.override

Полностью переопределяет образ контейнера export-stdout

~

export.stdout.image.repository

Репозиторий образа sidecar-контейнера hubble-export-stdout

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-hubble-export-stdout/hubble-export-stdout'

export.stdout.image.tag

Тег образа sidecar-контейнера hubble-export-stdout

v1.1.1

crds - определить способ установки CRD для Tetragon#

Параметр

Описание

Значение по умолчанию

crds.installMethod

Метод установки CRD; поддерживаются operator, helm и none

"operator"

rthooks - определить настройки runtime hooks Tetragon#

Параметр

Описание

Значение по умолчанию

rthooks.enabled

Включает daemonset tetragon-rthooks для установки runtime hooks на хостах

false

rthooks.nameOverride

Переопределяет имя ресурсов tetragon-rthooks

""

rthooks.interface

Интерфейс установки runtime hooks; поддерживаются oci-hooks и nri-hook

""

rthooks.annotations

Аннотации для daemonset tetragon-rthooks

{}

rthooks.extraLabels

Дополнительные labels для daemonset tetragon-rthooks

{}

rthooks.podAnnotations

Аннотации для pod tetragon-rthooks

{}

rthooks.priorityClassName

Имя PriorityClass для pod tetragon-rthooks

""

rthooks.podSecurityContext

Настройки securityContext на уровне pod для tetragon-rthooks

{}

rthooks.installDir

Путь на хосте, куда будет установлен бинарный файл tetragon-oci-hook

"/opt/tetragon"

rthooks.failAllowNamespaces

Список namespace через запятую, для которых разрешено создание pod при недоступности tetragon-oci-hook; namespace установки Tetragon добавляется автоматически

""

rthooks.extraVolumeMounts

Дополнительные volumeMounts для init-контейнера oci-hook-setup

[]

rthooks.resources

Ресурсные requests и limits для init-контейнера oci-hook-setup

{}

rthooks.extraHookArgs

Дополнительные аргументы, передаваемые в tetragon-oci-hook

{}

rthooks.ociHooks.hooksPath

Каталог установки JSON-файла hook для интерфейса oci-hooks

"/usr/share/containers/oci/hooks.d"

rthooks.nriHook.nriSocket

Путь к сокету NRI для интерфейса nri-hook

"/var/run/nri/nri.sock"

rthooks.image.override

Полностью переопределяет образ контейнера tetragon-rthooks

~

rthooks.image.repository

Репозиторий образа tetragon-rthooks

quay.io/cilium/tetragon-rthooks

rthooks.image.tag

Тег образа tetragon-rthooks

v0.5

rthooks.serviceAccount.name

Имя ServiceAccount для tetragon-rthooks; пустое значение означает использование имени по умолчанию

""