Cilium
技術

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 による可視化を説明します。