diff --git a/hack/update-openapi-spec.sh b/hack/update-openapi-spec.sh index 0016f4510de..2262627c625 100755 --- a/hack/update-openapi-spec.sh +++ b/hack/update-openapi-spec.sh @@ -67,7 +67,7 @@ kube::log::status "Starting kube-apiserver" --etcd-servers="http://${ETCD_HOST}:${ETCD_PORT}" \ --advertise-address="10.10.10.10" \ --cert-dir="${TMP_DIR}/certs" \ - --runtime-config="api/all=true,extensions/v1beta1/daemonsets=true,extensions/v1beta1/deployments=true,extensions/v1beta1/replicasets=true,extensions/v1beta1/networkpolicies=true,extensions/v1beta1/podsecuritypolicies=true,extensions/v1beta1/replicationcontrollers=true" \ + --runtime-config="api/all=true" \ --token-auth-file="${TMP_DIR}/tokenauth.csv" \ --service-account-issuer="https://kubernetes.devault.svc/" \ --service-account-signing-key-file="${KUBE_ROOT}/staging/src/k8s.io/client-go/util/cert/testdata/dontUseThisKey.pem" \ diff --git a/test/integration/apiserver/admissionwebhook/admission_test.go b/test/integration/apiserver/admissionwebhook/admission_test.go index c4edc682572..3aea2748c29 100644 --- a/test/integration/apiserver/admissionwebhook/admission_test.go +++ b/test/integration/apiserver/admissionwebhook/admission_test.go @@ -439,8 +439,7 @@ func testWebhookAdmission(t *testing.T, watchCache bool) { // turn off admission plugins that add finalizers "--disable-admission-plugins=ServiceAccount,StorageObjectInUseProtection", // force enable all resources so we can check storage. - // TODO: drop these once we stop allowing them to be served. - "--runtime-config=api/all=true,extensions/v1beta1/deployments=true,extensions/v1beta1/daemonsets=true,extensions/v1beta1/replicasets=true,extensions/v1beta1/podsecuritypolicies=true,extensions/v1beta1/networkpolicies=true", + "--runtime-config=api/all=true", }, etcdConfig) defer server.TearDownFn() diff --git a/test/integration/apiserver/print_test.go b/test/integration/apiserver/print_test.go index 7e8721ac06a..612db0309e5 100644 --- a/test/integration/apiserver/print_test.go +++ b/test/integration/apiserver/print_test.go @@ -26,8 +26,6 @@ import ( "testing" "time" - appsv1beta1 "k8s.io/api/apps/v1beta1" - appsv1beta2 "k8s.io/api/apps/v1beta2" auditregv1alpha1 "k8s.io/api/auditregistration/v1alpha1" batchv2alpha1 "k8s.io/api/batch/v2alpha1" discoveryv1alpha1 "k8s.io/api/discovery/v1alpha1" @@ -144,6 +142,28 @@ var missingHanlders = sets.NewString( "PriorityLevelConfiguration", // TODO(yue9944882): remove this comment by merging print-handler for flow-control API ) +// known types that are no longer served we should tolerate restmapper errors for +var unservedTypes = map[schema.GroupVersionKind]bool{ + {Group: "extensions", Version: "v1beta1", Kind: "ControllerRevision"}: true, + {Group: "extensions", Version: "v1beta1", Kind: "DaemonSet"}: true, + {Group: "extensions", Version: "v1beta1", Kind: "Deployment"}: true, + {Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicy"}: true, + {Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicy"}: true, + {Group: "extensions", Version: "v1beta1", Kind: "ReplicaSet"}: true, + + {Group: "apps", Version: "v1beta1", Kind: "ControllerRevision"}: true, + {Group: "apps", Version: "v1beta1", Kind: "DaemonSet"}: true, + {Group: "apps", Version: "v1beta1", Kind: "Deployment"}: true, + {Group: "apps", Version: "v1beta1", Kind: "ReplicaSet"}: true, + {Group: "apps", Version: "v1beta1", Kind: "StatefulSet"}: true, + + {Group: "apps", Version: "v1beta2", Kind: "ControllerRevision"}: true, + {Group: "apps", Version: "v1beta2", Kind: "DaemonSet"}: true, + {Group: "apps", Version: "v1beta2", Kind: "Deployment"}: true, + {Group: "apps", Version: "v1beta2", Kind: "ReplicaSet"}: true, + {Group: "apps", Version: "v1beta2", Kind: "StatefulSet"}: true, +} + func TestServerSidePrint(t *testing.T) { s, _, closeFn := setupWithResources(t, // additional groupversions needed for the test to run @@ -156,19 +176,11 @@ func TestServerSidePrint(t *testing.T) { settingsv1alpha1.SchemeGroupVersion, schedulerapi.SchemeGroupVersion, storagev1alpha1.SchemeGroupVersion, - appsv1beta1.SchemeGroupVersion, - appsv1beta2.SchemeGroupVersion, extensionsv1beta1.SchemeGroupVersion, nodev1alpha1.SchemeGroupVersion, flowcontrolv1alpha1.SchemeGroupVersion, }, - []schema.GroupVersionResource{ - extensionsv1beta1.SchemeGroupVersion.WithResource("daemonsets"), - extensionsv1beta1.SchemeGroupVersion.WithResource("deployments"), - extensionsv1beta1.SchemeGroupVersion.WithResource("networkpolicies"), - extensionsv1beta1.SchemeGroupVersion.WithResource("podsecuritypolicies"), - extensionsv1beta1.SchemeGroupVersion.WithResource("replicasets"), - }, + []schema.GroupVersionResource{}, ) defer closeFn() @@ -220,6 +232,9 @@ func TestServerSidePrint(t *testing.T) { // read table definition as returned by the server mapping, err := mapper.RESTMapping(gvk.GroupKind(), gvk.Version) if err != nil { + if unservedTypes[gvk] { + continue + } t.Errorf("unexpected error getting mapping for GVK %s: %v", gvk, err) continue } diff --git a/test/integration/dryrun/dryrun_test.go b/test/integration/dryrun/dryrun_test.go index 38e2e254929..730f887f085 100644 --- a/test/integration/dryrun/dryrun_test.go +++ b/test/integration/dryrun/dryrun_test.go @@ -213,7 +213,7 @@ func TestDryRun(t *testing.T) { // start API server s, err := kubeapiservertesting.StartTestServer(t, kubeapiservertesting.NewDefaultTestServerOptions(), []string{ "--disable-admission-plugins=ServiceAccount,StorageObjectInUseProtection", - "--runtime-config=extensions/v1beta1/deployments=true,extensions/v1beta1/daemonsets=true,extensions/v1beta1/replicasets=true,extensions/v1beta1/podsecuritypolicies=true,extensions/v1beta1/networkpolicies=true", + "--runtime-config=api/all=true", }, framework.SharedEtcd()) if err != nil { t.Fatal(err) diff --git a/test/integration/etcd/data.go b/test/integration/etcd/data.go index a69e4ad86fd..e4b10416d80 100644 --- a/test/integration/etcd/data.go +++ b/test/integration/etcd/data.go @@ -101,52 +101,6 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes }, // -- - // k8s.io/kubernetes/pkg/apis/apps/v1beta1 - gvr("apps", "v1beta1", "statefulsets"): { - Stub: `{"metadata": {"name": "ss1"}, "spec": {"selector": {"matchLabels": {"a": "b"}}, "template": {"metadata": {"labels": {"a": "b"}}}}}`, - ExpectedEtcdPath: "/registry/statefulsets/" + namespace + "/ss1", - ExpectedGVK: gvkP("apps", "v1", "StatefulSet"), - }, - gvr("apps", "v1beta1", "deployments"): { - Stub: `{"metadata": {"name": "deployment2"}, "spec": {"selector": {"matchLabels": {"f": "z"}}, "template": {"metadata": {"labels": {"f": "z"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container6"}]}}}}`, - ExpectedEtcdPath: "/registry/deployments/" + namespace + "/deployment2", - ExpectedGVK: gvkP("apps", "v1", "Deployment"), - }, - gvr("apps", "v1beta1", "controllerrevisions"): { - Stub: `{"metadata":{"name":"crs1"},"data":{"name":"abc","namespace":"default","creationTimestamp":null,"Spec":{"Replicas":0,"Selector":{"matchLabels":{"foo":"bar"}},"Template":{"creationTimestamp":null,"labels":{"foo":"bar"},"Spec":{"Volumes":null,"InitContainers":null,"Containers":null,"RestartPolicy":"Always","TerminationGracePeriodSeconds":null,"ActiveDeadlineSeconds":null,"DNSPolicy":"ClusterFirst","NodeSelector":null,"ServiceAccountName":"","AutomountServiceAccountToken":null,"NodeName":"","SecurityContext":null,"ImagePullSecrets":null,"Hostname":"","Subdomain":"","Affinity":null,"SchedulerName":"","Tolerations":null,"HostAliases":null}},"VolumeClaimTemplates":null,"ServiceName":""},"Status":{"ObservedGeneration":null,"Replicas":0}},"revision":0}`, - ExpectedEtcdPath: "/registry/controllerrevisions/" + namespace + "/crs1", - ExpectedGVK: gvkP("apps", "v1", "ControllerRevision"), - }, - // -- - - // k8s.io/kubernetes/pkg/apis/apps/v1beta2 - gvr("apps", "v1beta2", "statefulsets"): { - Stub: `{"metadata": {"name": "ss2"}, "spec": {"selector": {"matchLabels": {"a": "b"}}, "template": {"metadata": {"labels": {"a": "b"}}}}}`, - ExpectedEtcdPath: "/registry/statefulsets/" + namespace + "/ss2", - ExpectedGVK: gvkP("apps", "v1", "StatefulSet"), - }, - gvr("apps", "v1beta2", "deployments"): { - Stub: `{"metadata": {"name": "deployment3"}, "spec": {"selector": {"matchLabels": {"f": "z"}}, "template": {"metadata": {"labels": {"f": "z"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container6"}]}}}}`, - ExpectedEtcdPath: "/registry/deployments/" + namespace + "/deployment3", - ExpectedGVK: gvkP("apps", "v1", "Deployment"), - }, - gvr("apps", "v1beta2", "daemonsets"): { - Stub: `{"metadata": {"name": "ds5"}, "spec": {"selector": {"matchLabels": {"a": "b"}}, "template": {"metadata": {"labels": {"a": "b"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container6"}]}}}}`, - ExpectedEtcdPath: "/registry/daemonsets/" + namespace + "/ds5", - ExpectedGVK: gvkP("apps", "v1", "DaemonSet"), - }, - gvr("apps", "v1beta2", "replicasets"): { - Stub: `{"metadata": {"name": "rs2"}, "spec": {"selector": {"matchLabels": {"g": "h"}}, "template": {"metadata": {"labels": {"g": "h"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container4"}]}}}}`, - ExpectedEtcdPath: "/registry/replicasets/" + namespace + "/rs2", - ExpectedGVK: gvkP("apps", "v1", "ReplicaSet"), - }, - gvr("apps", "v1beta2", "controllerrevisions"): { - Stub: `{"metadata":{"name":"crs2"},"data":{"name":"abc","namespace":"default","creationTimestamp":null,"Spec":{"Replicas":0,"Selector":{"matchLabels":{"foo":"bar"}},"Template":{"creationTimestamp":null,"labels":{"foo":"bar"},"Spec":{"Volumes":null,"InitContainers":null,"Containers":null,"RestartPolicy":"Always","TerminationGracePeriodSeconds":null,"ActiveDeadlineSeconds":null,"DNSPolicy":"ClusterFirst","NodeSelector":null,"ServiceAccountName":"","AutomountServiceAccountToken":null,"NodeName":"","SecurityContext":null,"ImagePullSecrets":null,"Hostname":"","Subdomain":"","Affinity":null,"SchedulerName":"","Tolerations":null,"HostAliases":null}},"VolumeClaimTemplates":null,"ServiceName":""},"Status":{"ObservedGeneration":null,"Replicas":0}},"revision":0}`, - ExpectedEtcdPath: "/registry/controllerrevisions/" + namespace + "/crs2", - ExpectedGVK: gvkP("apps", "v1", "ControllerRevision"), - }, - // -- - // k8s.io/kubernetes/pkg/apis/apps/v1 gvr("apps", "v1", "daemonsets"): { Stub: `{"metadata": {"name": "ds6"}, "spec": {"selector": {"matchLabels": {"a": "b"}}, "template": {"metadata": {"labels": {"a": "b"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container6"}]}}}}`, @@ -253,36 +207,11 @@ func GetEtcdStorageDataForNamespace(namespace string) map[schema.GroupVersionRes // -- // k8s.io/kubernetes/pkg/apis/extensions/v1beta1 - gvr("extensions", "v1beta1", "daemonsets"): { - Stub: `{"metadata": {"name": "ds1"}, "spec": {"selector": {"matchLabels": {"u": "t"}}, "template": {"metadata": {"labels": {"u": "t"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container5"}]}}}}`, - ExpectedEtcdPath: "/registry/daemonsets/" + namespace + "/ds1", - ExpectedGVK: gvkP("apps", "v1", "DaemonSet"), - }, - gvr("extensions", "v1beta1", "podsecuritypolicies"): { - Stub: `{"metadata": {"name": "psp1"}, "spec": {"fsGroup": {"rule": "RunAsAny"}, "privileged": true, "runAsUser": {"rule": "RunAsAny"}, "seLinux": {"rule": "MustRunAs"}, "supplementalGroups": {"rule": "RunAsAny"}}}`, - ExpectedEtcdPath: "/registry/podsecuritypolicy/psp1", - ExpectedGVK: gvkP("policy", "v1beta1", "PodSecurityPolicy"), - }, 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"), }, - gvr("extensions", "v1beta1", "networkpolicies"): { - Stub: `{"metadata": {"name": "np1"}, "spec": {"podSelector": {"matchLabels": {"e": "f"}}}}`, - ExpectedEtcdPath: "/registry/networkpolicies/" + namespace + "/np1", - ExpectedGVK: gvkP("networking.k8s.io", "v1", "NetworkPolicy"), - }, - gvr("extensions", "v1beta1", "deployments"): { - Stub: `{"metadata": {"name": "deployment1"}, "spec": {"selector": {"matchLabels": {"f": "z"}}, "template": {"metadata": {"labels": {"f": "z"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container6"}]}}}}`, - ExpectedEtcdPath: "/registry/deployments/" + namespace + "/deployment1", - ExpectedGVK: gvkP("apps", "v1", "Deployment"), - }, - gvr("extensions", "v1beta1", "replicasets"): { - Stub: `{"metadata": {"name": "rs1"}, "spec": {"selector": {"matchLabels": {"g": "h"}}, "template": {"metadata": {"labels": {"g": "h"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container4"}]}}}}`, - ExpectedEtcdPath: "/registry/replicasets/" + namespace + "/rs1", - ExpectedGVK: gvkP("apps", "v1", "ReplicaSet"), - }, // -- // k8s.io/kubernetes/pkg/apis/networking/v1beta1 diff --git a/test/integration/etcd/etcd_cross_group_test.go b/test/integration/etcd/etcd_cross_group_test.go index d801aea7c7b..aa99d61ec9a 100644 --- a/test/integration/etcd/etcd_cross_group_test.go +++ b/test/integration/etcd/etcd_cross_group_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -37,12 +37,6 @@ import ( func TestCrossGroupStorage(t *testing.T) { master := StartRealMasterOrDie(t, func(opts *options.ServerRunOptions) { // force enable all resources so we can check storage. - // TODO: drop these once we stop allowing them to be served. - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/deployments"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/daemonsets"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/replicasets"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/podsecuritypolicies"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/networkpolicies"] = "true" }) defer master.Cleanup() diff --git a/test/integration/etcd/etcd_storage_path_test.go b/test/integration/etcd/etcd_storage_path_test.go index a9f160bdb08..4bc8a6c51e8 100644 --- a/test/integration/etcd/etcd_storage_path_test.go +++ b/test/integration/etcd/etcd_storage_path_test.go @@ -26,7 +26,7 @@ import ( "go.etcd.io/etcd/clientv3" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" apiequality "k8s.io/apimachinery/pkg/api/equality" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -51,13 +51,6 @@ const testNamespace = "etcdstoragepathtestnamespace" // it essentially means that you will be break old clusters unless you create some migration path for the old data. func TestEtcdStoragePath(t *testing.T) { master := StartRealMasterOrDie(t, func(opts *options.ServerRunOptions) { - // force enable all resources so we can check storage. - // TODO: drop these once we stop allowing them to be served. - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/deployments"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/daemonsets"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/replicasets"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/podsecuritypolicies"] = "true" - opts.APIEnablement.RuntimeConfig["extensions/v1beta1/networkpolicies"] = "true" }) defer master.Cleanup() defer dumpEtcdKVOnFailure(t, master.KV) diff --git a/test/integration/scale/scale_test.go b/test/integration/scale/scale_test.go index f23b4981b6f..f3c7a8d01bb 100644 --- a/test/integration/scale/scale_test.go +++ b/test/integration/scale/scale_test.go @@ -54,8 +54,7 @@ func TestMain(m *testing.M) { func TestScaleSubresources(t *testing.T) { clientSet, tearDown := setupWithOptions(t, nil, []string{ "--runtime-config", - // TODO(liggitt): remove these once apps/v1beta1, apps/v1beta2, and extensions/v1beta1 can no longer be served - "api/all=true,extensions/v1beta1/deployments=true,extensions/v1beta1/replicationcontrollers=true,extensions/v1beta1/replicasets=true", + "api/all=true", }) defer tearDown() @@ -67,18 +66,6 @@ func TestScaleSubresources(t *testing.T) { expectedScaleSubresources := map[schema.GroupVersionResource]schema.GroupVersionKind{ makeGVR("", "v1", "replicationcontrollers/scale"): makeGVK("autoscaling", "v1", "Scale"), - // TODO(liggitt): remove these once apps/v1beta1, apps/v1beta2, and extensions/v1beta1 can no longer be served - makeGVR("extensions", "v1beta1", "deployments/scale"): makeGVK("extensions", "v1beta1", "Scale"), - makeGVR("extensions", "v1beta1", "replicationcontrollers/scale"): makeGVK("extensions", "v1beta1", "Scale"), - makeGVR("extensions", "v1beta1", "replicasets/scale"): makeGVK("extensions", "v1beta1", "Scale"), - - makeGVR("apps", "v1beta1", "deployments/scale"): makeGVK("apps", "v1beta1", "Scale"), - makeGVR("apps", "v1beta1", "statefulsets/scale"): makeGVK("apps", "v1beta1", "Scale"), - - makeGVR("apps", "v1beta2", "deployments/scale"): makeGVK("apps", "v1beta2", "Scale"), - makeGVR("apps", "v1beta2", "replicasets/scale"): makeGVK("apps", "v1beta2", "Scale"), - makeGVR("apps", "v1beta2", "statefulsets/scale"): makeGVK("apps", "v1beta2", "Scale"), - makeGVR("apps", "v1", "deployments/scale"): makeGVK("autoscaling", "v1", "Scale"), makeGVR("apps", "v1", "replicasets/scale"): makeGVK("autoscaling", "v1", "Scale"), makeGVR("apps", "v1", "statefulsets/scale"): makeGVK("autoscaling", "v1", "Scale"),