トップ OSS紹介 Cilium

Cilium

NRIのOpenStandiaが提供するCilium最新情報

バージョンアップ情報

Cilium情報

Ciliumとは

Ciliumは、カーネル技術eBPFを利用した、コンテナワークロード間のネットワーク接続を提供、保護、監視するためのオープンソースソフトウェアで、クラウドネイティブです。

また、Ciliumは2021年10月13日にCloud Native Computing Foundation(CNCF)に参加し、Incubating projectとして認定されています。

主な機能

APIの透過的な保護

CiliumはREST/HTTP、gRPC、Kafkaなどの最新のアプリケーションプロトコルを保護します。
従来のファイアウォールはネットワーク層やトランスポート層で動作し、特定のポートで実行されるプロトコルに対し、全て信頼するか全てブロックするのどちらかを行います。
それに対し、Ciliumは個々のアプリケーションプロトコルリクエスト毎に許可/拒否を行うことができます。

IDに基づいたセキュアなサービス間通信

現代の分散型アプリケーションは、アプリケーションコンテナのような技術に依存しており、短時間に大量のコンテナが起動します。
そのため、送信元IPアドレスと送信先ポートをフィルタリングする従来のファイアウォールでは、コンテナが起動するたびに全サーバ上のファイアウォールを操作する必要があり、アプリケーションの規模が制限されていました。
このような状況を回避するため、Ciliumは同一のセキュリティポリシーを共有するアプリケーションコンテナのグループにIDを割り当てます。このIDはアプリケーションコンテナから送信される全てのネットワークパケットに関連付けられ、受信ノードでIDの検証を行うことができます。
また、IDの管理はkey-value storeを通して行われます。

外部サービスとのセキュアな接続

ラベルベースのセキュリティは、クラスター内部のアクセス制御のために選択されたツールです。
外部サービスとのアクセスを保護するために、イングレスとエグレスの両方で従来のCIDRベースのセキュリティポリシーがサポートされています。これにより、アプリケーションコンテナへのアクセスやアプリケーションコンテナからのアクセスを特定のIP範囲に制限することができます。

シンプルなネットワーキング

複数のクラスターにまたがるレイヤー3ネットワークが全てのアプリケーションコンテナを接続します。IPの割り当てはホストのスコープアロケータを使用することで各ホストがホスト間の調整なしに行うことができるようになっています。
また、以下のマルチノードネットワーキングモデルがサポートされています。

  • オーバーレイ
    全てのホストにまたがるカプセル化ベースの仮想ネットワークでです。現在、VXLANとGeneveが組み込まれていますが、Linuxでサポートされている全てのカプセル化形式を有効にすることができます。
  • ネイティブルーティング
    Linuxホストの通常のルーティングテーブルを使用します。ネットワークにアプリケーションコンテナの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では問題をモニタリングし、トラブルシューティングするためのツールとして以下のようなツールを提供しています。

  • メタデータによるイベントモニタリング
    パケットがドロップされたとき、ツールはパケットの送信元と送信先のIPを報告するだけでなく、他の多くの情報の中で送信者と受信者の両方の完全なラベル情報を提供します
  • Prometheus経由のメトリックスエクスポート
    主要なメトリクスはPrometheus経由でエクスポートされ、既存のダッシュボードに統合することができます。
  • Hubble
    Cilium専用に開発された可観測性を実現するプラットフォームです。サービスの依存関係マップ、運用監視とアラート、フローログに基づくアプリケーションとセキュリティの可視化などを提供します。

主な特徴

Ciliumには次のような特徴があります。

  • eBPFとXDPを活用した堅牢なロードバランシング
  • 高度なコントロールプレーンにより大規模なKubernetesクラスターで動作
  • 複数クラスターにまたがるゾーンを使用したシンプルなクラスター間接続を実現
  • Hubbleフレームワークを使用したコンテキストやプロトコルの可視化
  • IPsec機能を使用した透過的な暗号化
  • IDを認識したログとコンテキストによる長期的なフォレンジック調査が可能

動作環境

  • コンテナイメージを使用して 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以上

高度な機能など詳細な要件につきましては以下をご参照ください。

Ciliumのライセンス

CiliumはApache License, Version2.0の下でリリースされているオープンソースソフトウェアです。 営利、非営利を問わず、だれでも自由かつ無償で利用・改変することができるほか、ライセンスのコピーの提供や変更内容の告知など、特定の条件を満たすことで再配布も認められています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Linkerd
    サポート対象

    Linkerd

    リンカード。Kubernetes向けのオープンソースのサービスメッシュです。

  • Istio
    サポート対象

    Istio

    イスティオ。マイクロサービスをセキュアにマネージメントするためのマイクロサービス管理フレームワークです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。