首页 > 解决方案 > 参考现有的 kubernetes 类型生成 kubernetes 客户端代码

问题描述

我正在为 kubernetes 编写 CRD,并且无法让代码生成器工作。特别是,对于引用 a 的特定结构,生成 deepcopy 函数失败batch.JobTemplateSpec。注释掉该行可以解决我的问题。

我已经尝试过各种导入和注册JobTemplateSpecin register.go,但这似乎不是解决方案。

特别是,该结构看起来像这样:

type TestSpec struct {

    Selector *metav1.LabelSelector `json:"selector,omitempty"`

    //Commenting out the JobTemplate fixes my problem
    JobTemplate batch.JobTemplateSpec `json:"jobTemplate,omitempty"`

}

我最终得到的是来自 codegen 脚本的这个错误:

Generating client codes...
Generating deepcopy funcs
F0411 18:54:09.409084     251 deepcopy.go:885] Hit an unsupported type invalid type for invalid type, from test/pkg/apis/test/v1.TestSpec

其余代码生成失败。

标签: kubernetesclient-go

解决方案


我在尝试复制https://blog.openshift.com/kubernetes-deep-dive-code-generation-customresources/中的步骤时遇到了这个问题,发现我需要更改目录以避免这个问题。

如果我位于 Go 工作区的根目录,例如$GOPATH/src,我收到了您收到的错误。但是如果我更改到项目目录,例如$GOPATH/src/github.com/openshift-evangelist/crd-code-generation,问题就消失了。


推荐阅读