【发布时间】:2021-12-31 10:54:46
【问题描述】:
我有一个自定义资源定义,其中包含具有默认值的嵌套字段(为简洁起见,省略了一些样板文件):
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
spec:
scope: Namespaced
group: thismatters.stackoverflow
names:
kind: BadDefault
versions:
- name: v1alpha
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
regularThing:
type: integer
default: 6
shouldDefault:
type: object
properties:
nestedThing:
type: integer
default: 12
每当我在没有指定 shouldDefault 对象的情况下创建此类资源时:
apiVersion: thismatters.stackoverflow/v1alpha
kind: BadDefault
metadata:
name: blank-demo
spec:
regularThing: 7
.shouldDefault.nestedThing的默认值在资源为described时不会出现:
apiVersion: thismatters.stackoverflow/v1alpha
kind: BadDefault
metadata:
name: blank-demo
spec:
regularThing: 7
如果我使用此清单更新资源:
apiVersion: thismatters.stackoverflow/v1alpha
kind: BadDefault
metadata:
name: blank-demo
spec:
regularThing: 7
shouldDefault: {}
然后在described时填充嵌套字段默认值:
apiVersion: thismatters.stackoverflow/v1alpha
kind: BadDefault
metadata:
name: blank-demo
spec:
regularThing: 7
shouldDefault:
nestedThing: 12
我可以在 CRD 中做些什么来消除资源清单中对 shouldDefault: {} 行的需求,并在嵌套字段中填充默认值吗?
我的集群使用的是 Kubernetes 1.19 版。
【问题讨论】:
-
您正在使用已弃用的 Kubernetes 版本。你能把它更新成supported one吗?
-
EKS 仍然支持 1.19(甚至仍然支持 1.18)。 1.19 中是否存在阻止自动填充嵌套字段的默认值的已知问题?
标签: kubernetes kubernetes-custom-resources