0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cilium 1.17 リリース: Networking・Security・Observability の新機能と改善点

Posted at

Cilium 1.17は、クラウドネイティブ環境向けのeBPFベースのネットワーキング/セキュリティプラットフォームに多くの強化を導入しています。以下ではNetworking(ネットワーキング)Security(セキュリティ)、**Observability(オブザーバビリティ:可観測性)**の各領域ごとに、主な新機能や改善点を高レベルな概要とともに技術的な詳細をまとめます。

Networking(ネットワーキング領域の新機能と改善)

  • Gateway APIの正式サポート強化: Kubernetes Gateway APIのサポートが安定版(GA)となり、CiliumでGateway API関連機能をよりシームレスに利用可能になりました。 (cilium/cilium v1.17.0-pre.0 on GitHub) (cilium/cilium v1.17.0-pre.0 on GitHub) とえば、これまで必要だった実験的なCRDの手動適用なしに、TLSRouteなどのGateway APIリソースをCiliumが自動検出して活用できるようになっています (cilium/cilium v1.17.0-pre.0 on GitHub) また、Cilium内のGateway API実装自体も最新仕様に合わせて更新されました (cilium/cilium v1.17.0-pre.0 on GitHub)

  • サービスとロードバランシングの改良: Serviceのプロトコル扱いを改善し、同一ポートでのUDPとTCPを正しく区別できるようになりました (cilium/cilium v1.17.0-pre.0 on GitHub) これにより、プロトコルごとのロードバランシング挙動がより正確になります。また、Ingressコントローラにおいてノード上の複数ネットワークデバイスを扱えるよう制限を撤廃し(以前は単一デバイスに限定)、マルチホーム環境での柔軟性が向上しています (Releases · cilium/cilium · GitHub) セッションアフィニティ有効時のMaglev負荷分散におけるバックエンド選択の問題も対処され、安定性とパフォーマンスが改善されています (Releases · cilium/cilium · GitHub)

  • クラスタ間(マルチクラスタ)ネットワークの強化: マルチクラスタサービス(MCS)への対応が前進しました。Cilium 1.17では、Multi-Cluster Services APIによるサービス発見でIPv4/IPv6デュアルスタックをサポートし (Releases · cilium/cilium · GitHub) ヘッドレスサービスの扱いに関する互換性も改善されています (Releases · cilium/cilium · GitHub) さらに、複数クラスタ間でサービスをエクスポート/インポートする際、各クラスタのデータストア(etcd経由のクラスタメッシュデータ)にサービス情報をエクスポートする機能が追加され、今後のServiceImport自動生成に向けた準備が整えられました (cilium/cilium v1.17.0-pre.0 on GitHub) これらにより、クラスタメッシュ間のサービス接続性が向上し、マルチクラスタ環境での統合が強化されています。

  • クラウドネイティブ統合とIP管理: クラウドプロバイダとの統合も改良されています。例えば、Alibaba Cloud環境向けにインスタンスのタグフィルタによるIPアドレス管理がサポートされました (cilium/cilium v1.17.0-pre.0 on GitHub) また、サービスType=LoadBalancerのIP割り当て挙動を制御する新フラグ(LB-IPAM関連)が追加され、.spec.loadBalancerClassを指定したサービスにのみ外部IPを割り当てるように設定可能です (cilium/cilium v1.17.0-pre.0 on GitHub) これにより、クラウドのロードバランサ統合時に不要なIP割り当てを抑制できます。同様に、Helm経由のインストール設定で、クラスタメッシュAPIサーバーのServiceにloadBalancerSourceRanges(アクセス許可するCIDRレンジ)を指定できるようになりました (cilium/cilium v1.17.0-pre.0 on GitHub) さらに、KubernetesのAPIサーバー接続情報を取得する名前空間をユーザが指定可能になるなど、クラスタ環境ごとの柔軟な設定が可能になっています (cilium/cilium v1.17.0-pre.0 on GitHub)

  • eBPF活用による性能向上: eBPFデータプレーンの最適化も行われています。パケットを拒否するルール(Denyポリシー)の処理が効率化され、大規模なポリシー適用環境でもより高速に評価が行われるよう改善されました (cilium/cilium v1.17.0-pre.0 on GitHub) また、BPFマップに書き込まれるイベント(監視用メッセージ)のレート制限機能が追加され、高負荷時にエージェントが過剰にCPUを消費しないようになりました (cilium/cilium v1.17.0-pre.0 on GitHub) この機能では、bpf-events-map-rate-limitおよび...-burst-limitという2つの新設定でイベント書き込みレートを調整でき、過度なログ生成による性能低下を防ぎます (cilium/cilium v1.17.0-pre.0 on GitHub) さらに、大規模クラスタでのエンドポイント管理性能も向上しています。CiliumEndpointSliceコントローラのデフォルトレート制限値を引き上げ、大規模環境でもエンドポイント情報の伝搬遅延を減らしました (cilium/cilium v1.17.0-pre.0 on GitHub) NATテーブルの統計処理では、初回SNATエントリ生成を5秒遅延させる変更が入り、コネクション追跡テーブルのタイムアウトを回避して接続安定性を高めています (cilium/cilium v1.17.0-pre.0 on GitHub)

  • その他のネットワークスタック変更: 内部実装面では、カーネルXDPを用いた高速デバイスプラグイン「Netkit」の導入(1.16で実験導入)に伴う改良も継続して行われています(※Netkitに関する具体的な変更は1.17リリースノートに明示されていませんが、高性能データパスのオプションとして引き続き提供されています)。また、CiliumのベースイメージOSがUbuntu 24.04に更新され、最新Linuxカーネルでの安定性とセキュリティが向上しています (cilium/cilium v1.17.0-pre.0 on GitHub) Kubernetesとの互換性も最新バージョンまで確認されており、Kubernetes 1.28以降の環境でも問題なく動作するようCiliumのK8s依存コンポーネント(client-goなど)がアップデートされています(Cilium 1.17ではKubernetes 1.28/1.29に対応するためk8s.ioライブラリをv0.32.0に更新 (Releases · cilium/cilium · GitHub) 。これらの変更により、Cilium 1.17は最新のクラウドネイティブスタックとの統合性とネットワーク性能を一段と高めています。

Security(セキュリティ領域の新機能と変更点)

  • ネットワークポリシー機能の拡張: Ciliumのネットワークポリシー(CiliumNetworkPolicy=CNPおよびClusterwide CNP)に明示的な拒否ルールが導入されました。新たにingressDenyおよびegressDenyフィールドがポリシーで利用可能となり、特定のトラフィックを明示的にブロックするポリシーを書けます (Releases · cilium/cilium · GitHub) これにより、従来の許可ベースのポリシーに加えて「デフォルト拒否+必要な通信のみ許可」といったゼロトラスト志向のポリシー設計が容易になります。実装上、Cilium 1.17ではポリシーの検証も強化されており、ポリシー定義時にIngress/IngressDeny/Egress/EgressDenyのいずれか最低一つは指定することが必須となりました (Releases · cilium/cilium · GitHub) 空のポリシー適用を防ぐため)。また、ポリシー適用時のデフォルト動作も見直され、例えば何も許可ルールを持たない場合には全トラフィック拒否が確実に適用される挙動になっています (Releases · cilium/cilium · GitHub)

  • ポリシー構文の見直し: Cilium特有のポリシーフィールドであるfromRequiresおよびtoRequiresが**非推奨(Deprecated)**となりました (Releases · cilium/cilium · GitHub) これらはエンドポイントに特定のラベル要件を課す高度なフィルタ機能でしたが、1.17以降では将来的な削除に向けて使用しないことが推奨されています(Cilium 1.18でサポート廃止予定 (Releases · cilium/cilium · GitHub) 。代替として、より明示的なエンティティベースやCIDRベースの指定、あるいは新導入のdenyルールでセキュリティ要件を表現することが推奨されます。この変更はポリシー記法の簡素化と誤用防止に寄与します。

  • アイデンティティ管理とゼロトラストの進展: Ciliumは内部的にエンドポイント(ワークロード)にIDを割り当て、ラベルに基づくポリシー適用を行います。1.17ではこのアイデンティティ管理機構の移行を容易にする新モードが追加されました。それが「ダブルライト (Double Write) モード」と呼ばれるアイデンティティ割り当て方式で、従来の外部KVストア(etcdなど)とKubernetes CRDの両方に同時にアイデンティティ情報を書き込むことで、KVストアからCRDへのシームレスな移行を可能にします (cilium/cilium v1.17.0-pre.0 on GitHub) このモードによりダウンタイムなしでバックエンドを切り替えられるため、将来的によりKubernetesネイティブなCRDベースのアイデンティティ管理へ移行しやすくなります (cilium/cilium v1.17.0-pre.0 on GitHub) あわせて、Cilium 1.17ではKVストアとしてのConsulサポートが削除されました (cilium/cilium v1.17.0-pre.0 on GitHub) これによりサポートされる外部KVストアはEtcdのみとなり、もしくは前述のCRDモードを用いる構成へと一本化されます。不要な選択肢を減らし管理面の複雑さを解消するとともに、より一貫した信頼モデルでアイデンティティを管理できるようになります。

  • ホスト(ノード)レベルのDNSトラフィック制御: セキュリティ強化の一環として、ノード起点のDNSクエリのL7プロキシ処理が可能になりました (cilium/cilium v1.17.0-pre.0 on GitHub) 従来、CiliumのDNSポリシー適用は主にPod発のDNS問い合わせに適用されていましたが、1.17ではEnable L7 DNS proxy for nodesという変更により、ノード(ホストネットワーク)から外向きに出ていくDNS問い合わせについてもCiliumのeBPFベースL7フィルタを介して処理できます (cilium/cilium v1.17.0-pre.0 on GitHub) これにより、ノード上で稼働するシステムデーモンやHostNetworkのPodが発するDNS通信にもポリシー制御や監視を適用でき、クラスター内のあらゆるDNSトラフィックを一元管理するゼロトラストDNS環境が整備されます。

  • TLS証明書と認証周りの強化: Ciliumのコントロールプレーンやクラスタメッシュ通信に関わるTLS設定も見直されています。Helmの設定オプションであったtls.secretsBackendは非推奨となり、代わりにtls.readSecretsOnlyFromSecretsNamespaceを使用するようになりました (Releases · cilium/cilium · GitHub) 後者を有効にすることで、Ciliumは指定されたNamespace内のSecretからのみTLS証明書を読み込むようになり、証明書管理の範囲を限定できます (Releases · cilium/cilium · GitHub) これは証明書のスコープを明確化しセキュリティを高める変更です。また、データプレーンで使用するEnvoyプロキシがバージョン1.30系にアップデートされ (cilium/cilium v1.17.0-pre.0 on GitHub) 最新のセキュリティパッチやTLS機能(例えばより新しいTLSバージョンやアルゴリズムのサポート)が取り込まれています。Goランタイム自体も更新されているため (cilium/cilium v1.17.0-pre.0 on GitHub) 全体として暗号化通信に関する安全性とパフォーマンスが向上しています。

  • 暗号化とカーネル統合の安定化: WireGuardやIPSecなどCiliumが提供するネットワーク暗号化機能についても、バグ修正や安定性向上が行われました。例えば、特定のカーネルでXFRM統計が公開されていない場合にIPSec有効化でエージェントがパニックを起こす不具合が修正されました (cilium/cilium v1.17.0-pre.0 on GitHub) また、IPSec関連コードの中で非推奨となっていたシークレット(鍵)解析の古い実装が削除され、コードベースがクリーンアップされています (cilium/cilium v1.17.0-pre.0 on GitHub) さらに、iptablesルールを定期的に再適用してドリフトを是正する機能も加わり (cilium/cilium v1.17.0-pre.0 on GitHub) ホスト上で意図しないフィルタ状態が発生した場合でも自動修復することでセキュリティが担保されます。これらの改善によって、Cilium 1.17はセキュリティ機能面でより堅牢かつゼロトラストネットワーキングモデルに近づいたと言えます。

Observability(オブザーバビリティ領域の向上)

  • メトリクスの拡充と改善: Cilium 1.17ではPrometheus等で取得可能なメトリクスが強化されました。まず、新たに機能トラッキング用のメトリクスが追加され、CiliumエージェントおよびOperatorがどの機能を使用中かをカウントするプロメテウスメトリクスが公開されます (Releases · cilium/cilium · GitHub) これにより、たとえばどのノードでHostFirewallやEncapsulationなど特定機能が有効化されているかを集計可能です。また、接続統計メトリクスとしてcilium_act_new_connections_total...active_connections_total...failed_connections_totalの3種が追加されました (cilium/cilium v1.17.0-pre.0 on GitHub) これらにはサービスおよびゾーン(label)情報が含まれ、接続の確立・アクティブ・失敗数を可視化できます (cilium/cilium v1.17.0-pre.0 on GitHub) マルチAZ環境などでゾーンごとの接続状況を監視するのに有用です。さらにノードのヘルスチェック関連メトリクスが見直され、node_connectivity系メトリクスは非推奨となり、新たに**node_health_connectivityメトリクス**群に置き換えられました (cilium/cilium v1.17.0-pre.0 on GitHub) 後者は前者に比べカードィナリティ(組み合わせ総数)が低く抑えられており、大規模環境でもメトリクスの負荷を増やしすぎずにノード間の到達性を計測できます (cilium/cilium v1.17.0-pre.0 on GitHub) 加えて、内部モジュールごとの詳細な統計も充実しています。例えばアイデンティティ管理モジュールでの操作回数を示すCID OP(Cluster ID?)メトリクスが追加されました (cilium/cilium v1.17.0-pre.0 on GitHub)

  • Hubble連携の強化: Ciliumに組み込まれた観測プラットフォームHubbleとの統合もさらに深化しました。まず、前述のDNSプロキシのホスト対応により、Hubbleは従来拾えなかったノード由来のDNS通信も監視できるようになります。これにより、クラスター内のPod間通信だけでなく、ノード(ホスト)から外部へのクエリも含めた全てのDNSフローを可視化でき、トラフィックの透明性が向上します。次に、Hubbleが出力するフローの情報量が増えています。ポリシー相関の精度向上により、各通信フローがどの種類のネットワークポリシー(CNPなのかCCNPなのか、Kubernetes NetworkPolicyなのか)によって許可/拒否されたかを正確に関連付けて表示できるようになりました (cilium/cilium v1.17.0-pre.0 on GitHub) 特にL4ポートのみ指定のポリシーやプロトコル指定のみのポリシーについても適切に識別し、クラスタ全体/名前空間単位のポリシー (CCNP) も区別して相関付けします (cilium/cilium v1.17.0-pre.0 on GitHub) これにより、Hubble UIやCLIでフローを分析する際に「どのポリシーがこの通信を許可したのか/拒否したのか」を容易に把握でき、トラブルシューティングやセキュリティ監査に役立ちます。

  • 可視性とデバッグの利便性向上: 運用面での観測性も細かな改善が加えられています。kubectl get ciliumnetworkpolicy等のコマンド出力で、各ポリシーが現在有効かどうか(Policy validity)を一目で確認できるようになりました (cilium/cilium v1.17.0-pre.0 on GitHub) ポリシーの構文ミスや無効な参照がある場合、適用状態に反映されるため、管理者はポリシー適用状況を即座に把握できます。また、Ciliumエージェント再起動時に接続メトリクスがリセットされないよう保存されるようになりました (cilium/cilium v1.17.0-pre.0 on GitHub) (cilium/cilium v1.17.0-pre.0 on GitHub) これにより、エージェントの再起動後も...failed_connections_totalなどの累積カウンタがゼロクリアされず正しい値が引き継がれるため、長期的な接続失敗率のモニタリングが途切れません (cilium/cilium v1.17.0-pre.0 on GitHub) Hubbleの監視指標では、Podが削除された際に対応するHubbleのメトリクスエントリも適切に消去されるバグ修正が行われました (Releases · cilium/cilium · GitHub) これにより、Grafanaダッシュボード等で不要な古いPodのメトリクスが残留する問題が解消されています。同様に、Hubbleのメトリクス設定パース処理の不具合も修正され、ユーザ設定が正しく反映されるようになりました (Releases · cilium/cilium · GitHub) そのほか、Hubble Relay(Hubbleの集約コンポーネント)のAPI応答から不要なCORSヘッダを削除するなど (Releases · cilium/cilium · GitHub) 可観測性プラットフォーム周辺の細部にわたる改善が見られます。Ciliumプロジェクトのデバッグツールであるcilium-bugtoolも強化され、ヒーププロファイルをデフォルトでProtocol Buffers形式で収集するようになりました (cilium/cilium v1.17.0-pre.0 on GitHub) これは解析ツールで扱いやすくするための変更で、問題発生時の診断効率を高めます。

  • スケーラビリティと安定性: 観測性機能が充実する中でも、Ciliumはそのオーバーヘッドを抑える工夫を取り入れています。上述のBPFイベントレート制限 (cilium/cilium v1.17.0-pre.0 on GitHub) 低カードィナリティなヘルスメトリクス (cilium/cilium v1.17.0-pre.0 on GitHub) 、大規模クラスタでもモニタリングを継続できるようにするための施策です。さらに、クラスタメッシュ(複数クラスタ接続)環境向けに、内部のログ出力設定を調整可能にするオプションが追加されました (cilium/cilium v1.17.0-pre.0 on GitHub) これにより、マルチクラスタ環境で発生する事象を管理者が詳細に追跡しやすくなります。CI(継続的インテグレーション)上ではHubble CLIの統合テストが追加されるなど (cilium/cilium v1.17.0-pre.0 on GitHub) 品質向上にも努められており、結果的に本番環境での信頼性が向上しています。

以上のように、Cilium 1.17はネットワーク、セキュリティ、可観測性の各面で多岐にわたる改良を含んでいます。eBPFを活用した高性能なデータプレーンの強化に加え、ゼロトラストを意識したセキュリティ機能の拡充、そして大規模環境を見据えた観測・監視機能の充実によって、クラウドネイティブインフラにおける信頼性と操作性を一段と向上させたリリースとなっています。各種新機能を活用する際は、公式のリリースノートやアップグレードガイドを参照して互換性情報や設定方法を確認すると良いでしょう。 (cilium/cilium v1.17.0-pre.0 on GitHub) 17†L212-L220】

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?