3

从这个 Go 代码,我正在生成 CRD yaml。我在 Go 中使用以下结构。我想从枚举选项之一为参数“大小”和“大小写”分配默认值。赋值 // +kubebuilder:validation:default:=512 在生成的 yaml 文件中不生效。kubebuilder有什么办法,我们可以为枚举分配默认值吗?

type Options struct {
    // +kubebuilder:validation:default:=512
    // +kubebuilder:validation:Enum=64;128;256;512
    Size int64 `json:"Size"`
    
    // +kubebuilder:validation:Enum=caseA;caseB
    // +kubebuilder:validation:default:=caseA
    Case string `json:"case"`
}   



Generated yaml without default value
---------------
 case:
     enum:
      - caseA
      - caseB
     type: string

 Size:
     enum:
      - 64
      - 128
      - 256
      -512
     format: int64
     type: integer
4

2 回答 2

2

我正在按照这些思路做一些事情:

    // +kubebuilder:validation:Optional
    // +kubebuilder:validation:Enum=foo;bar
    // +kubebuilder:default:=none 
    Qux string `json:qux`

导致 yaml 看起来像:

              qux:
                default: foo
                enum:
                - foo
                - bar
                type: string

所以我认为使该字段可选是关键。

于 2021-01-26T12:45:07.557 回答
0

我认为您必须添加omitempty到 json 标记,否则它会使用类型的默认值 0 填充它

于 2022-03-01T09:40:40.640 回答