Kubernetes 由于OpenAPI架构验证错误,无法在API中添加PodSpec

Kubernetes 由于OpenAPI架构验证错误,无法在API中添加PodSpec,kubernetes,operator-sdk,kubebuilder,Kubernetes,Operator Sdk,Kubebuilder,尝试在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"` PodSp

尝试在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"`
}
$ 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
尽管能够生成操作员映像,但是当尝试将操作员与
CRD
一起部署时,CRD验证失败,如下所示的“OpenAPI模式验证”

// 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"`
}
$ 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
$make deploy IMG=kprasad99/memcached操作符:0.0.4
go:创建新go.mod:模块tmp
go:在sigs.k8s.io/controller-tools v0.3.0中找到sigs.k8s.io/controller-tools/cmd/controller-gen
/控制器gen“crd:versions=true”rbac:roleName=manager角色webhook path=“./…”输出:crd:artifacts:config=config/crd/base
go:创建新go.mod:模块tmp
cd config/manager&&/kustomize编辑集映像控制器=kprasad99/memcached运算符:0.0.4
/kustomize build config/default | kubectl apply-f-
命名空间/memcached运算符系统未更改
警告:apiextensions.k8s.io/v1beta1 CustomResourceDefinition在v1.16+中已弃用,在v1.22+中不可用;使用apiextensions.k8s.io/v1 CustomResourceDefinition
role.rbac.authorization.k8s.io/memcached-operator-leader-election-role未更改
clusterrole.rbac.authorization.k8s.io/memcached-operator-manager-role已配置
clusterrole.rbac.authorization.k8s.io/memcached-operator-metrics-reader未更改
clusterrole.rbac.authorization.k8s.io/memcached-operator-proxy-role未更改
rolebinding.rbac.authorization.k8s.io/memcached-operator-leader-election-rolebinding未更改
clusterrolebinding.rbac.authorization.k8s.io/memcached-operator-manager-rolebinding未更改
clusterrolebinding.rbac.authorization.k8s.io/memcached-operator-proxy-rolebinding未更改
服务/memcached操作员控制器管理器度量服务未更改
deployment.apps/memcached-operator-controller-manager未更改
CustomResourceDefinition“cache.memcached.kprasad99.github.io”无效:
*spec.validation.openAPIV3Schema.properties[spec].properties[podSpec].properties[initContainers].items.properties[ports].items.properties[protocol]。默认值:必需值:此属性位于x-kubernetes-list-map-keys中,因此必须具有默认值或必需属性
*spec.validation.openAPIV3Schema.properties[spec].properties[podSpec].properties[containers].items.properties[ports].items.properties[protocol]。默认值:必需值:此属性位于x-kubernetes-list-map-keys中,因此必须具有默认值或必需属性
make:**[Makefile:51:deploy]错误1
任何一个洞察这个错误的人都会非常感激,他们试图使用
api扩展版本v1
,即使出现同样的错误

版本:
operator sdk
1.0.1

kubernetes版本
1.19.0