K8s的五种代码生成器
K8s的五种代码生成器
概述
代码生成器 | 说明 |
---|---|
Conversion-gen | 自动生成convert函数的代码是生成器,用于资源对象的版本转换函数 |
deepcopy-gen | 自动生成deepcopy的函数代码生成器,用于资源对象的深复制函数 |
defaulter-gen | 自动生成defaulter的函数代码生成器,用于资源对象的默认值函数 |
prerelese- lifecycle-gen | 自动生成api-status.csv文件的工具 |
openapi-gen | 自动生成openapi定义文件的代码生成器 |
除了上述之外,其实还支持很多,比如client-gen、lister-gen、informer-gen
Conversion-gen
自动生成convert函数的代码是生成器,用于资源对象的版本转换函数
常规引入tag
+k8s:conversion-gen=<peer-pkg> |
生成规则
Conversion-gen会遍历包中所有类型,如果类型为types.Map,type.Slice,type.Pointer,types.Struct,type.Alias:且过滤掉了私有的types.Map,types.Slice,type.Pointer,type.Alias,且生产convert函数,同时为该类型同时生成RegisterConversions注册函数
deep copy-gen
实现类型的深拷贝
// +k8s:deepcopy-gen=package |
通过在表单的类型定义上指定注释,可以单个类型而不是整个包生成DeepCopy函数
// +k8s:deepcopy-gen=true |
default-gen
自动生成Defaulter函数
# 为拥有ListMeta属性的类型生成Default相关函数,其Tag形式如下 |
openapi-gen
根据OpenAPI规范生成代码,为客户端库、服务器存根
# 为特定类型|包生成 |
prerelese- lifecycle-gen
主要为beta API生成zz_api_status.go文件,该文件指示种类、引入版本,将被弃用的版本以及被删除的版本。
// +k8s:prereplease-lifecycle-gen=package |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论