@@ -2,26 +2,43 @@ package k8s
22
33import (
44 "fmt"
5+ "os"
6+ "path/filepath"
57
68 "k8s.io/client-go/dynamic"
79 "k8s.io/client-go/kubernetes"
810 "k8s.io/client-go/rest"
911 "k8s.io/client-go/tools/clientcmd"
12+ "k8s.io/client-go/util/homedir"
1013)
1114
1215func getConfig () (* rest.Config , error ) {
16+ // Try in-cluster config first (for running inside K8s pods)
1317 config , err := rest .InClusterConfig ()
1418 if err == nil {
1519 return config , nil
1620 }
1721
18- loadingRules := clientcmd .NewDefaultClientConfigLoadingRules ()
19- configOverrides := & clientcmd.ConfigOverrides {}
20- kubeConfig := clientcmd .NewNonInteractiveDeferredLoadingClientConfig (loadingRules , configOverrides )
22+ // Check KUBECONFIG environment variable
23+ kubeconfigPath := os .Getenv ("KUBECONFIG" )
24+ if kubeconfigPath != "" {
25+ config , err = clientcmd .BuildConfigFromFlags ("" , kubeconfigPath )
26+ if err != nil {
27+ return nil , err
28+ }
29+ return config , nil
30+ }
2131
22- config , err = kubeConfig .ClientConfig ()
32+ // Fall back to default kubeconfig location
33+ home := homedir .HomeDir ()
34+ if home == "" {
35+ return nil , fmt .Errorf ("could not determine home directory" )
36+ }
37+
38+ kubeconfigPath = filepath .Join (home , ".kube" , "config" )
39+ config , err = clientcmd .BuildConfigFromFlags ("" , kubeconfigPath )
2340 if err != nil {
24- return nil , fmt . Errorf ( "failed to load kubeconfig: %w" , err )
41+ return nil , err
2542 }
2643
2744 return config , nil
0 commit comments