技術
Cilium
eBPF による Kubernetes 向けのネットワーキング、セキュリティ、可観測性
Cilium は、eBPF を基盤とする Kubernetes 向けのネットワーキング、セキュリティ、可観測性のソリューションです。eBPF は、従来の iptables ベースのアプローチのオーバーヘッドなしに、ネットワークとセキュリティのロジックをカーネル内で直接実行できる Linux カーネルの技術です。
仕組み
Cilium は Kubernetes の CNI(Container Network Interface)プラグインとして動作し、すべての Pod のネットワークトラフィックを把握できます。データパスがカーネル内で動作する eBPF プログラムとして実装されているため、プロキシや iptables ベースの代替手段よりはるかに低いオーバーヘッドで、ネットワークポリシーの適用、トラフィックのロードバランシング、Pod 間通信の暗号化を行えます。また、生の IP アドレスだけでなく、アイデンティティ(Pod、サービス)を基に動作します。
主要な概念
- eBPF — Linux カーネルの技術で、カーネルモジュールや外部パッチなしに、カスタムプログラムをネットワークイベントにアタッチできます。
- CiliumNetworkPolicy — レイヤー 3 〜 7 のルールをサポートする拡張ネットワークポリシーリソースです。許可する API パスの制限など、HTTP を認識したルールも含まれます。
- Identity(アイデンティティ) — Cilium は、ラベルを共有する Pod のグループにセキュリティアイデンティティを割り当てます。これにより、ポリシーと可観測性は、短命な IP ではなくワークロードの観点で表現されます。
- Hubble — Cilium の可観測性コンポーネントで、クラスター全体のネットワークトラフィックとポリシー判定を、フロー単位でライブに表示します。
チームが Cilium を採用する理由
- パフォーマンス。 eBPF ベースのデータパスは iptables チェーンのパケットごとのオーバーヘッドを回避でき、大規模環境で重要になります。
- アイデンティティを認識するポリシー。 ネットワークポリシーは、IP/ポートの組み合わせだけでなく、ワークロードのアイデンティティや、アプリケーション層のセマンティクスの観点でも定義されます。
- 深い可視性。 Hubble は、クラスター全体のトラフィックとポリシー適用をリアルタイムでフロー単位に表示し、デバッグと監査の両方に役立ちます。
- CNI を超えて。 Cilium はロードバランシングも担当でき、kube-proxy を置き換え、サービスメッシュのデータプレーンへ拡張することもできます。
はじめに
Cilium をクラスターの CNI としてインストールし(多くのマネージド Kubernetes サービスが、サポート対象のネットワークアドオンとしてサポートしています)、CiliumNetworkPolicy リソースを定義してワークロード間のトラフィックを制御します。以降のガイドでは、一般的なポリシーパターンと、Hubble による可視化を説明します。