diff --git a/cluster/update-storage-objects.sh b/cluster/update-storage-objects.sh index d1f8affa133..0218526a666 100755 --- a/cluster/update-storage-objects.sh +++ b/cluster/update-storage-objects.sh @@ -54,6 +54,7 @@ declare -a resources=( "clusterroles.rbac.authorization.k8s.io" "clusterrolebindings.rbac.authorization.k8s.io" "networkpolicies.networking.k8s.io" + "ingresses.networking.k8s.io" ) # Find all the namespaces. diff --git a/pkg/kubeapiserver/default_storage_factory_builder.go b/pkg/kubeapiserver/default_storage_factory_builder.go index 6a829e8a9f9..8c8c7b804c9 100644 --- a/pkg/kubeapiserver/default_storage_factory_builder.go +++ b/pkg/kubeapiserver/default_storage_factory_builder.go @@ -46,6 +46,7 @@ var SpecialDefaultResourcePrefixes = map[schema.GroupResource]string{ {Group: "", Resource: "nodes"}: "minions", {Group: "", Resource: "services"}: "services/specs", {Group: "extensions", Resource: "ingresses"}: "ingress", + {Group: "networking.k8s.io", Resource: "ingresses"}: "ingress", {Group: "extensions", Resource: "podsecuritypolicies"}: "podsecuritypolicy", {Group: "policy", Resource: "podsecuritypolicies"}: "podsecuritypolicy", } @@ -54,6 +55,7 @@ func NewStorageFactoryConfig() *StorageFactoryConfig { resources := []schema.GroupVersionResource{ batch.Resource("cronjobs").WithVersion("v1beta1"), + networking.Resource("ingresses").WithVersion("v1beta1"), } // add csinodes if CSINodeInfo feature gate is enabled if utilfeature.DefaultFeatureGate.Enabled(features.CSINodeInfo) { @@ -110,7 +112,7 @@ func (c *completedStorageFactoryConfig) New() (*serverstorage.DefaultStorageFact storageFactory.AddCohabitatingResources(apps.Resource("replicasets"), extensions.Resource("replicasets")) storageFactory.AddCohabitatingResources(api.Resource("events"), events.Resource("events")) storageFactory.AddCohabitatingResources(policy.Resource("podsecuritypolicies"), extensions.Resource("podsecuritypolicies")) - storageFactory.AddCohabitatingResources(extensions.Resource("ingresses"), networking.Resource("ingresses")) + storageFactory.AddCohabitatingResources(networking.Resource("ingresses"), extensions.Resource("ingresses")) for _, override := range c.EtcdServersOverrides { tokens := strings.Split(override, "#") diff --git a/pkg/master/BUILD b/pkg/master/BUILD index ea530b5af0a..50bb4389bf6 100644 --- a/pkg/master/BUILD +++ b/pkg/master/BUILD @@ -143,6 +143,7 @@ go_test( "//pkg/api/legacyscheme:go_default_library", "//pkg/api/testapi:go_default_library", "//pkg/apis/batch:go_default_library", + "//pkg/apis/networking:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/generated/openapi:go_default_library", "//pkg/kubelet/client:go_default_library", diff --git a/pkg/master/master_test.go b/pkg/master/master_test.go index 736b0591c3e..851e2c1363d 100644 --- a/pkg/master/master_test.go +++ b/pkg/master/master_test.go @@ -21,6 +21,7 @@ import ( "crypto/tls" "encoding/json" "io/ioutil" + "k8s.io/kubernetes/pkg/apis/networking" "net" "net/http" "net/http/httptest" @@ -85,6 +86,7 @@ func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertion resourceEncodingOverrides := []schema.GroupVersionResource{ batch.Resource("cronjobs").WithVersion("v1beta1"), apisstorage.Resource("volumeattachments").WithVersion("v1beta1"), + networking.Resource("ingresses").WithVersion("v1beta1"), } resourceEncoding = resourceconfig.MergeResourceEncodingConfigs(resourceEncoding, resourceEncodingOverrides) storageFactory := serverstorage.NewDefaultStorageFactory(*storageConfig, testapi.StorageMediaType(), legacyscheme.Codecs, resourceEncoding, DefaultAPIResourceConfigSource(), nil) diff --git a/pkg/master/storageversionhashdata/data.go b/pkg/master/storageversionhashdata/data.go index 2c0ef644dc2..0895c51d58a 100644 --- a/pkg/master/storageversionhashdata/data.go +++ b/pkg/master/storageversionhashdata/data.go @@ -67,12 +67,12 @@ var GVRToStorageVersionHash = map[string]string{ "coordination.k8s.io/v1/leases": "/sY7hl8ol1U=", "extensions/v1beta1/daemonsets": "dd7pWHUlMKQ=", "extensions/v1beta1/deployments": "8aSe+NMegvE=", - "extensions/v1beta1/ingresses": "Ejja63IbU0E=", + "extensions/v1beta1/ingresses": "ZOAfGflaKd0=", "extensions/v1beta1/networkpolicies": "YpfwF18m1G8=", "extensions/v1beta1/podsecuritypolicies": "khBLobUXkqA=", "extensions/v1beta1/replicasets": "P1RzHs8/mWQ=", "networking.k8s.io/v1/networkpolicies": "YpfwF18m1G8=", - "networking.k8s.io/v1beta1/ingresses": "Ejja63IbU0E=", + "networking.k8s.io/v1beta1/ingresses": "ZOAfGflaKd0=", "node.k8s.io/v1beta1/runtimeclasses": "8nMHWqj34s0=", "policy/v1beta1/poddisruptionbudgets": "6BGBu0kpHtk=", "policy/v1beta1/podsecuritypolicies": "khBLobUXkqA=", diff --git a/pkg/registry/networking/ingress/storage/BUILD b/pkg/registry/networking/ingress/storage/BUILD index 36786231d03..1f6d088b896 100644 --- a/pkg/registry/networking/ingress/storage/BUILD +++ b/pkg/registry/networking/ingress/storage/BUILD @@ -12,7 +12,6 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/apis/core:go_default_library", - "//pkg/apis/extensions:go_default_library", "//pkg/apis/networking:go_default_library", "//pkg/registry/registrytest:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -31,7 +30,6 @@ go_library( srcs = ["storage.go"], importpath = "k8s.io/kubernetes/pkg/registry/networking/ingress/storage", deps = [ - "//pkg/apis/extensions:go_default_library", "//pkg/apis/networking:go_default_library", "//pkg/printers:go_default_library", "//pkg/printers/internalversion:go_default_library", diff --git a/pkg/registry/networking/ingress/storage/storage.go b/pkg/registry/networking/ingress/storage/storage.go index 350eba0b974..5adefd9b22b 100644 --- a/pkg/registry/networking/ingress/storage/storage.go +++ b/pkg/registry/networking/ingress/storage/storage.go @@ -24,7 +24,6 @@ import ( "k8s.io/apiserver/pkg/registry/generic" genericregistry "k8s.io/apiserver/pkg/registry/generic/registry" "k8s.io/apiserver/pkg/registry/rest" - "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/networking" "k8s.io/kubernetes/pkg/printers" printersinternal "k8s.io/kubernetes/pkg/printers/internalversion" @@ -42,7 +41,7 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST) { store := &genericregistry.Store{ NewFunc: func() runtime.Object { return &networking.Ingress{} }, NewListFunc: func() runtime.Object { return &networking.IngressList{} }, - DefaultQualifiedResource: extensions.Resource("ingresses"), + DefaultQualifiedResource: networking.Resource("ingresses"), CreateStrategy: ingress.Strategy, UpdateStrategy: ingress.Strategy, diff --git a/pkg/registry/networking/ingress/storage/storage_test.go b/pkg/registry/networking/ingress/storage/storage_test.go index cb38d59bd72..b0c50616cb5 100644 --- a/pkg/registry/networking/ingress/storage/storage_test.go +++ b/pkg/registry/networking/ingress/storage/storage_test.go @@ -28,13 +28,12 @@ import ( genericregistrytest "k8s.io/apiserver/pkg/registry/generic/testing" etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing" api "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/networking" "k8s.io/kubernetes/pkg/registry/registrytest" ) func newStorage(t *testing.T) (*REST, *StatusREST, *etcdtesting.EtcdTestServer) { - etcdStorage, server := registrytest.NewEtcdStorage(t, extensions.GroupName) + etcdStorage, server := registrytest.NewEtcdStorageForResource(t, networking.Resource("ingresses")) restOptions := generic.RESTOptions{ StorageConfig: etcdStorage, Decorator: generic.UndecoratedStorage, diff --git a/pkg/registry/registrytest/BUILD b/pkg/registry/registrytest/BUILD index 67bb351204b..58995de4739 100644 --- a/pkg/registry/registrytest/BUILD +++ b/pkg/registry/registrytest/BUILD @@ -33,6 +33,7 @@ go_library( "//staging/src/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library", "//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library", + "//staging/src/k8s.io/apiserver/pkg/server/storage:go_default_library", "//staging/src/k8s.io/apiserver/pkg/storage/etcd/testing:go_default_library", "//staging/src/k8s.io/apiserver/pkg/storage/storagebackend:go_default_library", ], diff --git a/pkg/registry/registrytest/etcd.go b/pkg/registry/registrytest/etcd.go index 85100105843..4a34577367e 100644 --- a/pkg/registry/registrytest/etcd.go +++ b/pkg/registry/registrytest/etcd.go @@ -21,6 +21,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apiserver/pkg/server/options" + serverstorage "k8s.io/apiserver/pkg/server/storage" etcdtesting "k8s.io/apiserver/pkg/storage/etcd/testing" "k8s.io/apiserver/pkg/storage/storagebackend" "k8s.io/kubernetes/pkg/api/testapi" @@ -43,6 +44,7 @@ func NewEtcdStorageForResource(t *testing.T, resource schema.GroupResource) (*st if err != nil { t.Fatal(err) } + completedConfig.ApiResourceConfig = serverstorage.NewResourceConfig() factory, err := completedConfig.New() if err != nil { t.Fatal(err) diff --git a/test/integration/etcd/data.go b/test/integration/etcd/data.go index 918aa85edec..db7dc8ecf64 100644 --- a/test/integration/etcd/data.go +++ b/test/integration/etcd/data.go @@ -258,6 +258,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"), }, gvr("extensions", "v1beta1", "networkpolicies"): { Stub: `{"metadata": {"name": "np1"}, "spec": {"podSelector": {"matchLabels": {"e": "f"}}}}`, @@ -280,7 +281,6 @@ 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("extensions", "v1beta1", "Ingress"), }, // --