-
Notifications
You must be signed in to change notification settings - Fork 453
Closed
Labels
kind/bugCategorizes issue or PR as related to a bug.Categorizes issue or PR as related to a bug.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.Denotes an issue or PR that has aged beyond stale and will be auto-closed.
Description
From the original issue operator-framework/operator-sdk#3235:
An api/v1/types.go
containing k8s.io/api/core/v1.Container
:
// +kubebuilder:object:generate=true
// +groupName=example.com
package v1
import (
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/controller-runtime/pkg/scheme"
)
var (
GroupVersion = schema.GroupVersion{Group: "example.com", Version: "v1"}
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
AddToScheme = SchemeBuilder.AddToScheme
)
type AppSpec struct {
Containers v1.Container `json:"container"`
}
type AppStatus struct{}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
type App struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AppSpec `json:"spec,omitempty"`
Status AppStatus `json:"status,omitempty"`
}
Then:
$ go get sigs.k8s.io/controller-tools/cmd/controller-gen@master
go: found sigs.k8s.io/controller-tools/cmd/controller-gen in sigs.k8s.io/controller-tools v0.4.2-0.20201118235450-895eccc97eb5
$ controller-gen crd:crdVersions=v1beta1 paths=./api/v1/... output:crd:artifacts:config=.
Warning: default unsupported in CRD version v1beta1, v1 required. Removing defaults.
$ kind create cluster --image=kindest/node:v1.18.8 # Kubernetes v1.18 cluster
...
$ kubectl apply -f example.com_apps.yaml
The CustomResourceDefinition "apps.example.com" is invalid: spec.validation.openAPIV3Schema.properties[spec].properties[container].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
Removing protocol
from the x-kubernetes-list-map-keys
list fixes this (as expected) since defaulting is not supported in v1beta1. This was fixed for v1 CRDs but the fixes (listed below) were not tested on v1beta1 CRDs afaict.
Related issues: #444, #445, kubernetes/kubernetes#91395
/kind bug
Metadata
Metadata
Assignees
Labels
kind/bugCategorizes issue or PR as related to a bug.Categorizes issue or PR as related to a bug.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.Denotes an issue or PR that has aged beyond stale and will be auto-closed.