From e033772142d286a6148a702602b9bbe273f85556 Mon Sep 17 00:00:00 2001 From: Giancarlo Rubio Date: Sun, 25 Dec 2016 20:48:10 +0100 Subject: [PATCH] Fix multiple tls hosts, using the same secretName --- core/pkg/ingress/controller/controller.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/core/pkg/ingress/controller/controller.go b/core/pkg/ingress/controller/controller.go index 37d324df7..29e889f6a 100644 --- a/core/pkg/ingress/controller/controller.go +++ b/core/pkg/ingress/controller/controller.go @@ -902,8 +902,18 @@ func (ic *GenericController) createServers(data []interface{}, upstreams map[str // only add a certificate if the server does not have one previously configured // TODO: TLS without secret? - if len(ing.Spec.TLS) > 0 && servers[host].SSLCertificate == "" && ing.Spec.TLS[0].SecretName != "" { - key := fmt.Sprintf("%v/%v", ing.Namespace, ing.Spec.TLS[0].SecretName) + if len(ing.Spec.TLS) > 0 && servers[host].SSLCertificate == "" { + tlsSecretName := "" + for _, tls := range ing.Spec.TLS { + for _, tlsHost := range tls.Hosts { + if tlsHost == host { + tlsSecretName = tls.SecretName + break + } + } + } + + key := fmt.Sprintf("%v/%v", ing.Namespace, tlsSecretName) bc, exists := ic.sslCertTracker.Get(key) if exists { cert := bc.(*ingress.SSLCert)