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 Service Mesh は、eBPF と Envoy を使用して通信を処理する。
なお、Cilium サービスメッシュは前提として Cilium CNI を必要とする。
そのため、Istio のように、既存の Kubernetes のネットワークを残したままサービスメッシュを導入できない。
パケットのアプリケーションデータの暗号化¶
Node 上の Pod 間の通信を IPSec や WireGuard で暗号化する。
