From 9716b0bf21b32152d04547a47fce4db39257f7bd Mon Sep 17 00:00:00 2001 From: moonek Date: Tue, 13 Oct 2020 11:29:03 +0900 Subject: [PATCH] Support for running controller outside of cluster --- .../provisioner.go | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/cmd/nfs-subdir-external-provisioner/provisioner.go b/cmd/nfs-subdir-external-provisioner/provisioner.go index 50b94070..6d4a9b1f 100644 --- a/cmd/nfs-subdir-external-provisioner/provisioner.go +++ b/cmd/nfs-subdir-external-provisioner/provisioner.go @@ -28,13 +28,14 @@ import ( "k8s.io/kubernetes/pkg/apis/core/v1/helper" "github.com/golang/glog" - "sigs.k8s.io/sig-storage-lib-external-provisioner/controller" "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" + "k8s.io/client-go/tools/clientcmd" + "sigs.k8s.io/sig-storage-lib-external-provisioner/controller" ) const ( @@ -161,12 +162,24 @@ func main() { if provisionerName == "" { glog.Fatalf("environment variable %s is not set! Please set it.", provisionerNameKey) } - - // Create an InClusterConfig and use it to create a client for the controller - // to use to communicate with Kubernetes - config, err := rest.InClusterConfig() - if err != nil { - glog.Fatalf("Failed to create config: %v", err) + kubeconfig := os.Getenv("KUBECONFIG") + var config *rest.Config + if kubeconfig != "" { + // Create an OutOfClusterConfig and use it to create a client for the controller + // to use to communicate with Kubernetes + var err error + config, err = clientcmd.BuildConfigFromFlags("", kubeconfig) + if err != nil { + glog.Fatalf("Failed to create kubeconfig: %v", err) + } + } else { + // Create an InClusterConfig and use it to create a client for the controller + // to use to communicate with Kubernetes + var err error + config, err = rest.InClusterConfig() + if err != nil { + glog.Fatalf("Failed to create config: %v", err) + } } clientset, err := kubernetes.NewForConfig(config) if err != nil {