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 で暗号化する。
