[Bug]: gpu-operator images v26.7.0+, contain an uncompressed layer; v26.7.1+ also switched to OCI manifest types breaks Quay/oc-mirror mirroring
メンテナーはふだん 1 日以内に返信
@rahulait がすでに取り組んでいます。
2026年11月3日 から。
評価
この issue はまだ評価されていません。
説明
Evidence
1. Manifest-list media type per version
$ for tag in v25.10.0 v26.3.3 v26.7.0 v26.7.1 v26.7.2; do
echo "=== $tag ==="
skopeo inspect --raw docker://nvcr.io/nvidia/gpu-operator:$tag | jq -r .mediaType
done
=== v25.10.0 ===
application/vnd.docker.distribution.manifest.list.v2+json
=== v26.3.3 ===
application/vnd.docker.distribution.manifest.list.v2+json
=== v26.7.0 ===
application/vnd.docker.distribution.manifest.list.v2+json
=== v26.7.1 ===
application/vnd.oci.image.index.v1+json
=== v26.7.2 ===
application/vnd.oci.image.index.v1+json
2. Layer media types per version (amd64)
$ for tag in v25.10.0 v26.3.3 v26.7.0 v26.7.1 v26.7.2; do
echo "=== $tag ==="
digest=$(skopeo inspect --raw docker://nvcr.io/nvidia/gpu-operator:$tag \
| jq -r '.manifests[] | select(.platform.architecture=="amd64") | .digest')
skopeo inspect --raw docker://nvcr.io/nvidia/gpu-operator@$digest \
| jq -r '.layers[].mediaType' | sort | uniq -c
done
=== v25.10.0 ===
36 application/vnd.docker.image.rootfs.diff.tar.gzip
=== v26.3.3 ===
42 application/vnd.docker.image.rootfs.diff.tar.gzip
=== v26.7.0 ===
1 application/vnd.docker.image.rootfs.diff.tar
42 application/vnd.docker.image.rootfs.diff.tar.gzip
=== v26.7.1 ===
1 application/vnd.oci.image.layer.v1.tar
42 application/vnd.oci.image.layer.v1.tar+gzip
=== v26.7.2 ===
1 application/vnd.oci.image.layer.v1.tar
42 application/vnd.oci.image.layer.v1.tar+gzip
3. The uncompressed layer is confirmed at the byte level, not just a label
$ TOKEN=$(curl -s "https://nvcr.io/token?service=nvcr.io&scope=repository:nvidia/gpu-operator:pull" \
| jq -r .token)
$ amd64_digest=$(skopeo inspect --raw docker://nvcr.io/nvidia/gpu-operator:v26.7.2 \
| jq -r '.manifests[] | select(.platform.architecture=="amd64") | .digest')
$ layer_digest=$(skopeo inspect --raw docker://nvcr.io/nvidia/gpu-operator@$amd64_digest \
| jq -r '.layers[] | select(.mediaType | contains("gzip") | not) | .digest')
$ curl -sL -H "Authorization: Bearer $TOKEN" \
"https://nvcr.io/v2/nvidia/gpu-operator/blobs/$layer_digest" -o layer.bin
$ file -b layer.bin
POSIX tar archive (GNU)
$ tar -tvf layer.bin
etc/
etc/ssl/
etc/ssl/fipsmodule.cnf
etc/ssl/openssl-fips.cnf
etc/ssl/openssl-nofips.cnf
This same layer (containing OpenSSL/FIPS config files) is present,
uncompressed, in v26.7.0, v26.7.1, and v26.7.2. It does not exist at all
in v25.10.0 or v26.3.3.
Impact
Customers mirroring certified operator bundles (e.g. via oc-mirror) to
a disconnected Red Hat Quay registry fail with:
[ERROR] : [Worker] error mirroring image
docker://nvcr.io/nvidia/cloud-native/<image>@sha256:...
error: Manifest list must be converted to type
"application/vnd.docker.distribution.manifest.list.v2+json" ...
"Instructed to preserve digests"
The only workaround today is a manual skopeo copy --format v2s2 --multi-arch=all re-push per image, which doesn't scale for
disconnected/air-gapped operator mirroring workflows.
Fix
- Identify the build step (introduced between v26.3.3 and v26.7.0) that
adds the FIPS/OpenSSL config layer, and ensure it's gzip-compressed
like every other layer. - Revert to publishing Docker v2 Schema2 manifest/manifest-list media
types (as in v25.10.0/v26.3.3/v26.7.0) instead of OCI-only, given the
broader ecosystem's Docker v2s2 compatibility expectations for
certified/catalog content.
Environment
- Images affected:
nvcr.io/nvidia/gpu-operator(and likely other
nvidia/cloud-native/*child images referenced by the certified
gpu-operator-bundle) - Versions: v25.10.0, v26.3.3, v26.7.0, v26.7.1, v26.7.2 (current latest)
- Tools used to reproduce:
skopeo1.22.3,jq,file,tar,curl
- 主要言語
- Go
- スター
- 3k
- フォーク
- 592
- 平均マージ
- 3日 19時間
- マージ済み PR(30日)
- 63
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
NVIDIA/gpu-operator のほかの issue
-
[Bug]: GPUCluster common name label breaks DRA validator selector対応中かも @ajavanma が 44 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
NVIDIA/gpu-operator#2955 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Support digest-pinned precompiled driver images対応中かも @rahulait が 1 日前に担当しました。 オープンneeds-triage
NVIDIA/gpu-operator#3173 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
feature lifecycle/frozen needs-triage
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
NVIDIA/gpu-operator#3165 ·
メンテナーはふだん 1 日以内に返信
-
[Bug]: GPUCluster DRA kubelet plugin uses driver root / on Talos and cannot find libnvidia-ml.so.1再び着手できるかも @roma5087 が 8 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
NVIDIA/gpu-operator#3139 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug]: Helm chart always sets NVIDIADriver spec.manager.image, so a default driver-manager bump reinstalls the driver on every GPU node再び着手できるかも @akshat-lakhera が 8 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
NVIDIA/gpu-operator#3135 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
NVIDIA/gpu-operator の issue をすべて見る
似ている issue
-
Query cache: a failed cache page read leaves the set request's read lock held, so the scan hangsオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
turbot/steampipe-plugin-sdk#986 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
router-for-me/CLIProxyAPI#7307 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
betterleaks/betterleaks#460 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
openmcp-project/service-provider-crossplane#330 ·
メンテナーはふだん 1 日以内に返信