ate-setup deploy ate-system fails on in-place upgrade when v1alpha1 CRDs exist (storedVersions: ["v1alpha1"] missing from spec.versions)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- go, kubernetes
調査の方向性
Read cmd/ate-setup/internal/steps/deploy.go at DeployCRDs and inspect the three generated CRDs named in the issue. First reproduce the upgrade failure using the supplied kubectl commands and go run ./cmd/ate-setup deploy ate-system. Done means an in-place upgrade succeeds while preserving existing custom resources; the issue describes keeping the old version during migration or migrating stored objects before removing it.
索引モデルが issue の本文から書いたものです。
説明
Summary & Root Cause
Commit 48f5744c replaced name: v1alpha1 with name: v1 in the generated CRDs and did not keep v1alpha1 as a served-false, storage-false version. A cluster installed before that change has status.storedVersions: ["v1alpha1"] on workerpools.ate.dev, sandboxconfigs.ate.dev and csidriverconfigs.ate.dev. The API server refuses any CRD update that drops a version still listed in storedVersions. DeployCRDs just re-applies the generated manifests and has no migration step (no StorageVersionMigration, no storedVersions rewrite), so the upgrade fails at the first step.
Affected Code Locations
manifests/ate-install/generated/ate.dev_workerpools.yaml:32, 52, 632-633(single versionv1,served: true,storage: true)manifests/ate-install/generated/ate.dev_sandboxconfigs.yaml:43(single versionname: v1)manifests/ate-install/generated/ate.dev_csidriverconfigs.yaml:40(single versionname: v1)cmd/ate-setup/internal/steps/deploy.go:666-676(DeployCRDs: appliesgeneratedwith no storage-version handling)- Commit
48f5744c("Move public APIs underapi/<api-name>/v1", #2996) renamed the CRD versionv1alpha1→v1in place, with no transitionalv1alpha1entry.
Detailed Reproduction Guide
-
On a cluster where a CRD was created with
v1alpha1as its storage version (simulated on a fresh cluster by applying av1alpha1-onlyworkerpools.ate.devbefore the first deploy), confirm:kubectl get crd workerpools.ate.dev -o jsonpath='{.status.storedVersions}' -
Run the deploy:
go run ./cmd/ate-setup deploy ate-system -
Control: delete the CRD and deploy again:
kubectl delete crd workerpools.ate.dev go run ./cmd/ate-setup deploy ate-system
Expected vs. Actual Behavior
- Expected:
deploy ate-systemupgrades CRDs in place, either by keepingv1alpha1inspec.versionswithserved: false, storage: falseuntil storage is migrated, or by migrating objects and trimmingstatus.storedVersionsbefore applying the new CRD. - Actual: The deploy fails immediately at
[step]: deploy_crds. It only succeeds after the operator deletes the custom resources and CRDs by hand, which destroys everyWorkerPoolandSandboxConfig.
Observed Output & Logs
[step]: deploy_crds
Error: while applying customresourcedefinition/workerpools.ate.dev: CustomResourceDefinition.apiextensions.k8s.io "workerpools.ate.dev" is invalid: status.storedVersions[0]: Invalid value: "v1alpha1": missing from spec.versions; v1alpha1 was previously a storage version, and must remain in spec.versions ...
versions after DeployCRDs: v1alpha1
[step]: deploy_crds
Error: ... status.storedVersions[0]: Invalid value: "v1alpha1": missing from spec.versions
- 主要言語
- Go
- スター
- 6.1k
- フォーク
- 676
- 平均マージ
- 2日 2時間
- マージ済み PR(30日)
- 538
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
agent-substrate/substrate のほかの issue
-
Clean up the ko retry tests対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンarea/dev-infra area/reliability area/tests kind/cleanup
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
agent-substrate/substrate#3461 ·
メンテナーはふだん 1 日以内に返信
-
egress: drop the empty-provider check in providerCredential対応中かも @cloudonly が 5 日前に担当しました。 オープンarea/network kind/cleanup
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
agent-substrate/substrate#3428 ·
メンテナーはふだん 1 日以内に返信
-
kubectl-ate create actor-template -f <file> fails with useless error対応中かも @cloudonly が 7 日前に担当しました。 オープンarea/cli kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
agent-substrate/substrate#3406 ·
メンテナーはふだん 1 日以内に返信
-
k8s-credential-provider manifest is missing ate-otel-config envFrom, failing OTLP metric exports to [::1]:4317 / 127.0.0.1:4317 every 60s対応中かも @ericcurtin が 7 日前に担当しました。 オープンarea/dev-infra area/observability area/security kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
agent-substrate/substrate#3282 ·
メンテナーはふだん 1 日以内に返信
-
filecachegc.runPass suppresses eviction logs when FreedBytes < target and consecutiveShortfalls > 3対応中かも @ericcurtin が 6 日前に担当しました。 オープンarea/node area/observability area/storage kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
agent-substrate/substrate#3281 ·
メンテナーはふだん 1 日以内に返信
agent-substrate/substrate の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
TUM-Dev/Campus-Backend#678 ·
メンテナーはふだん 1 日以内に返信
-
fix(app): fail closed if GetGeneralSetting fails during initialization対応中かも @kalavt が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
tsukumogami/tsuku#2813 ·
メンテナーはふだん 1 日以内に返信
-
component:obi contribfest go test
難易度 2/5 1時間未満 初心者へのやさしさ 83/100
open-telemetry/opentelemetry-ebpf-instrumentation#4143 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信