我正在使用CRD开发 Controller 。 CRD包含我们的自定义内容以及嵌入式core.v1.PodSpec。 (v1.13.1)
我在CRD中定义了一个验证部分,该部分可以验证和强制执行对自定义字段的约束,但是我不知道如何针对嵌入式PodSpec执行此操作。 PodSpec太大且选项太多,无法手动将其添加到CRD的validate部分:
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: mystuff.example.com
spec:
group: mystuff.example.com
versions:
- name: v1alpha1
served: true
storage: true
names:
kind: MyStuff
plural: mystuffs
singular: mystuff
shortNames:
- ms
scope: Namespaced
additionalPrinterColumns:
- JSONPath: .status.phase
name: Status
type: string
- JSONPath: .metadata.resourceVersion
name: Version
type: string
validation:
openAPIV3Schema:
properties:
spec:
required:
- myVar1
- myVar2
- podSpec
properties:
myVar1:
type: boolean
myVar2:
type: boolean
# Here I need to validate a valid core.v1.PodSpec
podSpec:
type: core.v1.PodSpec
其他人如何处理?
我还需要验证用户可以提交工作负载的任何机制,即直接使用kube apiserver或使用kubectl。
谢谢你的帮助。
最佳答案
通常,CRD不允许放置对其他对象的引用。对此进行了讨论:https://github.com/kubernetes/kubernetes/issues/54579。决定不添加参考。
此注释中描述了解决方法:https://github.com/kubernetes/kubernetes/issues/54579#issuecomment-370372942
我没有使用过,但您可以尝试。
关于go - 验证具有嵌入式core.v1.PodSpec的CRD,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56044319/