kubernetes 子项目(例如:kube-aggregator)代码生成不完整,

mepcadol  于 5个月前  发布在  Kubernetes
关注(0)|答案(5)|浏览(132)

我们有这些脚本在 staging/src/k8s.io/code-generator 中,名为 "generate-groups.sh" 和 "generate-internal-groups.sh"。
想要 kube-style 代码生成(deepcopy、conversion、openapi、client 等)的外部项目调用它们。我们为 k8s.io/kube-aggregatork8s.io/sample-apiserverk8s.io/metrics 等内部项目模拟了这种模式(参见 hack/update-codegen.sh 以获取完整列表)。
如果你手动从例如 staging/src/k8s.io/kube-aggregator 中删除所有生成的文件,然后重新运行其自身的 update-codegen.sh ,你可能会期望所有文件都回来。你会错的。
一些 (prerelease-lifecycle) 在 "generate-groups" 中没有支持。
特别是 openapi,很奇怪。在 .../kube-aggregator/pkg/generated/openapi/zz_generated.openapi.go 中有生成的 openapi 文件,但 .../kube-aggregator/hack/update-codegen.sh 没有要求 openapi 生成。它被 k/k/hack/update-codegen.sh 中的 (非常扭曲的) openapi 逻辑所覆盖。
如果你将 openapi 添加到 .../kube-aggregator/hck/update-codegen 中,它会生成一个等效的文件,但在不同的地方!结果是 .../kube-aggregator/pkg/client/openapi 而不是 .../kube-aggregator/pkg/generated/openapi
为什么?因为调用 generate-internal-groups.sh 传递了一个 "output dir" 为 .../pkg/client ,所以显然输出会在那里。
一个简单的修复方法只是从 .../pkg/client 中消耗 openapi,但很明显 openapi 应该在一个 "client" 目录中。
一个更复杂的修复方法是分解并替换或消除这些 "generate-groups" 脚本,这些脚本证明有些脆弱且难以维护。我们可以保留它们供外部客户端使用,但提供更好的替代方案,也许。
使子项目脚本处理 openapi 的好处是,可以在 k/k/hack/update-codegen.sh 中的 (再次,非常扭曲的) openapi 逻辑被移除。那将很好。
我现在没有时间解决这个问题,所以我把它留作“损坏”状态并提交这个 bug,希望有人有更好的上下文能提出意见。
@liggitt@sttts

dphi5xsq

dphi5xsq2#

这个问题已经超过一年没有更新了,应该重新进行优先级评估。
你可以:

  • 确认这个问题仍然与 /triage accepted (仅组织成员)相关
  • /close 关闭这个问题

有关优先级评估过程的更多详细信息,请参见 https://www.kubernetes.dev/docs/guide/issue-triage/
已接受移除优先级评估

ars1skjm

ars1skjm3#

错误的按钮,抱歉。

2o7dmzc5

2o7dmzc55#

自从go workspaces上线以来,我手动删除了kube-aggregator中的所有"不要编辑"文件,并重新运行了更新脚本。现在剩下的是:

$ git st
On branch master
Your branch is ahead of 'origin/master' by 854 commits.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	deleted:    staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1/generated.pb.go
	deleted:    staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/generated.pb.go
	deleted:    staging/src/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1/zz_generated.prerelease-lifecycle.go

相关问题