Kubebuilder中的kubebuilder-gen标记(注解)

之前使用kubebuilder做k8soperator开发时候有很多注解其实并不太知道其具体内容,云原生社区的中文文档中也没有很好的翻译这部分内容,网络上的博客也没有很多相关的内容,这里给大家分享一下自己翻译的开发时常用到的标记,希望可以帮助到有。

1. CRD生成

作用于结构体上方,用于配置全局显示和启用

1.1 配置CRD范围和别名

//+kubebuilder:resource:scope=Cluster,shortName={'',''},categories={'',''}

常用参数:

  1. scope=Cluster:非命名空间资源(于node类似,不需要指定命名空间),若不加则为命名空间资源

  2. shortNam={}:定义CRD的别名,可以定义多个(类似于service==svc),注解中切片用{"",""}表示

  3. categories={}资源组的别名

1.2 指定kubectl get时显示的字段

//+kubebuilder:printcolumn:JSONPath=<string>
//+kubebuilder:printcolumn:JSONPath=".status.replicas",name=Replicas,type=string

可选参数:

  1. JSONPath显示的字段
  2. name当前列标题
  3. format:当前列格式
  4. priority=<int>当前列的优先级
  5. type=<string>当前列的类型

1.3 启用status和scale子对象

//+kubebuilder:subresource:scale
//+kubebuilder:subresource:status

默认开启status后,外部修改的status将不会被捕获,只能通过控制器使用status().update()来修改

2. CRD字段验证

字段验证注解作用于结构体内部的字段之上

2.1 默认值

// 设置默认值
//+kubebuilder:default=

// 允许空值
//+nullable

2.2 设置枚举

该字段只能使用这些值中的一个,否则无法通过apiservice检查

//+kubebuilder:validation:Enum={}

2.3 长度限制

// 数组最大/小长度
//+kubebuilder:validation:MaxItems=
//+kubebuilder:validation:MinItems=

// 字符串的最大/小长度
//+kubebuilder:validation:MaxLength=
//+kubebuilder:validation:MinLength=

// 允许的最大/小数字
//+kubebuilder:validation:Maximum=
//+kubebuilder:validation:Minimum=

2.4 格式限制

// 该字段是可选字段,非必须(默认都是必须)
//+kubebuilder:validation:Optional

// 该字段必须存在
//+kubebuilder:validation:Required

// 只能是该数的倍数
//+kubebuilder:validation:MultipleOf=

// 该字段内容的正则匹配
//+kubebuilder:validation:Pattern=

// 指定格式 (默认使用go的类型)
//+kubebuilder:validation:Type=

// 该字段全局唯一(不可以和其他cr相同)
//+kubebuilder:validation:UniqueItems=true

3. RBAC权限

作用域控制器的Reconcile方法上方,用于获取Client-go需要的权限

//+kubebuilder:rbac:group=,resources=,verbs={}

可选参数:

  1. group:权限的组(group.domain)
  2. resources资源类型
  3. verbs需要的权限类型
  4. resourceNames:API名称
  5. namespace权限需要的范围
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值