in pkg/k8s/k8s_client.go [65:107]
func (kr *K8S) initUsingKubeConfig() error {
// Explicit kube config - use it
kc := os.Getenv("KUBECONFIG")
if kc == "" {
kc = os.Getenv("HOME") + "/.kube/config"
}
if _, err := os.Stat(kc); err == nil {
cf, err := clientcmd.LoadFromFile(kc)
//config := clientcmd.NewNonInteractiveClientConfig(cf, cf.CurrentContext, nil, nil)
if strings.HasPrefix(cf.CurrentContext, "gke_") {
parts := strings.Split(cf.CurrentContext, "_")
if len(parts) > 3 {
// TODO: if env variable with cluster name/location are set - use that for context
kr.Mesh.ProjectId = parts[1]
kr.Mesh.ClusterLocation = parts[2]
kr.Mesh.ClusterName = parts[3]
}
}
if strings.HasPrefix(cf.CurrentContext, "connectgateway_") {
parts := strings.Split(cf.CurrentContext, "_")
if len(parts) > 2 {
// TODO: if env variable with cluster name/location are set - use that for context
kr.Mesh.ProjectId = parts[1]
kr.Mesh.ClusterName = parts[2]
}
}
config, err := clientcmd.BuildConfigFromFlags("", kc)
if err != nil {
return err
}
kr.Client, err = kubernetes.NewForConfig(config)
if err != nil {
return err
}
if Debug {
log.Println("Using Kubeconfig", cf.CurrentContext, kc)
}
return nil
}
return nil
}