From 57bf3d1c1bed8e4ddf6a916ad052f6bea06325e1 Mon Sep 17 00:00:00 2001 From: Dario Tranchitella Date: Thu, 15 Jul 2021 16:43:03 +0200 Subject: [PATCH] feat: skipping Ingress indexer setup for deprecated APIs Starting from Kubernetes v1.22+, networking.k8s.io/v1beta1 and extensions/v1beta1 are no more supported and indexers must not be started, otherwise the manager would panic. --- e2e/ingress_class_extensions_test.go | 18 ++++++++++-------- pkg/indexer/add_ingress.go | 17 +++++++++-------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/e2e/ingress_class_extensions_test.go b/e2e/ingress_class_extensions_test.go index 1a0d28bf..7e434fb8 100644 --- a/e2e/ingress_class_extensions_test.go +++ b/e2e/ingress_class_extensions_test.go @@ -53,7 +53,7 @@ var _ = Describe("when Tenant handles Ingress classes with extensions/v1beta1", It("should block a non allowed class for extensions/v1beta1", func() { maj, min, v := GetKubernetesSemVer() - if maj == 1 && min > 22 { + if maj == 1 && min >= 22 { Skip("Running test on Kubernetes " + v + ", extensions/v1beta1 has been deprecated") } @@ -123,7 +123,7 @@ var _ = Describe("when Tenant handles Ingress classes with extensions/v1beta1", It("should allow enabled class using the deprecated annotation", func() { maj, min, v := GetKubernetesSemVer() - if maj == 1 && min > 22 { + if maj == 1 && min >= 22 { Skip("Running test on Kubernetes " + v + ", extensions/v1beta1 has been deprecated") } @@ -158,8 +158,11 @@ var _ = Describe("when Tenant handles Ingress classes with extensions/v1beta1", It("should allow enabled class using the ingressClassName field", func() { maj, min, v := GetKubernetesSemVer() - if maj == 1 && min < 18 { + switch { + case maj == 1 && min < 18: Skip("Running test on Kubernetes " + v + ", doesn't provide .spec.ingressClassName") + case maj == 1 && min >= 22: + Skip("Running test on Kubernetes " + v + ", extensions/v1beta1 has been deprecated") } ns := NewNamespace("ingress-class-allowed-annotation-extensions-v1beta1") @@ -191,7 +194,7 @@ var _ = Describe("when Tenant handles Ingress classes with extensions/v1beta1", It("should allow enabled Ingress by regex using the deprecated annotation", func() { maj, min, v := GetKubernetesSemVer() - if maj == 1 && min > 22 { + if maj == 1 && min >= 22 { Skip("Running test on Kubernetes " + v + ", extensions/v1beta1 has been deprecated") } @@ -225,11 +228,10 @@ var _ = Describe("when Tenant handles Ingress classes with extensions/v1beta1", It("should allow enabled Ingress by regex using the ingressClassName field", func() { maj, min, v := GetKubernetesSemVer() - if maj == 1 && min > 22 { + switch { + case maj == 1 && min >= 22: Skip("Running test on Kubernetes " + v + ", extensions/v1beta1 has been deprecated") - } - - if maj == 1 && min < 18 { + case maj == 1 && min < 18: Skip("Running test on Kubernetes " + v + ", doesn't provide .spec.ingressClassName") } diff --git a/pkg/indexer/add_ingress.go b/pkg/indexer/add_ingress.go index 4672f3a9..6248b521 100644 --- a/pkg/indexer/add_ingress.go +++ b/pkg/indexer/add_ingress.go @@ -13,13 +13,14 @@ import ( ) func init() { - AddToIndexerFuncs = append(AddToIndexerFuncs, ingress.Hostname{Obj: &extensionsv1beta1.Ingress{}}) - // ingresses.networking.k8s.io/v1 introduced by 1.19 - { - majorVer, minorVer, _, _ := utils.GetK8sVersion() - if majorVer == 1 && minorVer >= 19 { - AddToIndexerFuncs = append(AddToIndexerFuncs, ingress.Hostname{Obj: &networkingv1.Ingress{}}) - } + majorVer, minorVer, _, _ := utils.GetK8sVersion() + + switch { + case majorVer == 1 && minorVer >= 19: + AddToIndexerFuncs = append(AddToIndexerFuncs, ingress.Hostname{Obj: &networkingv1.Ingress{}}) + case majorVer == 1 && (minorVer >= 19 && minorVer < 22): + AddToIndexerFuncs = append(AddToIndexerFuncs, ingress.Hostname{Obj: &networkingv1beta1.Ingress{}}) + case majorVer == 1 && minorVer < 22: + AddToIndexerFuncs = append(AddToIndexerFuncs, ingress.Hostname{Obj: &extensionsv1beta1.Ingress{}}) } - AddToIndexerFuncs = append(AddToIndexerFuncs, ingress.Hostname{Obj: &networkingv1beta1.Ingress{}}) }