From d403b3ef8628ee7eb02c31f1c3777c8465e8f94a Mon Sep 17 00:00:00 2001 From: Manuel Alejandro de Brito Fontes Date: Sat, 9 Mar 2019 10:44:06 -0300 Subject: [PATCH] Allow the use of a secret located in a different namespace --- internal/ingress/annotations/auth/main.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/internal/ingress/annotations/auth/main.go b/internal/ingress/annotations/auth/main.go index 3a6a3fae4..906e19c6f 100644 --- a/internal/ingress/annotations/auth/main.go +++ b/internal/ingress/annotations/auth/main.go @@ -24,6 +24,7 @@ import ( "github.com/pkg/errors" api "k8s.io/api/core/v1" extensions "k8s.io/api/extensions/v1beta1" + "k8s.io/client-go/tools/cache" "k8s.io/ingress-nginx/internal/file" "k8s.io/ingress-nginx/internal/ingress/annotations/parser" @@ -108,7 +109,18 @@ func (a auth) Parse(ing *extensions.Ingress) (interface{}, error) { } } - name := fmt.Sprintf("%v/%v", ing.Namespace, s) + sns, sname, err := cache.SplitMetaNamespaceKey(s) + if err != nil { + return nil, ing_errors.LocationDenied{ + Reason: errors.Wrap(err, "error reading secret name from annotation"), + } + } + + if sns == "" { + sns = ing.Namespace + } + + name := fmt.Sprintf("%v/%v", sns, sname) secret, err := a.r.GetSecret(name) if err != nil { return nil, ing_errors.LocationDenied{