diff --git a/pkg/router/ingress.go b/pkg/router/ingress.go index 00cb940f..59eb5692 100644 --- a/pkg/router/ingress.go +++ b/pkg/router/ingress.go @@ -43,7 +43,7 @@ func createIngress(logger *zap.Logger, trigger *fv1.HTTPTrigger, kubeClient *kub if !trigger.Spec.CreateIngress { return } - _, err := kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Create(context.TODO(), util.GetIngressSpec(podNamespace, trigger), v1.CreateOptions{}) + _, err := kubeClient.NetworkingV1().Ingresses(podNamespace).Create(context.TODO(), util.GetIngressSpec(podNamespace, trigger), v1.CreateOptions{}) if err != nil && !k8serrors.IsAlreadyExists(err) { logger.Error("failed to create ingress", zap.Error(err)) return @@ -56,13 +56,13 @@ func deleteIngress(logger *zap.Logger, trigger *fv1.HTTPTrigger, kubeClient *kub return } - ingress, err := kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Get(context.TODO(), trigger.ObjectMeta.Name, v1.GetOptions{}) + ingress, err := kubeClient.NetworkingV1().Ingresses(podNamespace).Get(context.TODO(), trigger.ObjectMeta.Name, v1.GetOptions{}) if err != nil && !k8serrors.IsNotFound(err) { logger.Error("failed to get ingress when deleting trigger", zap.Error(err), zap.String("trigger", trigger.ObjectMeta.Name)) return } - err = kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Delete(context.TODO(), ingress.Name, v1.DeleteOptions{}) + err = kubeClient.NetworkingV1().Ingresses(podNamespace).Delete(context.TODO(), ingress.Name, v1.DeleteOptions{}) if err != nil && !k8serrors.IsNotFound(err) { logger.Error("failed to delete ingress for trigger", zap.Error(err), @@ -86,7 +86,7 @@ func updateIngress(logger *zap.Logger, oldT *fv1.HTTPTrigger, newT *fv1.HTTPTrig return } - oldIngress, err := kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Get(context.TODO(), oldT.ObjectMeta.Name, v1.GetOptions{}) + oldIngress, err := kubeClient.NetworkingV1().Ingresses(podNamespace).Get(context.TODO(), oldT.ObjectMeta.Name, v1.GetOptions{}) if err != nil { if k8serrors.IsNotFound(err) { createIngress(logger, newT, kubeClient) @@ -123,7 +123,7 @@ func updateIngress(logger *zap.Logger, oldT *fv1.HTTPTrigger, newT *fv1.HTTPTrig } if changes { - _, err = kubeClient.ExtensionsV1beta1().Ingresses(podNamespace).Update(context.TODO(), oldIngress, v1.UpdateOptions{}) + _, err = kubeClient.NetworkingV1().Ingresses(podNamespace).Update(context.TODO(), oldIngress, v1.UpdateOptions{}) if err != nil { logger.Error("failed to update ingress for trigger", zap.Error(err), zap.String("trigger", oldT.ObjectMeta.Name)) return diff --git a/pkg/router/util/util.go b/pkg/router/util/util.go index 8c1fcf4f..1cad7b57 100644 --- a/pkg/router/util/util.go +++ b/pkg/router/util/util.go @@ -17,14 +17,14 @@ limitations under the License. package util import ( - "k8s.io/api/extensions/v1beta1" + v1 "k8s.io/api/networking/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/intstr" fv1 "github.com/fission/fission/pkg/apis/core/v1" ) -func GetIngressSpec(namespace string, trigger *fv1.HTTPTrigger) *v1beta1.Ingress { +func GetIngressSpec(namespace string, trigger *fv1.HTTPTrigger) *v1.Ingress { // TODO: remove backward compatibility host, path := trigger.Spec.Host, trigger.Spec.RelativeURL if trigger.Spec.Prefix != nil && *trigger.Spec.Prefix != "" { @@ -41,9 +41,9 @@ func GetIngressSpec(namespace string, trigger *fv1.HTTPTrigger) *v1beta1.Ingress host = "" // wildcard Ingress host } - var ingTLS []v1beta1.IngressTLS + var ingTLS []v1.IngressTLS if len(trigger.Spec.IngressConfig.TLS) > 0 { - ingTLS = []v1beta1.IngressTLS{ + ingTLS = []v1.IngressTLS{ { Hosts: []string{ trigger.Spec.IngressConfig.Host, @@ -53,7 +53,7 @@ func GetIngressSpec(namespace string, trigger *fv1.HTTPTrigger) *v1beta1.Ingress } } - ing := &v1beta1.Ingress{ + ing := &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: GetDeployLabels(trigger), Name: trigger.ObjectMeta.Name, @@ -63,20 +63,21 @@ func GetIngressSpec(namespace string, trigger *fv1.HTTPTrigger) *v1beta1.Ingress Namespace: namespace, Annotations: trigger.Spec.IngressConfig.Annotations, }, - Spec: v1beta1.IngressSpec{ + Spec: v1.IngressSpec{ TLS: ingTLS, - Rules: []v1beta1.IngressRule{ + Rules: []v1.IngressRule{ { Host: host, - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: path, diff --git a/pkg/router/util/util_test.go b/pkg/router/util/util_test.go index 086d6998..ac3762d8 100644 --- a/pkg/router/util/util_test.go +++ b/pkg/router/util/util_test.go @@ -20,9 +20,8 @@ import ( "reflect" "testing" - "k8s.io/api/extensions/v1beta1" + v1 "k8s.io/api/networking/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/intstr" fv1 "github.com/fission/fission/pkg/apis/core/v1" ) @@ -35,7 +34,7 @@ func TestGetIngressSpec(t *testing.T) { tests := []struct { name string args args - want *v1beta1.Ingress + want *v1.Ingress }{ { name: "host-backward-compatibility", @@ -58,7 +57,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -69,19 +68,20 @@ func TestGetIngressSpec(t *testing.T) { Namespace: "foobarNS", Annotations: nil, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: v1.IngressSpec{ + Rules: []v1.IngressRule{ { Host: "test.com", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/bar", @@ -116,7 +116,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -129,19 +129,20 @@ func TestGetIngressSpec(t *testing.T) { "key": "value", }, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: v1.IngressSpec{ + Rules: []v1.IngressRule{ { Host: "", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/bar", @@ -176,7 +177,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -187,19 +188,20 @@ func TestGetIngressSpec(t *testing.T) { Namespace: "foobarNS", Annotations: nil, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: v1.IngressSpec{ + Rules: []v1.IngressRule{ { Host: "test.com", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/bar", @@ -234,7 +236,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -245,19 +247,20 @@ func TestGetIngressSpec(t *testing.T) { Namespace: "foobarNS", Annotations: nil, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: v1.IngressSpec{ + Rules: []v1.IngressRule{ { Host: "", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/{bar}", @@ -292,7 +295,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -303,19 +306,20 @@ func TestGetIngressSpec(t *testing.T) { Namespace: "foobarNS", Annotations: nil, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: v1.IngressSpec{ + Rules: []v1.IngressRule{ { Host: "", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/{bar}", @@ -351,7 +355,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -362,19 +366,20 @@ func TestGetIngressSpec(t *testing.T) { Namespace: "foobarNS", Annotations: nil, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: v1.IngressSpec{ + Rules: []v1.IngressRule{ { Host: "test.com", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/bar", @@ -409,7 +414,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -420,19 +425,20 @@ func TestGetIngressSpec(t *testing.T) { Namespace: "foobarNS", Annotations: nil, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: v1.IngressSpec{ + Rules: []v1.IngressRule{ { Host: "", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/bar", @@ -469,7 +475,7 @@ func TestGetIngressSpec(t *testing.T) { }, }, }, - want: &v1beta1.Ingress{ + want: &v1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ "triggerName": "foo", @@ -482,8 +488,8 @@ func TestGetIngressSpec(t *testing.T) { "key": "value", }, }, - Spec: v1beta1.IngressSpec{ - TLS: []v1beta1.IngressTLS{ + Spec: v1.IngressSpec{ + TLS: []v1.IngressTLS{ { Hosts: []string{ "test.com", @@ -491,18 +497,19 @@ func TestGetIngressSpec(t *testing.T) { SecretName: "foobar", }, }, - Rules: []v1beta1.IngressRule{ + Rules: []v1.IngressRule{ { Host: "", - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: v1.IngressRuleValue{ + HTTP: &v1.HTTPIngressRuleValue{ + Paths: []v1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: "router", - ServicePort: intstr.IntOrString{ - Type: intstr.Int, - IntVal: 80, + Backend: v1.IngressBackend{ + Service: &v1.IngressServiceBackend{ + Name: "router", + Port: v1.ServiceBackendPort{ + Number: 80, + }, }, }, Path: "/foo/bar",