From e2b74db3891c07854ee9c0ae7cc45ec9e9243e84 Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Sun, 5 Nov 2017 18:55:31 -0300 Subject: [PATCH] Fix port collision checks for TCP and UDP --- pkg/ingress/controller/controller.go | 16 ++++++++++------ pkg/ingress/controller/utils.go | 9 +++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/pkg/ingress/controller/controller.go b/pkg/ingress/controller/controller.go index fa33267e8..abd49de3f 100644 --- a/pkg/ingress/controller/controller.go +++ b/pkg/ingress/controller/controller.go @@ -35,7 +35,6 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/sets" clientset "k8s.io/client-go/kubernetes" - "k8s.io/kubernetes/pkg/kubelet/util/sliceutils" "k8s.io/ingress-nginx/pkg/ingress" "k8s.io/ingress-nginx/pkg/ingress/annotations/class" @@ -56,9 +55,6 @@ const ( ) var ( - // list of ports that cannot be used by TCP or UDP services - reservedPorts = []string{"80", "443", "8181", "18080"} - cloner *conversion.Cloner ) @@ -260,8 +256,16 @@ func (n *NGINXController) getStreamServices(configmapName string, proto apiv1.Pr continue } - // this ports used by the backend - if sliceutils.StringInSlice(k, reservedPorts) { + rp := []int{ + n.cfg.ListenPorts.HTTP, + n.cfg.ListenPorts.HTTPS, + n.cfg.ListenPorts.SSLProxy, + n.cfg.ListenPorts.Status, + n.cfg.ListenPorts.Health, + n.cfg.ListenPorts.Default, + } + + if intInSlice(externalPort, rp) { glog.Warningf("port %v cannot be used for TCP or UDP services. It is reserved for the Ingress controller", k) continue } diff --git a/pkg/ingress/controller/utils.go b/pkg/ingress/controller/utils.go index 798ea4a76..d76f8102c 100644 --- a/pkg/ingress/controller/utils.go +++ b/pkg/ingress/controller/utils.go @@ -49,3 +49,12 @@ func sysctlFSFileMax() int { } return int(rLimit.Max) } + +func intInSlice(i int, list []int) bool { + for _, v := range list { + if v == i { + return true + } + } + return false +}