Skip to content

Commit 20609f3

Browse files
committed
Allow kubeconfig info to be passed in
1 parent dec4684 commit 20609f3

File tree

3 files changed

+17
-30
lines changed

3 files changed

+17
-30
lines changed

cmd/gce-pd-csi-driver/main.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929

3030
"k8s.io/client-go/kubernetes"
3131
"k8s.io/client-go/rest"
32+
"k8s.io/client-go/tools/clientcmd"
3233
"k8s.io/klog/v2"
3334
"k8s.io/utils/strings/slices"
3435
"sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/common"
@@ -51,6 +52,10 @@ var (
5152
grpcLogCharCap = flag.Int("grpc-log-char-cap", 10000, "The maximum amount of characters logged for every grpc responses")
5253
enableOtelTracing = flag.Bool("enable-otel-tracing", false, "If set, enable opentelemetry tracing for the driver. The tracing is disabled by default. Configure the exporter endpoint with OTEL_EXPORTER_OTLP_ENDPOINT and other env variables, see https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#general-sdk-configuration.")
5354

55+
// Kubernetes client configuration flags
56+
master = flag.String("master", "", "The address of the Kubernetes API server (overrides any value in kubeconfig)")
57+
kubeconfig = flag.String("kubeconfig", "", "Path to a kubeconfig file, specifying how to connect to the API server. If not set, in-cluster config will be used")
58+
5459
errorBackoffInitialDurationMs = flag.Int("backoff-initial-duration-ms", 200, "The amount of ms for the initial duration of the backoff condition for controller publish/unpublish CSI operations. Default is 200.")
5560
errorBackoffMaxDurationMs = flag.Int("backoff-max-duration-ms", 300000, "The amount of ms for the max duration of the backoff condition for controller publish/unpublish CSI operations. Default is 300000 (5m).")
5661
extraVolumeLabelsStr = flag.String("extra-labels", "", "Extra labels to attach to each PD created. It is a comma separated list of key value pairs like '<key1>=<value1>,<key2>=<value2>'. See https://cloud.google.com/compute/docs/labeling-resources for details")
@@ -281,7 +286,6 @@ func handle() {
281286
EnableDataCache: *enableDataCacheFlag,
282287
DataCacheEnabledNodePool: isDataCacheEnabledNodePool,
283288
}
284-
285289
nodeServer = driver.NewNodeServer(gceDriver, mounter, deviceUtils, meta, statter, nsArgs)
286290

287291
if *maxConcurrentFormatAndMount > 0 {
@@ -321,10 +325,20 @@ func handle() {
321325
}
322326

323327
func instantiateKubeClient() (*kubernetes.Clientset, error) {
324-
cfg, err := rest.InClusterConfig()
328+
var cfg *rest.Config
329+
var err error
330+
331+
if *master != "" || *kubeconfig != "" {
332+
klog.Infof("Either master or kubeconfig specified. building kube config from that..")
333+
cfg, err = clientcmd.BuildConfigFromFlags(*master, *kubeconfig)
334+
} else {
335+
klog.Infof("No master or kubeconfig specified. building in-cluster kube config")
336+
cfg, err = rest.InClusterConfig()
337+
}
325338
if err != nil {
326339
return nil, fmt.Errorf("failed to create REST Config for k8s client: %w", err)
327340
}
341+
328342
kubeClient, err := kubernetes.NewForConfig(cfg)
329343
if err != nil {
330344
return nil, fmt.Errorf("failed to create k8s client: %w", err)

pkg/gce-pd-csi-driver/controller.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -629,12 +629,8 @@ func (gceCS *GCEControllerServer) createSingleDeviceDisk(ctx context.Context, re
629629
return nil, status.Errorf(codes.Aborted, common.VolumeOperationAlreadyExistsFmt, volumeID)
630630
}
631631
defer gceCS.volumeLocks.Release(volumeID)
632-
<<<<<<< HEAD
633-
disk, err := gceCS.createSingleDisk(ctx, req, params, volKey, zones, accessMode)
634-
=======
635-
>>>>>>> 474af8f4 (Only add disk support Topology if all nodes have a disk support label)
636632

637-
disk, err := gceCS.createSingleDisk(ctx, req, params, volKey, zones)
633+
disk, err := gceCS.createSingleDisk(ctx, req, params, volKey, zones, accessMode)
638634
if err != nil {
639635
return nil, common.LoggedError("CreateVolume failed: %v", err)
640636
}

pkg/gce-pd-csi-driver/node.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import (
3131

3232
csi "github.com/container-storage-interface/spec/lib/go/csi"
3333

34-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3534
"k8s.io/klog/v2"
3635
"k8s.io/mount-utils"
3736

@@ -589,28 +588,6 @@ func (ns *GCENodeServer) NodeGetInfo(ctx context.Context, req *csi.NodeGetInfoRe
589588
return resp, err
590589
}
591590

592-
// fetchGKETopologyLabels retrieves the node labels with the prefix
593-
// `topology.gke.io/` for the specified node.
594-
func (ns *GCENodeServer) fetchGKETopologyLabels(ctx context.Context, nodeName string) (map[string]string, error) {
595-
klog.V(2).Infof("Retrieving node topology labels for node %q", nodeName)
596-
597-
node, err := ns.KubeClient.CoreV1().Nodes().Get(ctx, nodeName, metav1.GetOptions{})
598-
if err != nil {
599-
// Q: Should we retry if we fail to get the node?
600-
return nil, err
601-
}
602-
603-
topology := make(map[string]string)
604-
for k, v := range node.GetLabels() {
605-
if common.IsGKETopologyLabel(k) {
606-
klog.V(2).Infof("Including node topology label %q=%q", k, v)
607-
topology[k] = v
608-
}
609-
}
610-
611-
return topology, nil
612-
}
613-
614591
func (ns *GCENodeServer) NodeGetVolumeStats(ctx context.Context, req *csi.NodeGetVolumeStatsRequest) (*csi.NodeGetVolumeStatsResponse, error) {
615592
if len(req.VolumeId) == 0 {
616593
return nil, status.Error(codes.InvalidArgument, "NodeGetVolumeStats volume ID was empty")

0 commit comments

Comments
 (0)