go - Kubernetes 客户端代码生成器 : Can the code exist only locally and not on a repository for the core-generator to work?

标签 go kubernetes code-generation 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 模块的所有内容。我的理解正确吗?

最佳答案

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

确认

克隆 kubernetes/code-generator进入一个新目录。

$HOME/somedir
├── code-generator

创建了一个名为 myrepo 的项目并用类似于 sample-controller 的内容 mock 它.在同一目录中执行此操作以使其简单。

somedir
├── code-generator
└── myorg.com
    └── myrepo        # mock of sample-controller
        ├── go.mod
        ├── go.sum
        └── pkg
            └── apis
                └── myorg
                    ├── register.go
                    └── v1alpha1
                        ├── doc.go
                        ├── register.go
                        └── types.go

我的 go.mod 看起来像
module myorg.com/myrepo

go 1.14

require k8s.io/apimachinery v0.17.4

generate-group.sh . -h flag 指定要使用的头文件。 -o flag 指定了这里需要的输出基数,因为我们不在 GOPATH 中。

$HOME/somedir/code-generator/generate-groups.sh all myorg.com/myrepo/pkg/client myorg.com/myrepo/pkg/apis "myorg:v1alpha1" \
-h $HOME/somedir/code-generator/hack/boilerplate.go.txt \
-o $HOME/somedir

在正确位置生成的确认代码

myrepo
├── go.mod
├── go.sum
└── pkg
    ├── apis
    │   └── myorg
    │       ├── register.go
    │       └── v1alpha1
    │           ├── doc.go
    │           ├── register.go
    │           ├── types.go
    │           └── zz_generated.deepcopy.go
    └── client
        ├── clientset
        │   └── versioned
        │       ├── clientset.go
        │       ├── doc.go
        │       ├── fake
        │       ├── scheme
        │       └── typed
        ├── informers
        │   └── externalversions
        │       ├── factory.go
        │       ├── generic.go
        │       ├── internalinterfaces
        │       └── myorg
        └── listers
            └── myorg
                └── v1alpha1

来源
  • Go 模块支持 https://github.com/kubernetes/code-generator/issues/57
  • Go 模块的文档或支持 https://github.com/kubernetes/sample-controller/issues/47
  • 关于go - Kubernetes 客户端代码生成器 : Can the code exist only locally and not on a repository for the core-generator to work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60094368/

    相关文章:

    go - vim-go、模块和 GoRename

    go - Go 项目的依赖 URL 列表

    Kubernetes Ingress proxy-body-size 注释已停止工作

    java - jaxb:如何影响恶意代码的生成

    c++ - 如何避免指针运算中的乘法?

    go - 基于内存消耗的自动缓存逐出

    go - 将数字和字母混合的字符串转换为数字

    kubernetes - 如何在 kubernetes 中安装 grafana 插件?

    kubernetes - 如何获取 Kubernetes 集群的总内存 (RAM)?

    Flutter Injectable 工厂未注册错误