无法在API中添加PodSpec会导致OpenAPI架构验证错误

问题描述

尝试为示例memcached operator在API中添加PodSpec,如下所示。

// MemcachedSpec defines the desired state of Memcached
type MemcachedSpec struct {
    // +kubebuilder:validation:Minimum=0
    // Size is the size of the memcached deployment
    Size int32 `json:"size"`
    PodSpec corev1.PodSpec `json:"podSpec"`
}

尽管能够生成操作员映像,但是当尝试与CRD一起部署操作员时,CRD验证将通过如下所示的“ OpenAPI Schema验证”失败。

$ make deploy IMG=kprasad99/memcached-operator:0.0.4
go: creating new go.mod: module tmp
go: found sigs.k8s.io/controller-tools/cmd/controller-gen in sigs.k8s.io/controller-tools v0.3.0
<hide>/controller-gen "crd:trivialVersions=true" rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
go: creating new go.mod: module tmp
cd config/manager && <hide>/kustomize edit set image controller=kprasad99/memcached-operator:0.0.4
<hide>/kustomize build config/default | kubectl apply -f -
namespace/memcached-operator-system unchanged
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+,unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
role.rbac.authorization.k8s.io/memcached-operator-leader-election-role unchanged
clusterrole.rbac.authorization.k8s.io/memcached-operator-manager-role configured
clusterrole.rbac.authorization.k8s.io/memcached-operator-metrics-reader unchanged
clusterrole.rbac.authorization.k8s.io/memcached-operator-proxy-role unchanged
rolebinding.rbac.authorization.k8s.io/memcached-operator-leader-election-rolebinding unchanged
clusterrolebinding.rbac.authorization.k8s.io/memcached-operator-manager-rolebinding unchanged
clusterrolebinding.rbac.authorization.k8s.io/memcached-operator-proxy-rolebinding unchanged
service/memcached-operator-controller-manager-metrics-service unchanged
deployment.apps/memcached-operator-controller-manager unchanged
The CustomResourceDefinition "cache.memcached.kprasad99.github.io" is invalid: 
* spec.validation.openAPIV3Schema.properties[spec].properties[podSpec].properties[initContainers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys,so it must have a default or be a required property
* spec.validation.openAPIV3Schema.properties[spec].properties[podSpec].properties[containers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys,so it must have a default or be a required property
make: *** [Makefile:51: deploy] Error 1

任何有见识的人都非常感谢这个错误,尝试使用api extension version v1,即使那里也出现同样的错误。

版本:
operator-sdk1.0.1
kubernetes version1.19.0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...