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 это вообще находка. Какие же преимущества он даёт?
- Zero overhead — no sidecars, agents, не ест CPU/память приложений
- Deep insights — system calls, network flows, file operations в real-time
- Security at scale — runtime detection аномалий, policy enforcement
- Unified platform — networking + observability + security в одном стеке
Архитектура 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, интеграцией с существующим мониторингом.
Production-ready мониторинг с eBPF
Какие же метрики самые важные для боевого мониторинга с использованием eBPF-стека? Мы выбрали самые критичные, чтобы держать руку на пульсе production.
| Компонент | Ключевые метрики | Алерты |
|---|---|---|
| Cilium CNI | BPF map pressure, connection tracking, L7 proxy latency | eBPF program failures, policy violations |
| Hubble | Network flows/sec, L7 requests, DNS resolution time | Anomalous traffic patterns, connectivity issues |
| Tetragon | Process spawns, file access events, syscall frequency | Suspicious 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
- eBPF map sizing — увеличить размеры map'ов для high-throughput сетей
- CPU pinning — изоляция eBPF processing threads от application CPU
- Memory allocation — tuning BPF ring buffer размеров
- Kernel version — минимум 5.10+ для полной eBPF feature support
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-кластеров. Это не просто инструмент — это необходимость.
