Cilium@ネットワーク系¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. Ciliumの仕組み¶
アーキテクチャ¶
Ciliumは、Ciliumエージェント、Cilium CNI、から構成される。
Ciliumエージェント¶
▼ Ciliumエージェントとは¶
コンテナ上のプロセスは、コンテナのカーネルに対してシステムコールを実行する。
Ciliumエージェントは、システムコールのイベントが発生した時にeBPFを実行し、Ciliumの処理をフックする。
これにより、Ciliumはシステムコールのテレメトリーを収集できる。
Cilium CNI¶
▼ Cilium CNIとは¶
KubernetesのデフォルトのCNIと衝突するため、これを無効化する必要がある。
デフォルトのCNIを無効化すると、このCNIとkube-proxyがCilium CNIに置き換わる。
▼ Istioとの連携¶
Cilium CNIとistio-proxy
コンテナを組み合わせて、トラフィックを制御する。
Ciliumのサービスメッシュ機能は、あくまでCiliumの中で一機能としてでしかない。
そのため、IstioとCilium CNIであれば連携できる。
- Istio + kube-proxy + 従来のCNI
- Istio + Cilium CNI
- Ciliumサービスメッシュ + Cilium CNI
- Ciliumサービスメッシュ + Istio (CiliumサービスメッシュとIstioが部分的に競合するので、どちらかのサービスメッシュで設定の無効化が必要) + Cilium CNI
IstioとCiliumサービスメッシュの間で競合する機能 (例えば、L7のトラフィック管理) については、以下の箇所に対処方法がある。
しかし、全体としてかなり複雑な設定になりそうです
02. Ciliumサービスメッシュ¶
Ciliumサービスメッシュの仕組み¶
Ciliumエージェント上ではEnvoyプロセスが動いている。
マイクロサービス間の通信時には、eBPFではなくEnvoyを使用する。
なお、Ciliumサービスメッシュは前提としてCilium CNIを必要とする。
そのため、Istioのように、既存のKubernetesのネットワークを残したままサービスメッシュを導入することはできない。
通信の暗号化¶
Node上のPod間の通信をIPSecやWireGuardで暗号化する。