更新日:2023-03-22
Ciliumの概要
Ciliumは、カーネル技術eBPFを利用した、コンテナワークロード間のネットワーク接続を提供、保護、監視するためのオープンソースソフトウェアで、クラウドネイティブです。
また、Ciliumは2021年10月13日にCloud Native Computing Foundation(CNCF)に参加し、Incubating projectとして認定されています。
Ciliumの主な特徴
Ciliumには次のような特徴があります。
- eBPFとXDPを活用した堅牢なロードバランシング
- 高度なコントロールプレーンにより大規模なKubernetesクラスターで動作
- 複数クラスターにまたがるゾーンを使用したシンプルなクラスター間接続を実現
- Hubbleフレームワークを使用したコンテキストやプロトコルの可視化
- IPsec機能を使用した透過的な暗号化
- IDを認識したログとコンテキストによる長期的なフォレンジック調査が可能
Ciliumの主な機能
APIの透過的な保護 |
CiliumはREST/HTTP、gRPC、Kafkaなどの最新のアプリケーションプロトコルを保護します。 従来のファイアウォールはネットワーク層やトランスポート層で動作し、特定のポートで実行されるプロトコルに対し、全て信頼するか全てブロックするのどちらかを行います。 それに対し、Ciliumは個々のアプリケーションプロトコルリクエスト毎に許可/拒否を行うことができます。 |
---|---|
IDに基づいたセキュアなサービス間通信 |
現代の分散型アプリケーションは、アプリケーションコンテナのような技術に依存しており、短時間に大量のコンテナが起動します。 そのため、送信元IPアドレスと送信先ポートをフィルタリングする従来のファイアウォールでは、コンテナが起動するたびに全サーバ上のファイアウォールを操作する必要があり、アプリケーションの規模が制限されていました。 このような状況を回避するため、Ciliumは同一のセキュリティポリシーを共有するアプリケーションコンテナのグループにIDを割り当てます。このIDはアプリケーションコンテナから送信される全てのネットワークパケットに関連付けられ、受信ノードでIDの検証を行うことができます。 また、IDの管理はkey-value storeを通して行われます。 |
外部サービスとのセキュアな接続 |
ラベルベースのセキュリティは、クラスター内部のアクセス制御のために選択されたツールです。 外部サービスとのアクセスを保護するために、イングレスとエグレスの両方で従来のCIDRベースのセキュリティポリシーがサポートされています。これにより、アプリケーションコンテナへのアクセスやアプリケーションコンテナからのアクセスを特定のIP範囲に制限することができます。 |
シンプルなネットワーキング |
複数のクラスターにまたがるレイヤー3ネットワークが全てのアプリケーションコンテナを接続します。IPの割り当てはホストのスコープアロケータを使用することで各ホストがホスト間の調整なしに行うことができるようになっています。 また、以下のマルチノードネットワーキングモデルがサポートされています。
|
ロードバランサー |
Ciliumは、アプリケーションコンテナ間や外部サービスへのトラフィックの分散ロードバランシングを実装しており、kube-proxyのようなコンポーネントを完全に置き換えることが可能です。ロードバランサーは、効率的なハッシュテーブルを使用してeBPFに実装されており、ほぼ無制限に拡張することができます。 North-South型のロードバランシングの場合、CiliumのeBPF実装は最大のパフォーマンスを得るために最適化されており、XDP(eXpress Data Path)に接続でき、負荷分散のオペレーションがソースホスト上で行われない場合はDSR(Direct Server Return)およびMaglev consistent hashingもサポートします。 East-West型のロードバランシングでは、Ciliumは、Linux カーネルのソケット層でサービスからバックエンド変換を効率的に行い、下位層でのパケットごとのNAT操作のオーバーヘッドを回避できます。 |
帯域幅の管理 | Cilium は、ノードから出るコンテナトラフィックに対して、eBPF による効率的な EDT(Earliest Departure Time) ベースのレート制限による帯域幅の管理を実装しています。これにより、例えば帯域幅CNIプラグインで使用されているHTB(Hierarchy Token Bucket)やTBF(Token Bucket Filter)などの従来のアプローチと比較して、アプリケーションの送信テール遅延を大幅に短縮し、マルチキューNICでのロックを回避することができます。 |
モニタリングとトラブルシューティング | Ciliumでは問題をモニタリングし、トラブルシューティングするためのツールとして以下のようなツールを提供しています。
|
Ciliumの動作環境
- コンテナイメージを使用して Cilium を実行する場合
Linux kernel:4.9.17以上 - ホスト上で Cilium をネイティブ プロセスとして実行する場合(コンテナイメージを使用しない場合)
clang+LLVM:10.0以上
eBPF テンプレートパッチを適用したiproute2
- Kubernetes なしで Cilium を実行する場合
次の追加要件を満たす必要があります。
- Key-Value store etcd:3.1.0以上
- 各Linuxディストリビューションの互換性
ディストリビューション 最小バージョン Amazon Linux 2 All Container-Optimized OS All CentOS 7.0以上 Debian 9 Stretch以上 Fedora Atomic/Core 25以上 Flatcar All LinuxKit All RedHat Enterprise Linux 8.0以上 Ubuntu Azure :16.04.1以上、Canonical:16.04.2以上、16.10以上 Opensuse Leap 15.0以上、Tumbleweed RancherOS 1.5.5以上
高度な機能など詳細な要件につきましては以下をご参照ください。
https://docs.cilium.io/en/stable/operations/system_requirements/
Ciliumのライセンス
CiliumはApache License, Version2.0の下でリリースされているオープンソースソフトウェアです。 営利、非営利を問わず、だれでも自由かつ無償で利用・改変することができるほか、ライセンスのコピーの提供や変更内容の告知など、特定の条件を満たすことで再配布も認められています。
参考情報
Ciliumのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。