Kubernetes 客户端代码生成器:代码能否仅存在于本地而不存在于核心生成器工作的存储库中?
Kubernetes client code generator: Can the code exist only locally and not on a repository for the core-generator to work?
我正在尝试使用 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 的内容对其进行了模拟。为了简单起见,在同一目录中执行此操作。
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
标志指定要使用的头文件。 -o
标志指定了这里必需的输出基础,因为我们不在 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
来源
我正在尝试使用 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 的内容对其进行了模拟。为了简单起见,在同一目录中执行此操作。
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
标志指定要使用的头文件。 -o
标志指定了这里必需的输出基础,因为我们不在 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