@@ -131,11 +131,10 @@ func main() {
131131
132132// restConfig builds a *rest.Config from the --kubeconfig flag or $KUBECONFIG.
133133func restConfig () (* rest.Config , error ) {
134- cfg := kubeCfgPath
135- if cfg == "" {
136- cfg = os .Getenv ("KUBECONFIG" )
134+ if path := resolvedKubeconfigPath (); path != "" {
135+ return clientcmd .BuildConfigFromFlags ("" , path )
137136 }
138- return clientcmd . BuildConfigFromFlags ( "" , cfg )
137+ return rest . InClusterConfig ( )
139138}
140139
141140// helmCfg returns an initialised Helm configuration bound to a namespace.
@@ -638,13 +637,25 @@ func cmdDelete() *cobra.Command {
638637
639638// defaultNamespace returns the namespace from the kubeconfig or "default".
640639func defaultNamespace () (string , bool , error ) {
641- cfg := kubeCfgPath
642- if cfg == "" {
643- cfg = os .Getenv ("KUBECONFIG" )
640+ path := resolvedKubeconfigPath ()
641+ if path != "" {
642+ loading := & clientcmd.ClientConfigLoadingRules {ExplicitPath : path }
643+ cc := clientcmd .NewNonInteractiveDeferredLoadingClientConfig (loading , & clientcmd.ConfigOverrides {})
644+ ns , overridden , err := cc .Namespace ()
645+ if err != nil {
646+ return "default" , false , nil
647+ }
648+ return ns , overridden , nil
644649 }
645- loading := & clientcmd.ClientConfigLoadingRules {ExplicitPath : cfg }
646- cc := clientcmd .NewNonInteractiveDeferredLoadingClientConfig (loading , & clientcmd.ConfigOverrides {})
647- return cc .Namespace ()
650+
651+ // Try reading namespace from in-cluster location
652+ data , err := os .ReadFile ("/var/run/secrets/kubernetes.io/serviceaccount/namespace" )
653+ if err == nil {
654+ return strings .TrimSpace (string (data )), false , nil
655+ }
656+
657+ // Fallback
658+ return "default" , false , nil
648659}
649660
650661// serverTable retrieves a metav1.Table from the API server.
@@ -1263,3 +1274,21 @@ func discoverKubeVersion(rc *rest.Config) (hchart.KubeVersion, error) {
12631274 Minor : info .Minor ,
12641275 }, nil
12651276}
1277+
1278+ func resolvedKubeconfigPath () string {
1279+ if kubeCfgPath != "" {
1280+ return kubeCfgPath
1281+ }
1282+ if env := os .Getenv ("KUBECONFIG" ); env != "" {
1283+ return env
1284+ }
1285+ home , err := os .UserHomeDir ()
1286+ if err != nil {
1287+ return ""
1288+ }
1289+ cfg := filepath .Join (home , ".kube" , "config" )
1290+ if _ , err := os .Stat (cfg ); err == nil {
1291+ return cfg
1292+ }
1293+ return ""
1294+ }
0 commit comments