Cilium 是一個開源的雲原生解決方案,用於提供、保護(安全功能)和觀察(監控功能)工作負載之間的網路連線,由革命性的核心技術 eBPF 提供動力。Cilium 主要使用場景是在 Kubernetes中,但 Cilium 的優勢並不僅限於 Kubernetes 環境。
在 Kubernetes 環境中,Cilium 可充當網路外掛,提供 pod 之間的連線。它通過執行網路策略(network policy)和透明加密來提供安全性,而 Cilium 的 Hubble 元件則提供了網路流量流的深度可見性(監控功能)。
得益於 eBPF,Cilium 的網路、安全和可觀察性邏輯可以直接程式設計到核心中,從而使 Cilium 和 Hubble 的功能對應用工作負載完全透明。這些將是 Kubernetes 叢集中的容器化工作負載,不過 Cilium 也能連線虛擬機器器和標準 Linux 程序等傳統工作負載。
關於 Cilium 可觀察性, 典型的案例是: pod 中的應用無需啟用 Tracing 功能, 也無需通過 exporter 將 http requests metrics 發給 Prometheus, 僅通過 Cilium 的 Hubble 功能, 就能直接獲取到該應用的 http requests 的 RED(Requests, Errors, Durations).
在高度動態和複雜的微服務世界中,主要從 IP 地址和埠的角度考慮網路問題可能會導致挫敗感。使用傳統的網路工具(通過五元組)實施可能會非常低效,只能提供粗粒度的可見性和過濾,從而限制了排除故障和保護容器網路安全的能力。這些都是 Cilium 要解決的難題。
從一開始,Cilium 就是為大規模、高動態的容器化環境而設計的。它能原生理解容器和 Kubernetes 身份,並解析 HTTP、gRPC 和 Kafka 等 API 協定,提供比傳統防火牆更簡單、更強大的可視性和安全性。
所以, Cilium 的功能要點集中在以下 3 點:
eBPF 使 Cilium 強大的安全可視性和控制邏輯能夠動態插入 Linux 核心。eBPF 使 Linux 核心可程式化,因此 Cilium 等應用可以 hook Linux 核心子系統,將使用者空間應用上下文引入核心操作。