Skip to content

Commit

Permalink
Merge pull request #102 from MartinWeindel/master
Browse files Browse the repository at this point in the history
Support for running controller outside of cluster
  • Loading branch information
k8s-ci-robot authored Jan 27, 2020
2 parents ac2b8fd + c45574f commit 8487000
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 8 deletions.
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ require (
github.com/jonboulle/clockwork v0.1.0 // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/onsi/ginkgo v1.10.2
github.com/onsi/gomega v1.7.0
github.com/opencontainers/go-digest v1.0.0-rc1 // indirect
Expand Down
12 changes: 10 additions & 2 deletions pkg/csi/service/cns/nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,23 @@ func (nodes *Nodes) Initialize() error {
}
nodes.cnsNodeManager.SetKubernetesClient(k8sclient)
nodes.informMgr = k8s.NewInformer(k8sclient)
nodes.informMgr.AddNodeListener(nodes.nodeAdd, nil, nodes.nodeDelete)
nodes.informMgr.AddNodeListener(nodes.nodeAdd, nodes.nodeUpdate, nodes.nodeDelete)
nodes.informMgr.Listen()
return nil
}

func (nodes *Nodes) nodeAdd(obj interface{}) {
nodes.nodeRegister(obj)
}

func (nodes *Nodes) nodeUpdate(oldObj interface{}, newObj interface{}) {
nodes.nodeRegister(newObj)
}

func (nodes *Nodes) nodeRegister(obj interface{}) {
node, ok := obj.(*v1.Node)
if node == nil || !ok {
klog.Warningf("nodeAdd: unrecognized object %+v", obj)
klog.Warningf("nodeRegister: unrecognized object %+v", obj)
return
}
err := nodes.cnsNodeManager.RegisterNode(common.GetUUIDFromProviderID(node.Spec.ProviderID), node.Name)
Expand Down
32 changes: 27 additions & 5 deletions pkg/kubernetes/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ limitations under the License.
package kubernetes

import (
"flag"
"os"

"k8s.io/klog"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand All @@ -27,16 +30,35 @@ import (
"sigs.k8s.io/vsphere-csi-driver/pkg/csi/service/common"
)

var kubeconfig *string

func init() {
kubeconfig = flag.String("kubeconfig", "", "path to the kubeconfig file")
}

// NewClient creates a newk8s client based on a service account
func NewClient() (clientset.Interface, error) {
kubecfgPath := os.Getenv(clientcmd.RecommendedConfigPathEnvVar)
if *kubeconfig != "" {
kubecfgPath = *kubeconfig
}

var config *restclient.Config
var err error
klog.V(2).Info("k8s client using in-cluster config")
config, err = restclient.InClusterConfig()
if err != nil {
klog.Errorf("InClusterConfig failed %q", err)
return nil, err
if kubecfgPath != "" {
klog.V(2).Infof("k8s client using kubeconfig from %s", kubecfgPath)
config, err = clientcmd.BuildConfigFromFlags("", kubecfgPath)
if err != nil {
klog.Errorf("BuildConfigFromFlags failed %q", err)
return nil, err
}
} else {
klog.V(2).Info("k8s client using in-cluster config")
config, err = restclient.InClusterConfig()
if err != nil {
klog.Errorf("InClusterConfig failed %q", err)
return nil, err
}
}

return clientset.NewForConfig(config)
Expand Down

0 comments on commit 8487000

Please sign in to comment.