From 7645ca4945aa5559d582090828edd84bf7e5668a Mon Sep 17 00:00:00 2001 From: "Han Verstraete (OpenFaaS Ltd)" Date: Tue, 14 May 2024 13:18:36 +0200 Subject: [PATCH] Read function namespace from env variable or service account Read the function namespace from the OPENFAAS_NAMESPACE env variable. Fallback to getting the nemsapce from the service account if the variable is not present. Required setting the namespace when running functions locally with jwt_auth. Signed-off-by: Han Verstraete (OpenFaaS Ltd) --- executor/jwt_authenticator.go | 40 ++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/executor/jwt_authenticator.go b/executor/jwt_authenticator.go index fe5eb3c1..53858fa1 100644 --- a/executor/jwt_authenticator.go +++ b/executor/jwt_authenticator.go @@ -199,23 +199,6 @@ type OpenIDConfiguration struct { JWKSURI string `json:"jwks_uri"` } -func getFnName() (string, error) { - name, ok := os.LookupEnv("OPENFAAS_NAME") - if !ok || len(name) == 0 { - return "", fmt.Errorf("env variable 'OPENFAAS_NAME' not set") - } - - return name, nil -} - -func getFnNamespace() (string, error) { - nsVal, err := os.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") - if err != nil { - return "", err - } - return string(nsVal), nil -} - type FunctionClaims struct { jwt.RegisteredClaims @@ -282,3 +265,26 @@ func wildCardToRegexp(pattern string) string { } return result.String() } + +func getFnName() (string, error) { + name, ok := os.LookupEnv("OPENFAAS_NAME") + if !ok || len(name) == 0 { + return "", fmt.Errorf("env variable 'OPENFAAS_NAME' not set") + } + + return name, nil +} + +// getFnNamespace gets the namespace name from the env variable OPENFAAS_NAMESPACE +// or reads it from the service account if the env variable is not present +func getFnNamespace() (string, error) { + if namespace, ok := os.LookupEnv("OPENFAAS_NAMESPACE"); ok { + return namespace, nil + } + + nsVal, err := os.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") + if err != nil { + return "", err + } + return string(nsVal), nil +}