Что такое Cilium?

Cilium — это open-source решение для сетевой безопасности и наблюдаемости в Kubernetes, основанное на eBPF (extended Berkeley Packet Filter) технологии. Cilium обеспечивает networking, security и observability для cloud-native окружений с высокой производительностью и гибкостью.

Основные возможности Cilium

  • eBPF-based networking — высокопроизводительные сетевые операции в ядре Linux
  • Network policies — детальное управление сетевым трафиком
  • Load balancing — L3/L4/L7 балансировка нагрузки
  • Service mesh — встроенные возможности service mesh
  • Observability — мониторинг сетевого трафика и метрики
  • Multi-cluster — связывание кластеров через Cluster Mesh
  • Encryption — автоматическое шифрование трафика

Архитектура Cilium

  • Cilium Agent — DaemonSet на каждом узле кластера
  • Cilium Operator — центральный компонент управления
  • eBPF programs — программы, загружаемые в ядро Linux
  • Hubble — компонент наблюдаемости
  • etcd/Kubernetes API — хранение конфигурации

Установка Cilium

 1# Установка Cilium CLI
 2CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/master/stable.txt)
 3CLI_ARCH=amd64
 4curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
 5sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
 6sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
 7rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
 8
 9# Установка Cilium в кластер
10cilium install
11
12# Проверка статуса
13cilium status --wait
14
15# Установка Hubble для observability
16cilium hubble enable --ui

Пример Network Policy

 1# Cilium Network Policy
 2apiVersion: "cilium.io/v2"
 3kind: CiliumNetworkPolicy
 4metadata:
 5  name: "l3-rule"
 6spec:
 7  endpointSelector:
 8    matchLabels:
 9      app: backend
10  ingress:
11  - fromEndpoints:
12    - matchLabels:
13        app: frontend
14  - toPorts:
15    - ports:
16      - port: "8080"
17        protocol: TCP

L7 Network Policy

 1# HTTP-level политики
 2apiVersion: "cilium.io/v2"
 3kind: CiliumNetworkPolicy
 4metadata:
 5  name: "l7-rule"
 6spec:
 7  endpointSelector:
 8    matchLabels:
 9      app: api-server
10  ingress:
11  - fromEndpoints:
12    - matchLabels:
13        app: web-frontend
14    toPorts:
15    - ports:
16      - port: "80"
17        protocol: TCP
18      rules:
19        http:
20        - method: "GET"
21          path: "/api/v1/.*"

Мониторинг с Hubble

 1# Просмотр сетевого трафика
 2hubble observe
 3
 4# Фильтрация по namespace
 5hubble observe --namespace kube-system
 6
 7# Мониторинг конкретного pod
 8hubble observe --pod backend
 9
10# Просмотр dropped пакетов
11hubble observe --verdict DROPPED
12
13# Hubble UI
14cilium hubble ui

Когда использовать Cilium

  • Высокопроизводительные Kubernetes кластеры
  • Микросервисные архитектуры с детальными сетевыми требованиями
  • Необходимость в L7 network policies
  • Multi-cluster networking
  • Требования к сетевой observability
  • Service mesh функциональность без дополнительных sidecar
  • Compliance требования с encryption

Преимущества Cilium

  • Производительность — eBPF обеспечивает высокую производительность
  • Гибкость — L3/L4/L7 политики безопасности
  • Observability — детальная видимость сетевого трафика
  • Безопасность — identity-based security модель
  • Масштабируемость — эффективная работа в больших кластерах
  • Cloud-native — разработан специально для Kubernetes

Cilium vs другие CNI

  • vs Calico — eBPF vs iptables, лучшая производительность
  • vs Flannel — больше security функций
  • vs Weave — лучшая observability
  • vs Antrea — более зрелое решение

Cluster Mesh для Multi-cluster

1# Включение Cluster Mesh
2cilium clustermesh enable
3
4# Подключение кластеров
5cilium clustermesh connect --destination-context cluster2
6
7# Статус Cluster Mesh
8cilium clustermesh status

Troubleshooting

 1# Проверка connectivity
 2cilium connectivity test
 3
 4# Логи Cilium agent
 5kubectl logs -n kube-system ds/cilium
 6
 7# Проверка eBPF maps
 8cilium map list
 9
10# Debug endpoint
11cilium endpoint list
12cilium endpoint get <endpoint-id>

Интеграция с другими инструментами

  • Prometheus — экспорт метрик
  • Grafana — дашборды для мониторинга
  • Jaeger — трейсинг сетевых запросов
  • Falco — runtime security мониторинг
  • Istio — интеграция с service mesh

Альтернативы Cilium

  • Calico — популярный CNI с network policies
  • Flannel — простой overlay network
  • Weave Net — простая установка и использование
  • Antrea — CNI от VMware на основе Open vSwitch
  • Kube-router — all-in-one networking решение
  • AWS VPC CNI — native AWS networking

FAQ

Подходит ли Cilium для продакшена?

Да, Cilium широко используется в production крупными компаниями, включая Google, Adobe, Datadog. Это зрелый проект CNCF с активной поддержкой сообщества.

Какие требования к инфраструктуре?

Cilium требует Linux kernel версии 4.9+ с поддержкой eBPF. Рекомендуется kernel 4.19+ для полной функциональности. Работает на большинстве облачных провайдеров.

Сложно ли мигрировать на Cilium?

Миграция с других CNI может потребовать планирования, особенно в production. Рекомендуется тестирование в staging окружении и постепенная миграция.