コンテンツにスキップ

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

cilium-service-mesh_tls