From 1d61cdf4e1d092d6ebf85a4e8eaa671ccac57c36 Mon Sep 17 00:00:00 2001 From: JB Pinalie <2850825+jybp@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:13:43 +0200 Subject: [PATCH 1/2] Add FLUX_SYSTEM_NAMESPACE_FROM_CONTEXT to inherit kubens context Signed-off-by: JB Pinalie <2850825+jybp@users.noreply.github.com> --- cmd/flux/main.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cmd/flux/main.go b/cmd/flux/main.go index 1226a347..3958f7ee 100644 --- a/cmd/flux/main.go +++ b/cmd/flux/main.go @@ -205,6 +205,20 @@ func main() { func configureDefaultNamespace() { *kubeconfigArgs.Namespace = rootArgs.defaults.Namespace + + // First check if we should use the namespace from the current context + if os.Getenv("FLUX_SYSTEM_NAMESPACE_FROM_CONTEXT") == "true" { + // Get the current context's namespace from kubeconfig + config, err := kubeconfigArgs.ToRawKubeConfigLoader().RawConfig() + if err == nil { + if ctx, exists := config.Contexts[config.CurrentContext]; exists && ctx.Namespace != "" { + kubeconfigArgs.Namespace = &ctx.Namespace + return + } + } + } + + // Fall back to environment variable if set fromEnv := os.Getenv("FLUX_SYSTEM_NAMESPACE") if fromEnv != "" { // namespace must be a valid DNS label. Assess against validation From 7ff2e1c186debfaeb740a93a991515b26c6a30fe Mon Sep 17 00:00:00 2001 From: JB Pinalie <2850825+jybp@users.noreply.github.com> Date: Fri, 11 Apr 2025 11:27:17 +0200 Subject: [PATCH 2/2] FLUX_SYSTEM_NAMESPACE takes priority Signed-off-by: JB Pinalie <2850825+jybp@users.noreply.github.com> --- cmd/flux/main.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/cmd/flux/main.go b/cmd/flux/main.go index 3958f7ee..16e4a01f 100644 --- a/cmd/flux/main.go +++ b/cmd/flux/main.go @@ -206,19 +206,7 @@ func main() { func configureDefaultNamespace() { *kubeconfigArgs.Namespace = rootArgs.defaults.Namespace - // First check if we should use the namespace from the current context - if os.Getenv("FLUX_SYSTEM_NAMESPACE_FROM_CONTEXT") == "true" { - // Get the current context's namespace from kubeconfig - config, err := kubeconfigArgs.ToRawKubeConfigLoader().RawConfig() - if err == nil { - if ctx, exists := config.Contexts[config.CurrentContext]; exists && ctx.Namespace != "" { - kubeconfigArgs.Namespace = &ctx.Namespace - return - } - } - } - - // Fall back to environment variable if set + // First the FLUX_SYSTEM_NAMESPACE environment variable fromEnv := os.Getenv("FLUX_SYSTEM_NAMESPACE") if fromEnv != "" { // namespace must be a valid DNS label. Assess against validation @@ -228,8 +216,20 @@ func configureDefaultNamespace() { logger.Warningf(" ignoring invalid FLUX_SYSTEM_NAMESPACE: %q", fromEnv) return } - kubeconfigArgs.Namespace = &fromEnv + return + } + + // If no environment variable, check if we should use the namespace from the current context + if os.Getenv("FLUX_SYSTEM_NAMESPACE_FROM_CONTEXT") == "true" { + // Get the current context's namespace from kubeconfig + config, err := kubeconfigArgs.ToRawKubeConfigLoader().RawConfig() + if err == nil { + if ctx, exists := config.Contexts[config.CurrentContext]; exists && ctx.Namespace != "" { + kubeconfigArgs.Namespace = &ctx.Namespace + return + } + } } }