概要

CRI-O v1.34.3(2025-12-02公開)は、Kubernetes の CRI(Container Runtime Interface)実装である CRI-O に対して、(1) 外部の crio-credential-provider 連携、(2) CVE-2025-58183 対応、(3) irq-load-balancing.crio.io アノテーションの新しい housekeeping 値追加、(4) 依存関係更新(Kubernetes 0.34.1 系や Podman 関連ライブラリ追加など)を含むパッチリリースです。

変更内容(何が変わったか)

1) crio-credential-provider(外部 credential provider)対応

  • リリースノート上、「credential provider のサポート追加」として crio-credential-provider が明示的に挙げられています。
  • 実装面では、CRI-O のイメージ pull 処理で github.com/cri-o/crio-credential-provider/pkg/auth を利用し、Pod の namespace をもとに “namespaced な auth ファイル” を取り回すコードが入っています(PullImageRequest の SandboxConfig metadata から namespace を取得し、namespace がある場合に auth ファイルを一時パスへ退避して AuthFilePath として使う流れ)。
  • あわせて CLI に --namespaced-auth-dir が追加され、namespaced auth ファイル用ディレクトリを指定できるようになります(CLI から設定へ反映)。

2) CVE-2025-58183 修正(tar-split 更新)

  • github.com/vbatts/tar-split を v0.12.2 へ更新し、CVE-2025-58183(GNU sparse tar の解析時に unbounded にメモリ確保が起こり得る問題)を修正した、とリリースノートおよび PR 本文で説明されています。
  • PR 本文では、tar-split v0.12.2 側で sparse block data を 1 MiB に制限する修正が入り、CRI-O のイメージ展開(containers/storage 経由)に影響し得る経路のリスクを下げる、という位置付けになっています。

3) irq-load-balancing.crio.iohousekeeping 値を追加

  • irq-load-balancing.crio.io アノテーションに housekeeping が追加されます。
  • housekeeping 指定時は、CRI-O 側の high-performance 向け処理で、OPENSHIFT_HOUSEKEEPING_CPUS 環境変数として housekeeping CPU セットをコンテナへ注入し、IRQ affinity の扱いも “housekeeping CPUs では無効化しない” 方向に調整されます。
  • housekeeping CPUs は「コンテナ割り当て CPU の先頭 CPU とその thread siblings(SMT の兄弟)」を基準に選ぶ、という挙動がリリースノートとコードに記載されています。

4) 依存関係更新(Kubernetes 0.34.1 / Podman ライブラリなど)

  • リリースノートの “Dependencies” にて、k8s.io/* が 0.34.0 → 0.34.1 に更新されたこと、go.podman.io/image/v5go.podman.io/storage が追加されたこと等が列挙されています。

背景(なぜこの変更が必要か)

credential provider 対応の背景

  • Kubernetes の kubelet は、レジストリ認証情報を exec プラグイン経由で動的に取得できる仕組み(kubelet image credential provider plugins)を持ち、静的な認証情報をディスクへ置く方式以外を選べます。
  • crio-credential-provider は、レジストリミラー向けの認証を「namespace にスコープされた Kubernetes Secret」を使って解決することを目的としており、k8s の credential provider API を使って kubelet から呼ばれ、namespace ごとの auth ファイルを生成する設計が README に整理されています。
  • それに合わせて CRI-O 側も、namespace を認識した pull 時に適切な auth ファイルを参照できる必要があり、v1.34.3 の “credential provider サポート” はこの統合を進める変更、と捉えられます。

CVE 修正の背景

  • コンテナイメージは外部入力であり、展開処理(tar 解析)で過剰なメモリ確保を誘発できると、ノード上で DoS 的な影響が出やすい領域です。v1.34.3 は依存ライブラリ更新でこのリスクを下げます。

housekeeping 追加の背景

  • 低レイテンシ志向の構成では「特定 CPU を割り込みやスケジューリングの揺らぎから隔離する」一方で、システム運用上は “割り込みを処理するための CPU” も必要になります。housekeeping は、その折衷(残す CPU セットの可視化と IRQ affinity の扱い)をアノテーション経由で選べるようにする変更です。

影響(運用者/利用者/開発者への影響、注意点、移行)

  • 運用者: crio-credential-provider を使う場合、CRI-O 側で --namespaced-auth-dir(および関連設定)を意識する必要があります。kubelet credential provider の設定は Kubernetes ドキュメントに従って実施します。
  • セキュリティ: CVE-2025-58183 対応が含まれるため、影響範囲のある環境では v1.34.3 への更新を検討ポイントにできます(少なくとも tar-split v0.12.2 を含むことが重要)。
  • 高性能ワークロード運用: irq-load-balancing.crio.io を使っている場合、housekeeping 値の追加により、従来の “disable/enable” とは別のチューニングが可能になります。コンテナ内へ OPENSHIFT_HOUSEKEEPING_CPUS が注入され得る点も考慮が必要です。
  • 開発者: イメージ pull の認証フロー(namespace・auth ファイル命名・一時ファイル化)に関わる挙動が追加されるため、テストや運用ドキュメント整備の対象になります。

用語メモ(用語の軽い説明)

  • CRI-O: Kubernetes の kubelet が使う CRI を OCI ランタイムで実装するコンテナランタイム。
  • CRI (Container Runtime Interface): kubelet とコンテナランタイム間の API。
  • kubelet image credential provider (exec plugin): kubelet がレジストリ認証情報を stdin/stdout 経由で外部プラグインに問い合わせる仕組み。
  • registry mirror / pull-through cache: 取得元レジストリの前段に置き、キャッシュや制御を行うミラー。
  • IRQ SMP affinity / housekeeping CPU: 割り込みをどの CPU が処理するか(affinity)を制御し、隔離 CPU とは別にシステム用の CPU(housekeeping)を確保する考え方。

参考リンク