Невозможно добавить PodSpec в API, выдает ошибку проверки схемы OpenAPI
Пытаюсь добавить
PodSpec
в API для примера оператора memcached, как показано ниже.
// 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, как показано ниже.
$ 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-sdk
:
1.0.1
kubernetes version
:
1.19.0