在定义 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
. 它可以是自由形式吗?这意味着我可以传递任何键/值对,并且在我的代码中我得到一个可以包含键/值对的集合(可能是一个映射)。
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={}).: