· 16 мин чтения

eBPF Observability Stack для Kubernetes: Cilium + Hubble + Tetragon в production

eBPF Observability Stack для Kubernetes: Cilium + Hubble + Tetragon в production

Привет! Меня зовут Семёнов Евгений Сергеевич, я директор ITFresh. Слышали о eBPF? К 2026 году уже 67% боевых Kubernetes-кластеров будут активно использовать eBPF для сетевых операций и мониторинга – это не просто тренд, это новая реальность! И почему, как думаете? eBPF-стек открывает невероятные горизонты: вот вам мониторинг без накладных расходов прямо на уровне ядра, вот вам инсайты по безопасности в реальном времени, а ещё – потрясающая производительность сети, и всё это без надоедливых sidecar'ов. Сегодня я покажу, как именно мы в ITFresh смогли внедрить и успешно эксплуатируем в продакшене связку Cilium, Hubble и Tetragon. Наш кластер, а это более 200 подов на 40 нодах, теперь под полным контролем.

Почему eBPF — будущее Kubernetes observability

Что такое eBPF? Это мощнейший extended Berkeley Packet Filter, который орудует прямо в ядре Linux. Он позволяет инструментировать приложения, давая вам инструменты, не требуя при этом ни строчки изменения кода. А для Kubernetes это вообще находка. Какие же преимущества он даёт?

Архитектура eBPF Observability Stack

# Core eBPF Stack для K8s
┌─────────────────────────────────────────┐
│ Grafana + Prometheus (visualization)    │
├─────────────────────────────────────────┤
│ Hubble UI + CLI (network observability) │
├─────────────────────────────────────────┤
│ Tetragon (runtime security monitoring)  │
├─────────────────────────────────────────┤
│ Cilium CNI (eBPF networking & L7 proxy) │
├─────────────────────────────────────────┤
│ Linux Kernel (eBPF programs execution)  │
└─────────────────────────────────────────┘

Установка Cilium CNI как основы стека

Cilium — наш фундамент. Это именно тот eBPF-инструмент, который обеспечивает потрясающую сетевую мощь для Kubernetes. Он умеет работать с трафиком на уровнях L3, L4 и даже L7, принуждает политики безопасности, а ещё даёт вам полноценный service mesh — и всё это без единого sidecar'а. Представьте себе!

# 1. Установка Cilium CLI
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable-v2.txt)
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-amd64.tar.gz
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin

# 2. Деплой Cilium с Hubble
cilium install \
  --helm-set hubble.enabled=true \
  --helm-set hubble.relay.enabled=true \
  --helm-set hubble.ui.enabled=true \
  --helm-set prometheus.enabled=true \
  --helm-set operator.prometheus.enabled=true \
  --helm-set hubble.metrics.enabled="{dns,drop,tcp,flow,icmp,http}"

# 3. Проверка статуса
cilium status --wait
cilium connectivity test

Настройка Hubble для network observability

Hubble? Он как ваши глаза в сети! С его помощью мы получаем полную, детальную видимость сетевого трафика. Прямо через eBPF, на всех уровнях: L3, L4, L7.

# Конфигурация Hubble
apiVersion: v1
kind: ConfigMap
metadata:
  name: hubble-config
  namespace: kube-system
data:
  config.yaml: |
    enable-hubble: true
    hubble-socket-path: /var/run/cilium/hubble.sock
    hubble-metrics-server: ":9965"
    hubble-metrics:
    - dns:query,response
    - drop:sourceContext,destinationContext
    - tcp:sourceContext,destinationContext
    - flow:sourceContext,destinationContext
    - icmp:sourceContext,destinationContext
    - http:sourceContext,destinationContext,headers

Развертывание Tetragon для runtime security

А если говорить о безопасности? Тут в игру вступает Tetragon. Это полноценная eBPF-система для мониторинга безопасности, позволяющая отслеживать системные вызовы, каждый доступ к файлам, и выполнение процессов. Ничего не скроется.

# 1. Установка через Helm
helm repo add cilium https://helm.cilium.io/
helm install tetragon cilium/tetragon \
  --namespace kube-system \
  --set tetragon.grpc.enabled=true \
  --set tetragon.prometheus.enabled=true \
  --set tetragon.exportFilename=/var/log/tetragon/tetragon.log

# 2. Tracing policies для security monitoring
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: file-monitoring
spec:
  kprobes:
  - call: "security_file_open"
    syscall: false
    args:
    - index: 0
      type: "file"
    selectors:
    - matchArgs:
      - index: 0
        operator: "Prefix"
        values:
        - "/etc/passwd"
        - "/etc/shadow"
        - "/etc/hosts"

