ate-setup deploy ate-system fails on in-place upgrade when v1alpha1 CRDs exist (storedVersions: ["v1alpha1"] missing from spec.versions)
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 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.4k
- 派生
- 720
- 平均合并
- 1 天 18 小时
- 30 天内合并 PR
- 413
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
agent-substrate/substrate 的其他 Issue
-
network-egress.md describes actor certificate checks the egress gateway doesn't make可能已有人在做 @ericcurtin 于 4 天前认领。 未关闭area/network area/security kind/docs
难度 2/5 1-3 小时 新手友好度 74/100
agent-substrate/substrate#3709 ·
维护者通常 1 天内回复
-
Clean up the ko retry tests可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭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 于 11 天前认领。 未关闭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 于 13 天前认领。 未关闭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 于 14 天前认领。 未关闭area/dev-infra area/observability area/security kind/bug
难度 2/5 1-3 小时 新手友好度 82/100
agent-substrate/substrate#3282 ·
维护者通常 1 天内回复
查看 agent-substrate/substrate 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
GitHub webhook is not subscribed to release events, so `event: release` never triggers可能已有人在做 @qsun 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
woodpecker-ci/woodpecker#7542 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
zilliztech/milvus-backup#1386 ·
维护者通常 1 天内回复
-
Pipelined flush no longer observes kill signals after #2042: flush backoffer is built with nil vars未关闭
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复