Kubernetes 客户端代码生成器:代码是否只能存在于本地而不存在于核心生成器运行的存储库中?

cod*_*123 0 code-generation go kubernetes client-go

我正在尝试使用 k8s.io/code-generator 生成客户端代码。这些是我遵循的说明:https://itnext.io/how-to-generate-client-codes-for-kubernetes-custom-resource-definitions-crd-b4b9907769ba

我的问题是,我的 go 模块是否需要存在于存储库中,或者我可以简单地在仅存在于我的本地系统而不是任何存储库上的 go 模块上运行generate-groups.sh 脚本吗?

我已经尝试过运行它,据我了解,需要有一个存储库包含我的本地 go 模块的所有内容。我的理解正确吗?

小智 8

您可以在仅存在于本地系统上的 go 模块上运行kubernetes/code-generator \ 的generate-groups.sh。代码生成器和模块都不需要位于您的GOPATH.

\n\n

确认

\n\n

将kubernetes/code-generator克隆到新目录中。

\n\n
$HOME/somedir\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 code-generator\n
Run Code Online (Sandbox Code Playgroud)\n\n

创建了一个名为myrepo并模拟它的项目,其内容类似于sample-controller。为了简单起见,将其放在同一目录中。

\n\n
somedir\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 code-generator\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myorg.com\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myrepo        # mock of sample-controller\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.sum\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pkg\n            \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 apis\n                \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myorg\n                    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 register.go\n                    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 v1alpha1\n                        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 doc.go\n                        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 register.go\n                        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 types.go\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的 go.mod 看起来像

\n\n
module myorg.com/myrepo\n\ngo 1.14\n\nrequire k8s.io/apimachinery v0.17.4\n
Run Code Online (Sandbox Code Playgroud)\n\n

generate-group.sh。该-h标志指定要使用哪个头文件。该-o标志指定输出基数,这是必要的,因为我们不在 GOPATH 中。

\n\n
module myorg.com/myrepo\n\ngo 1.14\n\nrequire k8s.io/apimachinery v0.17.4\n
Run Code Online (Sandbox Code Playgroud)\n\n

确认代码在正确位置生成

\n\n
$HOME/somedir/code-generator/generate-groups.sh all myorg.com/myrepo/pkg/client myorg.com/myrepo/pkg/apis "myorg:v1alpha1" \\\n-h $HOME/somedir/code-generator/hack/boilerplate.go.txt \\\n-o $HOME/somedir\n
Run Code Online (Sandbox Code Playgroud)\n\n

来源

\n\n\n