diff --git a/cmd/kube-apiserver/app/aggregator.go b/cmd/kube-apiserver/app/aggregator.go index 4289ce48d8f..f15082a1862 100644 --- a/cmd/kube-apiserver/app/aggregator.go +++ b/cmd/kube-apiserver/app/aggregator.go @@ -91,8 +91,8 @@ func createAggregatorConfig( // copy the etcd options so we don't mutate originals. etcdOptions := *commandOptions.Etcd etcdOptions.StorageConfig.Paging = utilfeature.DefaultFeatureGate.Enabled(features.APIListChunking) - etcdOptions.StorageConfig.Codec = aggregatorscheme.Codecs.LegacyCodec(v1beta1.SchemeGroupVersion, v1.SchemeGroupVersion) - etcdOptions.StorageConfig.EncodeVersioner = runtime.NewMultiGroupVersioner(v1beta1.SchemeGroupVersion, schema.GroupKind{Group: v1beta1.GroupName}) + etcdOptions.StorageConfig.Codec = aggregatorscheme.Codecs.LegacyCodec(v1.SchemeGroupVersion, v1beta1.SchemeGroupVersion) + etcdOptions.StorageConfig.EncodeVersioner = runtime.NewMultiGroupVersioner(v1.SchemeGroupVersion, schema.GroupKind{Group: v1beta1.GroupName}) genericConfig.RESTOptionsGetter = &genericoptions.SimpleRestOptionsFactory{Options: etcdOptions} // override MergedResourceConfig with aggregator defaults and registry diff --git a/cmd/kube-apiserver/app/apiextensions.go b/cmd/kube-apiserver/app/apiextensions.go index 438e8588c2b..45c65212a4a 100644 --- a/cmd/kube-apiserver/app/apiextensions.go +++ b/cmd/kube-apiserver/app/apiextensions.go @@ -68,6 +68,7 @@ func createAPIExtensionsConfig( etcdOptions := *commandOptions.Etcd etcdOptions.StorageConfig.Paging = utilfeature.DefaultFeatureGate.Enabled(features.APIListChunking) etcdOptions.StorageConfig.Codec = apiextensionsapiserver.Codecs.LegacyCodec(v1beta1.SchemeGroupVersion, v1.SchemeGroupVersion) + // prefer the more compact serialization (v1beta1) for storage until http://issue.k8s.io/82292 is resolved for objects whose v1 serialization is too big but whose v1beta1 serialization can be stored etcdOptions.StorageConfig.EncodeVersioner = runtime.NewMultiGroupVersioner(v1beta1.SchemeGroupVersion, schema.GroupKind{Group: v1beta1.GroupName}) genericConfig.RESTOptionsGetter = &genericoptions.SimpleRestOptionsFactory{Options: etcdOptions} diff --git a/pkg/apis/admissionregistration/install/install.go b/pkg/apis/admissionregistration/install/install.go index 86b5402739e..67b78812150 100644 --- a/pkg/apis/admissionregistration/install/install.go +++ b/pkg/apis/admissionregistration/install/install.go @@ -21,7 +21,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/apis/admissionregistration" - "k8s.io/kubernetes/pkg/apis/admissionregistration/v1" + v1 "k8s.io/kubernetes/pkg/apis/admissionregistration/v1" "k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1" ) @@ -34,5 +34,5 @@ func Install(scheme *runtime.Scheme) { utilruntime.Must(admissionregistration.AddToScheme(scheme)) utilruntime.Must(v1beta1.AddToScheme(scheme)) utilruntime.Must(v1.AddToScheme(scheme)) - utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion, v1.SchemeGroupVersion)) + utilruntime.Must(scheme.SetVersionPriority(v1.SchemeGroupVersion, v1beta1.SchemeGroupVersion)) } diff --git a/pkg/apis/certificates/install/install.go b/pkg/apis/certificates/install/install.go index f4e9fcb9ce3..26ff90e836c 100644 --- a/pkg/apis/certificates/install/install.go +++ b/pkg/apis/certificates/install/install.go @@ -36,6 +36,5 @@ func Install(scheme *runtime.Scheme) { utilruntime.Must(certificates.AddToScheme(scheme)) utilruntime.Must(v1.AddToScheme(scheme)) utilruntime.Must(v1beta1.AddToScheme(scheme)) - // TODO(liggitt): prefer v1 in 1.20 - utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion, v1.SchemeGroupVersion)) + utilruntime.Must(scheme.SetVersionPriority(v1.SchemeGroupVersion, v1beta1.SchemeGroupVersion)) } diff --git a/pkg/apis/coordination/install/install.go b/pkg/apis/coordination/install/install.go index 5ef66bddd07..378e50060a5 100644 --- a/pkg/apis/coordination/install/install.go +++ b/pkg/apis/coordination/install/install.go @@ -23,7 +23,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/apis/coordination" - "k8s.io/kubernetes/pkg/apis/coordination/v1" + v1 "k8s.io/kubernetes/pkg/apis/coordination/v1" "k8s.io/kubernetes/pkg/apis/coordination/v1beta1" ) @@ -36,5 +36,5 @@ func Install(scheme *runtime.Scheme) { utilruntime.Must(coordination.AddToScheme(scheme)) utilruntime.Must(v1beta1.AddToScheme(scheme)) utilruntime.Must(v1.AddToScheme(scheme)) - utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion, v1.SchemeGroupVersion)) + utilruntime.Must(scheme.SetVersionPriority(v1.SchemeGroupVersion, v1beta1.SchemeGroupVersion)) } diff --git a/pkg/apis/node/install/install.go b/pkg/apis/node/install/install.go index 678b767b157..7c5ebcb93d7 100644 --- a/pkg/apis/node/install/install.go +++ b/pkg/apis/node/install/install.go @@ -38,12 +38,5 @@ func Install(scheme *runtime.Scheme) { utilruntime.Must(v1alpha1.AddToScheme(scheme)) utilruntime.Must(v1beta1.AddToScheme(scheme)) utilruntime.Must(v1.AddToScheme(scheme)) - - // TODO (SergeyKanzhelev): priority should change after 1.21. See https://github.com/kubernetes/kubernetes/pull/95718#discussion_r520969477 - // This is what controls the preferred serialization version. Add both v1beta1 and v1 here, and prefer v1beta1 over v1 until 1.21. See the comment on test/integration/etcd around serialized version. - // - // Details on why we can't advance the storage version for a release are at https://kubernetes.io/docs/reference/using-api/deprecation-policy/: - // - // > Rule #4b: The "preferred" API version and the "storage version" for a given group may not advance until after a release has been made that supports both the new version and the previous version - utilruntime.Must(scheme.SetVersionPriority(v1beta1.SchemeGroupVersion, v1.SchemeGroupVersion)) + utilruntime.Must(scheme.SetVersionPriority(v1.SchemeGroupVersion, v1beta1.SchemeGroupVersion)) } diff --git a/pkg/controlplane/storageversionhashdata/data.go b/pkg/controlplane/storageversionhashdata/data.go index 20c2393912d..9307bf9d7d6 100644 --- a/pkg/controlplane/storageversionhashdata/data.go +++ b/pkg/controlplane/storageversionhashdata/data.go @@ -62,10 +62,10 @@ var GVRToStorageVersionHash = map[string]string{ "autoscaling/v2beta2/horizontalpodautoscalers": "oQlkt7f5j/A=", "batch/v1/jobs": "mudhfqk/qZY=", "batch/v1beta1/cronjobs": "h/JlFAZkyyY=", - "certificates.k8s.io/v1/certificatesigningrequests": "UQh3YTCDIf0=", - "certificates.k8s.io/v1beta1/certificatesigningrequests": "UQh3YTCDIf0=", - "coordination.k8s.io/v1beta1/leases": "/sY7hl8ol1U=", - "coordination.k8s.io/v1/leases": "/sY7hl8ol1U=", + "certificates.k8s.io/v1/certificatesigningrequests": "95fRKMXA+00=", + "certificates.k8s.io/v1beta1/certificatesigningrequests": "95fRKMXA+00=", + "coordination.k8s.io/v1beta1/leases": "gqkMMb/YqFM=", + "coordination.k8s.io/v1/leases": "gqkMMb/YqFM=", "discovery.k8s.io/v1beta1/endpointslices": "Nx3SIv6I0mE=", "extensions/v1beta1/ingresses": "ZOAfGflaKd0=", "networking.k8s.io/v1/networkpolicies": "YpfwF18m1G8=", @@ -73,8 +73,8 @@ var GVRToStorageVersionHash = map[string]string{ "networking.k8s.io/v1beta1/ingressclasses": "l/iqIbDgFyQ=", "networking.k8s.io/v1/ingresses": "ZOAfGflaKd0=", "networking.k8s.io/v1/ingressclasses": "l/iqIbDgFyQ=", - "node.k8s.io/v1/runtimeclasses": "8nMHWqj34s0=", - "node.k8s.io/v1beta1/runtimeclasses": "8nMHWqj34s0=", + "node.k8s.io/v1/runtimeclasses": "WQTu1GL3T2Q=", + "node.k8s.io/v1beta1/runtimeclasses": "WQTu1GL3T2Q=", "policy/v1beta1/poddisruptionbudgets": "6BGBu0kpHtk=", "policy/v1beta1/podsecuritypolicies": "khBLobUXkqA=", "rbac.authorization.k8s.io/v1/clusterrolebindings": "48tpQ8gZHFc=", @@ -100,10 +100,10 @@ var GVRToStorageVersionHash = map[string]string{ "apps/v1/deployments": "8aSe+NMegvE=", "apps/v1/replicasets": "P1RzHs8/mWQ=", "apps/v1/statefulsets": "H+vl74LkKdo=", - "admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations": "yxW1cpLtfp8=", - "admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations": "P9NhrezfnWE=", - "admissionregistration.k8s.io/v1/mutatingwebhookconfigurations": "yxW1cpLtfp8=", - "admissionregistration.k8s.io/v1/validatingwebhookconfigurations": "P9NhrezfnWE=", + "admissionregistration.k8s.io/v1beta1/mutatingwebhookconfigurations": "Sqi0GUgDaX0=", + "admissionregistration.k8s.io/v1beta1/validatingwebhookconfigurations": "B0wHjQmsGNk=", + "admissionregistration.k8s.io/v1/mutatingwebhookconfigurations": "Sqi0GUgDaX0=", + "admissionregistration.k8s.io/v1/validatingwebhookconfigurations": "B0wHjQmsGNk=", "events.k8s.io/v1/events": "r2yiGXH7wu8=", "events.k8s.io/v1beta1/events": "r2yiGXH7wu8=", "flowcontrol.apiserver.k8s.io/v1beta1/flowschemas": "9bSnTLYweJ0=", diff --git a/pkg/kubeapiserver/default_storage_factory_builder.go b/pkg/kubeapiserver/default_storage_factory_builder.go index 03e7437474c..b3b4dbd9310 100644 --- a/pkg/kubeapiserver/default_storage_factory_builder.go +++ b/pkg/kubeapiserver/default_storage_factory_builder.go @@ -63,9 +63,6 @@ func NewStorageFactoryConfig() *StorageFactoryConfig { resources := []schema.GroupVersionResource{ batch.Resource("cronjobs").WithVersion("v1beta1"), - networking.Resource("ingresses").WithVersion("v1beta1"), - networking.Resource("ingressclasses").WithVersion("v1beta1"), - apisstorage.Resource("csidrivers").WithVersion("v1beta1"), apisstorage.Resource("csistoragecapacities").WithVersion("v1alpha1"), } diff --git a/test/integration/etcd/data.go b/test/integration/etcd/data.go index aacfc350ba8..9f287acc7fe 100644 --- a/test/integration/etcd/data.go +++ b/test/integration/etcd/data.go @@ -165,6 +165,7 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("certificates.k8s.io", "v1beta1", "certificatesigningrequests"): { Stub: `{"metadata": {"name": "csr1"}, "spec": {"request": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQnlqQ0NBVE1DQVFBd2dZa3hDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saApNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01STXdFUVlEVlFRS0V3cEhiMjluYkdVZ1NXNWpNUjh3CkhRWURWUVFMRXhaSmJtWnZjbTFoZEdsdmJpQlVaV05vYm05c2IyZDVNUmN3RlFZRFZRUURFdzUzZDNjdVoyOXYKWjJ4bExtTnZiVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBcFp0WUpDSEo0VnBWWEhmVgpJbHN0UVRsTzRxQzAzaGpYK1prUHl2ZFlkMVE0K3FiQWVUd1htQ1VLWUhUaFZSZDVhWFNxbFB6eUlCd2llTVpyCldGbFJRZGRaMUl6WEFsVlJEV3dBbzYwS2VjcWVBWG5uVUsrNWZYb1RJL1VnV3NocmU4dEoreC9UTUhhUUtSL0oKY0lXUGhxYVFoc0p1elpidkFkR0E4MEJMeGRNQ0F3RUFBYUFBTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUlobAo0UHZGcStlN2lwQVJnSTVaTStHWng2bXBDejQ0RFRvMEprd2ZSRGYrQnRyc2FDMHE2OGVUZjJYaFlPc3E0ZmtIClEwdUEwYVZvZzNmNWlKeENhM0hwNWd4YkpRNnpWNmtKMFRFc3VhYU9oRWtvOXNkcENvUE9uUkJtMmkvWFJEMkQKNmlOaDhmOHowU2hHc0ZxakRnRkh5RjNvK2xVeWorVUM2SDFRVzdibgotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0="}}`, ExpectedEtcdPath: "/registry/certificatesigningrequests/csr1", + ExpectedGVK: gvkP("certificates.k8s.io", "v1", "CertificateSigningRequest"), }, // -- @@ -172,7 +173,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("certificates.k8s.io", "v1", "certificatesigningrequests"): { Stub: `{"metadata": {"name": "csr2"}, "spec": {"signerName":"example.com/signer", "usages":["any"], "request": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQnlqQ0NBVE1DQVFBd2dZa3hDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saApNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01STXdFUVlEVlFRS0V3cEhiMjluYkdVZ1NXNWpNUjh3CkhRWURWUVFMRXhaSmJtWnZjbTFoZEdsdmJpQlVaV05vYm05c2IyZDVNUmN3RlFZRFZRUURFdzUzZDNjdVoyOXYKWjJ4bExtTnZiVENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBcFp0WUpDSEo0VnBWWEhmVgpJbHN0UVRsTzRxQzAzaGpYK1prUHl2ZFlkMVE0K3FiQWVUd1htQ1VLWUhUaFZSZDVhWFNxbFB6eUlCd2llTVpyCldGbFJRZGRaMUl6WEFsVlJEV3dBbzYwS2VjcWVBWG5uVUsrNWZYb1RJL1VnV3NocmU4dEoreC9UTUhhUUtSL0oKY0lXUGhxYVFoc0p1elpidkFkR0E4MEJMeGRNQ0F3RUFBYUFBTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUlobAo0UHZGcStlN2lwQVJnSTVaTStHWng2bXBDejQ0RFRvMEprd2ZSRGYrQnRyc2FDMHE2OGVUZjJYaFlPc3E0ZmtIClEwdUEwYVZvZzNmNWlKeENhM0hwNWd4YkpRNnpWNmtKMFRFc3VhYU9oRWtvOXNkcENvUE9uUkJtMmkvWFJEMkQKNmlOaDhmOHowU2hHc0ZxakRnRkh5RjNvK2xVeWorVUM2SDFRVzdibgotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0="}}`, ExpectedEtcdPath: "/registry/certificatesigningrequests/csr2", - ExpectedGVK: gvkP("certificates.k8s.io", "v1beta1", "CertificateSigningRequest"), }, // -- @@ -180,7 +180,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("coordination.k8s.io", "v1", "leases"): { Stub: `{"metadata": {"name": "leasev1"}, "spec": {"holderIdentity": "holder", "leaseDurationSeconds": 5}}`, ExpectedEtcdPath: "/registry/leases/" + namespace + "/leasev1", - ExpectedGVK: gvkP("coordination.k8s.io", "v1beta1", "Lease"), }, // -- @@ -188,6 +187,7 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("coordination.k8s.io", "v1beta1", "leases"): { Stub: `{"metadata": {"name": "leasev1beta1"}, "spec": {"holderIdentity": "holder", "leaseDurationSeconds": 5}}`, ExpectedEtcdPath: "/registry/leases/" + namespace + "/leasev1beta1", + ExpectedGVK: gvkP("coordination.k8s.io", "v1", "Lease"), }, // -- @@ -218,7 +218,7 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("extensions", "v1beta1", "ingresses"): { Stub: `{"metadata": {"name": "ingress1"}, "spec": {"backend": {"serviceName": "service", "servicePort": 5000}}}`, ExpectedEtcdPath: "/registry/ingress/" + namespace + "/ingress1", - ExpectedGVK: gvkP("networking.k8s.io", "v1beta1", "Ingress"), + ExpectedGVK: gvkP("networking.k8s.io", "v1", "Ingress"), }, // -- @@ -226,10 +226,12 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("networking.k8s.io", "v1beta1", "ingresses"): { Stub: `{"metadata": {"name": "ingress2"}, "spec": {"backend": {"serviceName": "service", "servicePort": 5000}}}`, ExpectedEtcdPath: "/registry/ingress/" + namespace + "/ingress2", + ExpectedGVK: gvkP("networking.k8s.io", "v1", "Ingress"), }, gvr("networking.k8s.io", "v1beta1", "ingressclasses"): { Stub: `{"metadata": {"name": "ingressclass2"}, "spec": {"controller": "example.com/controller"}}`, ExpectedEtcdPath: "/registry/ingressclasses/ingressclass2", + ExpectedGVK: gvkP("networking.k8s.io", "v1", "IngressClass"), }, // -- @@ -237,12 +239,10 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("networking.k8s.io", "v1", "ingresses"): { Stub: `{"metadata": {"name": "ingress3"}, "spec": {"defaultBackend": {"service":{"name":"service", "port":{"number": 5000}}}}}`, ExpectedEtcdPath: "/registry/ingress/" + namespace + "/ingress3", - ExpectedGVK: gvkP("networking.k8s.io", "v1beta1", "Ingress"), }, gvr("networking.k8s.io", "v1", "ingressclasses"): { Stub: `{"metadata": {"name": "ingressclass3"}, "spec": {"controller": "example.com/controller"}}`, ExpectedEtcdPath: "/registry/ingressclasses/ingressclass3", - ExpectedGVK: gvkP("networking.k8s.io", "v1beta1", "IngressClass"), }, gvr("networking.k8s.io", "v1", "networkpolicies"): { Stub: `{"metadata": {"name": "np2"}, "spec": {"podSelector": {"matchLabels": {"e": "f"}}}}`, @@ -398,12 +398,10 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("admissionregistration.k8s.io", "v1", "validatingwebhookconfigurations"): { Stub: `{"metadata":{"name":"hook2","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore","sideEffects":"None","admissionReviewVersions":["v1beta1"]}]}`, ExpectedEtcdPath: "/registry/validatingwebhookconfigurations/hook2", - ExpectedGVK: gvkP("admissionregistration.k8s.io", "v1beta1", "ValidatingWebhookConfiguration"), }, gvr("admissionregistration.k8s.io", "v1", "mutatingwebhookconfigurations"): { Stub: `{"metadata":{"name":"hook2","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore","sideEffects":"None","admissionReviewVersions":["v1beta1"]}]}`, ExpectedEtcdPath: "/registry/mutatingwebhookconfigurations/hook2", - ExpectedGVK: gvkP("admissionregistration.k8s.io", "v1beta1", "MutatingWebhookConfiguration"), }, // -- @@ -411,10 +409,12 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("admissionregistration.k8s.io", "v1beta1", "validatingwebhookconfigurations"): { Stub: `{"metadata":{"name":"hook1","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`, ExpectedEtcdPath: "/registry/validatingwebhookconfigurations/hook1", + ExpectedGVK: gvkP("admissionregistration.k8s.io", "v1", "ValidatingWebhookConfiguration"), }, gvr("admissionregistration.k8s.io", "v1beta1", "mutatingwebhookconfigurations"): { Stub: `{"metadata":{"name":"hook1","creationTimestamp":null},"webhooks":[{"name":"externaladmissionhook.k8s.io","clientConfig":{"service":{"namespace":"ns","name":"n"},"caBundle":null},"rules":[{"operations":["CREATE"],"apiGroups":["group"],"apiVersions":["version"],"resources":["resource"]}],"failurePolicy":"Ignore"}]}`, ExpectedEtcdPath: "/registry/mutatingwebhookconfigurations/hook1", + ExpectedGVK: gvkP("admissionregistration.k8s.io", "v1", "MutatingWebhookConfiguration"), }, // -- @@ -446,6 +446,7 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("apiregistration.k8s.io", "v1beta1", "apiservices"): { Stub: `{"metadata": {"name": "as1.foo.com"}, "spec": {"group": "foo.com", "version": "as1", "groupPriorityMinimum":100, "versionPriority":10}}`, ExpectedEtcdPath: "/registry/apiregistration.k8s.io/apiservices/as1.foo.com", + ExpectedGVK: gvkP("apiregistration.k8s.io", "v1", "APIService"), }, // -- @@ -454,7 +455,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("apiregistration.k8s.io", "v1", "apiservices"): { Stub: `{"metadata": {"name": "as2.foo.com"}, "spec": {"group": "foo.com", "version": "as2", "groupPriorityMinimum":100, "versionPriority":10}}`, ExpectedEtcdPath: "/registry/apiregistration.k8s.io/apiservices/as2.foo.com", - ExpectedGVK: gvkP("apiregistration.k8s.io", "v1beta1", "APIService"), }, // -- @@ -499,7 +499,7 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("node.k8s.io", "v1alpha1", "runtimeclasses"): { Stub: `{"metadata": {"name": "rc1"}, "spec": {"runtimeHandler": "h1"}}`, ExpectedEtcdPath: "/registry/runtimeclasses/rc1", - ExpectedGVK: gvkP("node.k8s.io", "v1beta1", "RuntimeClass"), + ExpectedGVK: gvkP("node.k8s.io", "v1", "RuntimeClass"), }, // -- @@ -507,6 +507,7 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("node.k8s.io", "v1beta1", "runtimeclasses"): { Stub: `{"metadata": {"name": "rc2"}, "handler": "h2"}`, ExpectedEtcdPath: "/registry/runtimeclasses/rc2", + ExpectedGVK: gvkP("node.k8s.io", "v1", "RuntimeClass"), }, // -- @@ -514,9 +515,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes gvr("node.k8s.io", "v1", "runtimeclasses"): { Stub: `{"metadata": {"name": "rc3"}, "handler": "h3"}`, ExpectedEtcdPath: "/registry/runtimeclasses/rc3", - // TODO (SergeyKanzhelev): in 1.21 this should be switched to v1. See https://github.com/kubernetes/kubernetes/pull/95718/files#r520967927 - // this has to stay at v1beta1 for a release, otherwise a 1.19 API server won't be able to read the data persisted in etcd and will break during a multi-server upgrade - ExpectedGVK: gvkP("node.k8s.io", "v1beta1", "RuntimeClass"), }, // -- @@ -547,14 +545,13 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes etcdStorageData[gvr("storage.k8s.io", "v1beta1", "csidrivers")] = StorageData{ Stub: `{"metadata": {"name": "csid1"}, "spec": {"attachRequired": true, "podInfoOnMount": true}}`, ExpectedEtcdPath: "/registry/csidrivers/csid1", + ExpectedGVK: gvkP("storage.k8s.io", "v1", "CSIDriver"), } // k8s.io/kubernetes/pkg/apis/storage/v1 - // TODO: Remove ExpectedGVK in next release etcdStorageData[gvr("storage.k8s.io", "v1", "csidrivers")] = StorageData{ Stub: `{"metadata": {"name": "csid2"}, "spec": {"attachRequired": true, "podInfoOnMount": true}}`, ExpectedEtcdPath: "/registry/csidrivers/csid2", - ExpectedGVK: gvkP("storage.k8s.io", "v1beta1", "CSIDriver"), } return etcdStorageData