【しりうむ】

Cilium(シリウム) とは?

最終更新:
💡 eBPFの力でKubernetesのネットワークを「神経系」レベルで制御

eBPFを活用した、Kubernetesなどのコンテナ環境向けのネットワーキング・セキュリティ・オブザーバビリティのソフトウェア。IPアドレスだけに頼らない細かな通信制御や、通信の可視化ができる。

📌 このページのポイント
Cilium:eBPFベースのKubernetesネットワーク Kubernetes クラスタ Pod A Frontend Pod B API Server Pod C Database GET /api SQL query Cilium(eBPF データプレーン) L3/L4/L7 ポリシー適用 | ロードバランシング | 暗号化 従来:kube-proxy(iptables) 大規模だとルール更新に時間がかかる → Cilium:eBPF 振り分けをカーネル内のeBPFで処理 Hubble Service Mesh
CiliumによるKubernetesネットワークの構成(kube-proxyの置き換えは設定で有効化。L7の解析にはEnvoyも使う)
ひよこ ひよこ
Ciliumって何?シリウムって読むの?
ペンギン先生 ペンギン先生
そうだよ。Kubernetesなどのコンテナ環境で、ネットワーク・セキュリティ・通信の見える化をまとめて担うソフトウェアなんだ。一番の特徴は、Linuxカーネルの中で小さなプログラムを動かせるeBPFという技術を使っていることだよ。
ひよこ ひよこ
従来のKubernetesネットワークと何が違うの?
ペンギン先生 ペンギン先生
Kubernetesの標準的な仕組み(kube-proxyのiptablesモード)は、Serviceや通信先ごとにiptablesのルールを作るんだ。Kubernetesの公式ドキュメントでも、数万規模のPodやServiceがある環境ではルールの更新に時間がかかることがあると説明されている。Ciliumは設定すればkube-proxyを置き換えて、この振り分けをeBPFで処理できるよ。既定では併用だから、置き換えるには明示的な設定が必要なんだ。
ひよこ ひよこ
速いだけじゃなくてセキュリティにもいいの?
ペンギン先生 ペンギン先生
そこがCiliumの見どころだね。一般的なネットワークポリシーはIPアドレスやポート番号で制御するけど、CiliumはPodのラベルなどから決まる「アイデンティティ」で通信を許可できる。さらにHTTPのメソッドやパス、gRPCの呼び出しまで見て「このPodからはGETだけ許可」のような制御もできるんだ。こうしたL7の中身の解析には、eBPFに加えてEnvoyというプロキシが使われるよ。
ひよこ ひよこ
他にも機能はあるの?
ペンギン先生 ペンギン先生
Hubbleという可視化の仕組みがあって、どのPodがどのPodと通信しているか、どの通信がポリシーで止められたかを確認できるよ。マイクロサービスの通信の流れが追いやすくなるから、障害調査にも役立つんだ。
ひよこ ひよこ
どれくらい広く使われているプロジェクトなの?
ペンギン先生 ペンギン先生
CNCFの記録では、2021年10月にIncubatingとして受け入れられて、2023年10月にGraduated(卒業)になったよ。GraduatedはCNCFのプロジェクトの成熟度で最上位の段階なんだ。ただ、どのCNIが合うかはクラスターの規模や運用しだいだから、要件に合わせて選ぼう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Cilium」って出てきたら「eBPFを使ったKubernetes向けのネットワーク・セキュリティ基盤」と思えればだいたいOK!
📖 おまけ:英語の意味
「Cilium」 = 繊毛(せんもう)
💬 英語で、細胞の表面にある細かい毛「繊毛」を意味する単語だよ(複数形はcilia)。細かい単位で通信を制御する製品のイメージに合う名前だね

参考資料

← 用語集にもどる