Ciliumは、EBPFベースのデータプレーンを備えたネットワーキング、観測可能性、およびセキュリティソリューションです。ネイティブルーティングモードまたはオーバーレイモードのいずれかで複数のクラスターを渡す機能を備えたシンプルなフラットレイヤー3ネットワークを提供します。 L7-Protocolは認識しており、ネットワークアドレス指定から切り離されたIDベースのセキュリティモデルを使用して、L3-L7のネットワークポリシーを実施できます。
Ciliumは、ポッドと外部サービスへのトラフィックのための分散荷重バランスを実装し、EBPFで効率的なハッシュテーブルを使用して、ほぼ無制限のスケールを可能にするために、Kube-Proxyを完全に置き換えることができます。また、Integrated Gateway、帯域幅管理、サービスメッシュなどの高度な機能をサポートし、深いネットワークおよびセキュリティの可視性と監視を提供します。
EBPFと呼ばれる新しいLinuxカーネルテクノロジーは、Ciliumの基礎にあります。ネットワークIO、アプリケーションソケット、およびセキュリティ、ネットワーク、視認性ロジックを実装するためのさまざまな統合ポイントで、LinuxカーネルへのEBPFバイトコードの動的挿入をサポートします。 EBPFは非常に効率的で柔軟です。 EBPFの詳細については、ebpf.ioをご覧ください。
シリウムコミュニティは、最後の3つのマイナーなシリアムバージョンのマイナーな安定したリリースを維持しています。 EOLと見なされる前のマイナーリリースからの古いシリウム安定バージョン。
新しいマイナーリリースへのアップグレードについては、Ciliumアップグレードガイドを参照してください。
以下にリストされているのは、アクティブに維持されているリリースブランチと、最新のパッチリリース、対応する画像プルタグ、およびリリースノートとともに次のものです。
v1.16 | 2024-11-14 | quay.io/cilium/cilium:v1.16.4 | ノートをリリースします |
v1.15 | 2024-11-14 | quay.io/cilium/cilium:v1.15.11 | ノートをリリースします |
v1.14 | 2024-11-14 | quay.io/cilium/cilium:v1.14.17 | ノートをリリースします |
Cilium画像は、AMD64およびAARCH64アーキテクチャ用に配布されます。
Ciliumバージョン1.13.0から始めて、すべての画像にはソフトウェア材料請求書(SBOM)が含まれています。 SBOMはSPDX形式で生成されます。これの詳細については、Cilium Sbomで入手できます。
開発とテストの目的のために、Ciliumコミュニティは、メインブランチからビルドされたスナップショット、早期リリース候補(RC)、CIコンテナ画像を公開しています。これらの画像は、生産に使用するためではありません。
新しい開発リリースへのアップグレードのテストについては、Ciliumアップグレードガイドの最新の開発ビルドを参照してください。
以下にリストされているのは、スナップショットまたはRCリリース、対応する画像プルタグ、およびリリースノートとともにテスト用のブランチを使用できます。
主要 | 毎日 | quay.io/cilium/cilium-ci:latest | n/a |
v1.17.0-pre.2 | 2024-11-01 | quay.io/cilium/cilium:v1.17.0-pre.2 | 候補者のメモを事前にリリースします |
REST/HTTP、GRPC、KAFKAなどの最新のアプリケーションプロトコルを保護する能力。従来のファイアウォールはレイヤー3および4で動作します。特定のポートで実行されるプロトコルは、完全に信頼されるか、完全にブロックされています。 Ciliumは、次のような個々のアプリケーションプロトコル要求でフィルタリングする機能を提供します。
Method GET
and path /public/.*
を使用してすべてのHTTPリクエストを許可します。他のすべてのリクエストを拒否します。
service1
Kafka Topic topic1
とservice2
で生成して、 topic1
で消費することを許可します。他のすべてのKafkaメッセージを拒否します。
httpヘッダーX-Token: [0-9]+
は、すべての休憩コールに存在する必要があります。
サポートされているプロトコルの最新リストとその使用方法に関する例については、ドキュメントのセクションレイヤー7ポリシーを参照してください。
最新の分散アプリケーションは、アプリケーションコンテナなどのテクノロジーに依存して、展開の俊敏性を促進し、オンデマンドで拡大します。これにより、短期間で多数のアプリケーションコンテナが開始されます。典型的なコンテナファイアウォールソースIPアドレスと宛先ポートでフィルタリングすることにより、ワークロードを安全にします。この概念では、すべてのサーバーのファイアウォールをクラスター内のどこからでも起動するたびに操作する必要があります。
スケールを制限するこの状況を回避するために、Ciliumは同一のセキュリティポリシーを共有するアプリケーションコンテナのグループにセキュリティIDを割り当てます。アイデンティティは、アプリケーションコンテナによって放出されるすべてのネットワークパケットに関連付けられ、受信ノードのIDを検証できます。セキュリティID管理は、キー価値ストアを使用して実行されます。
ラベルベースのセキュリティは、クラスター内部アクセス制御に最適なツールです。外部サービスとの間でアクセスを確保するために、イングレスと出口の両方の従来のCIDRベースのセキュリティポリシーがサポートされています。これにより、アプリケーションコンテナへのアクセスと特定のIP範囲へのアクセスを制限できます。
複数のクラスターに渡る機能を備えた単純なフラットレイヤー3ネットワークは、すべてのアプリケーションコンテナを接続します。 IPの割り当ては、ホストスコープアロケーターを使用してシンプルに保たれます。これは、各ホストがホスト間の調整なしにIPを割り当てることができることを意味します。
次のマルチノードネットワーキングモデルがサポートされています。
オーバーレイ:すべてのホストにまたがるカプセル化ベースの仮想ネットワーク。現在、VxlanとGeneveは焼き付けられていますが、Linuxでサポートされているすべてのカプセル化形式を有効にできます。
このモードを使用する時期:このモードには、インフラストラクチャと統合要件が最小限に抑えられています。唯一の要件は、通常はすでに与えられているホスト間のIP接続であるため、ほぼすべてのネットワークインフラストラクチャで動作します。
ネイティブルーティング: Linuxホストの通常のルーティングテーブルの使用。ネットワークは、アプリケーションコンテナのIPアドレスをルーティングできる必要があります。
このモードを使用する時期:このモードは上級ユーザー向けであり、基礎となるネットワーキングインフラストラクチャの認識が必要です。このモードは次のことでうまく機能します:
ネイティブIPv6ネットワーク
クラウドネットワークルーターと組み合わせて
すでにルーティングデーモンを実行している場合
Ciliumは、アプリケーションコンテナと外部サービスへのトラフィックのための分散荷重バランスを実装し、Kube-Proxyなどのコンポーネントを完全に交換することができます。負荷分散は、効率的なハッシュテーブルを使用してEBPFに実装され、ほぼ無制限のスケールを可能にします。
南北タイプの負荷分散の場合、CiliumのEBPF実装は最大のパフォーマンスのために最適化され、XDP(Express Data Path)に添付され、直接サーバーリターン(DSR)をサポートし、Load Balancing操作が実行されない場合はMaglevの一貫したハッシュをサポートします。ソースホスト。
東西タイプの負荷分散の場合、CiliumはLinuxカーネルのソケット層(TCP接続時間など)で効率的なサービス間翻訳を実行し、パケットごとのNAT操作オーバーヘッドを下層で回避できるようにします。
シリウムは、ノードを脱出しているコンテナトラフィックのEBPFを使用して、効率的なEDTベースの(最も早い出発時間)レート制限を通じて帯域幅管理を実装します。これにより、アプリケーションのトランスミッションテールレイテンシーを大幅に削減し、帯域幅CNIプラグインで使用されるHTB(階層トークンバケット)やTBF(トークンバケットフィルター)などの従来のアプローチと比較して、マルチキューNICの下でのロックを避けることができます。
可視性を獲得し、問題をトラブルシューティングする機能は、分散システムの操作の基本です。 tcpdump
やping
などのツールを愛することを学びましたが、彼らは常に私たちの心の中で特別な場所を見つけますが、トラブルシューティングのためのより良いツールを提供するよう努めています。これには、提供するツールが含まれます。
メタデータを使用したイベント監視:パケットがドロップされた場合、ツールはパケットのソースと宛先IPを報告するだけでなく、ツールは他の多くの情報の中で送信者と受信機の両方の完全なラベル情報を提供します。
Prometheusを介したメトリックエクスポート:キーメトリックは、既存のダッシュボードと統合するためにプロメテウスを介してエクスポートされます。
Hubble:Cilium専用の観測可能性プラットフォーム。フローログに基づいて、サービス依存性マップ、運用監視と警告、アプリケーションとセキュリティの可視性を提供します。
なぜ繊毛?
はじめる
アーキテクチャと概念
繊毛の取り付け
よくある質問
貢献
Berkeley Packet Filter(BPF)は、TCPDUMPやソケットフィルターなどのネットワークパケットをフィルターするために最初に導入されたLinuxカーネルバイトコードインタープリターです。 BPF命令セットと周囲のアーキテクチャは最近、状態を維持するためのハッシュテーブルや配列などの追加のデータ構造と、パケットのマングリング、転送、カプセル化などをサポートする追加のアクションで大幅に再加工されました。さらに、LLVMのコンパイラバックエンドではプログラムをCで作成し、BPF命令にまとめます。インター船の検証により、BPFプログラムが安全に実行され、JITコンパイラがBPFバイトコードをネイティブ実行効率のためのCPUアーキテクチャ固有の指示に変換します。 BPFプログラムは、着信パケット、発信パケット、システムコール、Kprobes、Uprobes、TracePointsなど、カーネルのさまざまなフックポイントで実行できます。
BPFは、新しいLinuxリリースごとに追加の機能を進化させ続け、追加の機能を獲得しています。 CiliumはBPFを活用して、コアデータパスフィルタリング、マングリング、監視、リダイレクトを実行し、Linuxカーネルバージョン4.8.0以下のBPF機能を必要とします(最新の現在の安定したLinuxカーネルは4.14.x)。
Coreos、Debian、Docker's Linuxkit、Fedora、OpenSuse、Ubuntuなどの多くのLinuxディストリビューションは、すでにカーネルバージョン> = 4.8.xを発送します。 uname -a
を実行して、Linuxカーネルバージョンを確認できます。最近の十分なカーネルをまだ実行していない場合は、Linuxカーネル4.9.x以降の実行方法に関するLinux Distributionのドキュメントを確認してください。
BPFランタイムを実行するために必要なカーネルバージョンを読み上げるには、セクションの前提条件を参照してください。
XDPは進化のさらなるステップであり、パケットのDMAバッファーに直接アクセスして、ネットワークドライバーからBPFプログラムの特定のフレーバーを実行できるようにします。これは、定義上、Linuxカーネルネットワーキングデータパスでプログラム可能で高性能パケットプロセッサを可能にするためにプログラムを添付できるソフトウェアスタックの最も早いポイントです。
開発者向けのBPFおよびXDPの詳細については、BPFおよびXDPリファレンスガイドをご覧ください。
シリアムについて詳しく知るために、シリアムとBPF周辺のその拡張とユースケースは、さらなる測定値セクションをご覧ください。
Cilium Slack Channelに参加して、Cilium開発者や他のCiliumユーザーとチャットします。これは、繊毛について学び、質問をし、あなたの経験を共有するのに良い場所です。
すべてのSIGとその会議時間のリストについては、特別利益団体をご覧ください。
Cilium Developerコミュニティは、チャットするためにズームでたむろします。誰もが大歓迎です。
毎週、水曜日、午後5時、ヨーロッパ/チューリッヒタイム(CET/CEST)、通常は午前8時(PT)、または午前11:00 atに相当します。メモとズーム情報を満たしています
毎月第3水曜日、午前9時日本時間(JST)。 APAC会議メモとズーム情報
Echoと呼ばれる毎週のコミュニティYouTubeライブストリームをホストします(非常にゆるく!)EBPF&Cilium Officeの営業時間を表しています。ライブに参加するか、過去のエピソードに追いつくか、エコーリポジトリにアクセスして、カバーすべきトピックのアイデアをお知らせください。
Ciliumプロジェクトは、メンテナーとコミットターのグループによって管理されています。それらの選択と管理方法は、ガバナンスドキュメントで概説されています。
生産に展開しているCiliumプロジェクトの採用者のリストとそのユースケースのリストは、ファイルusers.mdに記載されています。
Ciliumは公共のロードマップを維持しています。プロジェクトの主な優先事項、さまざまな機能やプロジェクトの成熟度、プロジェクトの方向性に影響を与える方法について、高レベルのビューを提供します。
Ciliumユーザースペースコンポーネントは、バージョン2.0のApacheライセンスに基づいてライセンスされています。 BPFコードテンプレートは、一般的なパブリックライセンス、バージョン2.0(のみ)および2-Clause BSDライセンス(どちらのライセンスの条件をオプションで使用できます)に基づいて二重ライセンスされています。