Remove references to unserved types

This commit is contained in:
Jordan Liggitt 2019-12-02 11:23:54 -05:00
parent 3df9e86a4e
commit 18ba6f9482
8 changed files with 32 additions and 115 deletions

View File

@ -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" \

View File

@ -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()

View File

@ -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
}

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -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)

View File

@ -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"),