Интеграция с Prometheus и Grafana

Чтобы весь наш observability-пайплайн работал на полную мощность, мы тщательно настраиваем сбор метрик. Это как собрать все кусочки пазла для полной картины.

# ServiceMonitor для Cilium metrics
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: cilium-agent
  namespace: monitoring
spec:
  selector:
    matchLabels:
      k8s-app: cilium
  endpoints:
  - port: prometheus
    interval: 30s
    path: /metrics
---
# ServiceMonitor для Hubble metrics
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: hubble-metrics
  namespace: monitoring
spec:
  selector:
    matchLabels:
      k8s-app: hubble
  endpoints:
  - port: hubble-metrics
    interval: 30s

Нужна помощь с eBPF observability?

Настроили eBPF стек для 20+ enterprise кластеров. Поможем с архитектурой, настройкой Cilium + Hubble + Tetragon, интеграцией с существующим мониторингом.

Написать на boss@itfresh.ru или Telegram @ITfresh_Boss

Production-ready мониторинг с eBPF

Какие же метрики самые важные для боевого мониторинга с использованием eBPF-стека? Мы выбрали самые критичные, чтобы держать руку на пульсе production.

КомпонентКлючевые метрикиАлерты
Cilium CNIBPF map pressure, connection tracking, L7 proxy latencyeBPF program failures, policy violations
HubbleNetwork flows/sec, L7 requests, DNS resolution timeAnomalous traffic patterns, connectivity issues
TetragonProcess spawns, file access events, syscall frequencySuspicious process execution, privilege escalation

Grafana dashboards для eBPF метрик

# Prometheus queries для key eBPF metrics
# Cilium eBPF map usage
cilium_bpf_map_capacity{map_name!=""}

# Network policy drops по Hubble
rate(hubble_drop_total[5m])

# Tetragon process execution events
rate(tetragon_events_total{event_type="process"}[5m])

Security monitoring с Tetragon

Как обнаружить угрозы прямо во время работы? Мы используем продуманные политики безопасности. Вот несколько примеров, которые помогают нам моментально реагировать на инциденты и обеспечивать runtime threat detection.

# Tracing policy для crypto mining detection
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
  name: crypto-mining-detection
spec:
  kprobes:
  - call: "wake_up_new_task"
    syscall: false
    args:
    - index: 0
      type: "task"
    selectors:
    - matchArgs:
      - index: 0
        operator: "InMap"
        values:
        - "xmrig"
        - "minerd"
        - "cpuminer"
        - "stratum"

Performance tuning eBPF в production

Troubleshooting eBPF issues

# Debug eBPF programs
bpftool prog show
bpftool map show

# Проверка Cilium eBPF status
cilium bpf status
cilium monitor

# Hubble debugging
hubble observe --namespace default
hubble status
Какие требования к kernel для eBPF?
Минимум Linux 4.9+ для basic eBPF, рекомендуем 5.10+ для production. Нужна поддержка BPF_PROG_TYPE_XDP, BTF (BPF Type Format). Большинство enterprise дистрибутивов (RHEL 8+, Ubuntu 20.04+) поддерживают out of box.
Влияние eBPF на производительность?
eBPF добавляет <1% CPU overhead при правильной настройке. Зато экономит 10-15% CPU, убирая sidecars и DaemonSet агенты. Network latency практически не увеличивается — eBPF работает в kernel space.
Как мигрировать с traditional CNI на Cilium?
Blue-green миграция через новый node pool с Cilium. Постепенный drain старых нод. Критично протестировать network policies — Cilium использует eBPF вместо iptables, поведение может отличаться.

Заключение

Так что же мы получаем в итоге? Наш eBPF observability stack, собранный из Cilium, Hubble и Tetragon, даёт совершенно беспрецедентный уровень видимости в Kubernetes. И это прямо на уровне ядра! Выгода очевидна: мониторинг без каких-либо накладных расходов, инсайты по безопасности, доступные в реальном времени, плюс единая, мощная сетевая платформа. Мы видим будущее, и в 2026 году eBPF станет де-факто стандартом для всех крупных, корпоративных K8s-кластеров. Это не просто инструмент — это необходимость.

Подпишитесь на рассылку ITfresh

Хотите получать что-то по-настоящему полезное? Каждую неделю мы делимся практическими гайдами! Это и свежие лайфхаки из наших реальных проектов, и советы для IT-руководителей, и важные новости для сисадминов. Мы пишем о безопасности, 1С, сложных миграциях и, конечно, о надёжных резервных копиях. Только практика!

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.