在定义K8 CRD时,我需要在提交资源对象时灵活地传递任何键/值对作为输入。https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
cronSpec:
type: string
image:
type: string
replicas:
type: integer
从上面的链接,如果你看到属性只能保存cronSpec
,image
和/或replicas
。它可以是自由格式的吗?这意味着我可以传递任何键/值对,在我的代码中,我得到一个集合(可能是一个Map),可以包含键/值对。
https://stackoverflow.com/users/14044/mike-bryant我尝试使用此CRD:
schema:
openAPIV3Schema:
type: object
properties:
apiVersion:
type: string
spec:
type: object
properties:
appProperties:
type: object
properties:
messages:
type: array
items:
type: object
properties:
key:
type: string
value:
type: string
其中自定义对象具有如下输入:
messages:
- key: "server1"
value: "ping failed"
- key: "server2"
value: "abort"
- key: "server3"
value: "succes"
但是当我用一些更新状态修补crd时,k8失败并出现以下错误:
kind=Status, message=the server rejected our request due to an error in our request, metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=Invalid, status=Failure, additionalProperties={}).:
2条答案
按热度按时间vaj7vani1#
我认为您可以使用
additionalProperties
来完成此操作。x-kubernetes-preserve-unknown-fields
也可能有用:https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#controlling-pruningslwdgvem2#
我们可以将
additionalProperties
与type: string
结合使用。例如,我将
customSelector
属性添加到规范中。customSelector
属于object(Map)类型,其中包含用于键/值的字符串。