aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Kuzmin <kvaster@gmail.com>2023-08-07 11:23:40 +0300
committerChris Lu <chrislusf@users.noreply.github.com>2023-08-07 10:22:05 -0700
commita5a2c638d1622ac194d108fdb9b2aa6a1e56bdbd (patch)
treee2d4d5aff1bf028452ed90c5d4c660d29ff946b7
parent44d2cf555cf470e9fe689976b8f55f6be2730ab5 (diff)
downloadseaweedfs-csi-driver-a5a2c638d1622ac194d108fdb9b2aa6a1e56bdbd.tar.xz
seaweedfs-csi-driver-a5a2c638d1622ac194d108fdb9b2aa6a1e56bdbd.zip
Allow to separate ControllerServer and NodeServer, allow to disable attacher (it do nothing in reality)
-rw-r--r--cmd/seaweedfs-csi-driver/main.go10
-rw-r--r--deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml3
-rw-r--r--deploy/helm/seaweedfs-csi-driver/templates/statefulset.yml3
-rw-r--r--pkg/driver/driver.go31
4 files changed, 39 insertions, 8 deletions
diff --git a/cmd/seaweedfs-csi-driver/main.go b/cmd/seaweedfs-csi-driver/main.go
index 69403f1..eac42ec 100644
--- a/cmd/seaweedfs-csi-driver/main.go
+++ b/cmd/seaweedfs-csi-driver/main.go
@@ -12,6 +12,10 @@ import (
)
var (
+ runNode = flag.Bool("node", false, "run node server")
+ runController = flag.Bool("controller", false, "run controller server")
+ enableAttacher = flag.Bool("attacher", false, "enable attacher")
+
filer = flag.String("filer", "localhost:8888", "filer server")
endpoint = flag.String("endpoint", "unix://tmp/seaweedfs-csi.sock", "CSI endpoint to accept gRPC calls")
nodeID = flag.String("nodeid", "", "node id")
@@ -53,7 +57,11 @@ func main() {
glog.Infof("connect to filer %s", *filer)
- drv := driver.NewSeaweedFsDriver(*filer, *nodeID, *endpoint)
+ drv := driver.NewSeaweedFsDriver(*filer, *nodeID, *endpoint, *enableAttacher)
+
+ drv.RunNode = *runNode
+ drv.RunController = *runController
+
drv.ConcurrentWriters = *concurrentWriters
drv.CacheCapacityMB = *cacheCapacityMB
drv.CacheDir = *cacheDir
diff --git a/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml b/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml
index 8d90cd3..d6fc537 100644
--- a/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml
+++ b/deploy/helm/seaweedfs-csi-driver/templates/daemonset.yml
@@ -65,6 +65,9 @@ spec:
- "--nodeid=$(NODE_ID)"
- "--cacheDir=/var/cache/seaweedfs"
- "--dataLocality={{ .Values.dataLocality }}"
+ - "--node"
+ - "--controller"
+ - "--attacher"
{{- if .Values.node.injectTopologyInfoFromNodeLabel.enabled }}
- "--dataCenter=$(DATACENTER)"
{{- end }}
diff --git a/deploy/helm/seaweedfs-csi-driver/templates/statefulset.yml b/deploy/helm/seaweedfs-csi-driver/templates/statefulset.yml
index 56d0b76..6d5c16b 100644
--- a/deploy/helm/seaweedfs-csi-driver/templates/statefulset.yml
+++ b/deploy/helm/seaweedfs-csi-driver/templates/statefulset.yml
@@ -79,6 +79,9 @@ spec:
- "--endpoint=$(CSI_ENDPOINT)"
- "--filer=$(SEAWEEDFS_FILER)"
- "--nodeid=$(NODE_ID)"
+ - "--node"
+ - "--controller"
+ - "--attacher"
env:
- name: CSI_ENDPOINT
value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock
diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go
index 23dbae3..0d3af5a 100644
--- a/pkg/driver/driver.go
+++ b/pkg/driver/driver.go
@@ -49,9 +49,12 @@ type SeaweedFsDriver struct {
signature int32
DataCenter string
DataLocality datalocality.DataLocality
+
+ RunNode bool
+ RunController bool
}
-func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver {
+func NewSeaweedFsDriver(filer, nodeID, endpoint string, enableAttacher bool) *SeaweedFsDriver {
glog.Infof("Driver: %v version: %v", driverName, version)
@@ -75,11 +78,17 @@ func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver {
})
n.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{
csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
- csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
csi.ControllerServiceCapability_RPC_SINGLE_NODE_MULTI_WRITER,
csi.ControllerServiceCapability_RPC_EXPAND_VOLUME,
})
+ // we need this just only for csi-attach, but we do nothing for attach/detach
+ if enableAttacher {
+ n.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{
+ csi.ControllerServiceCapability_RPC_PUBLISH_UNPUBLISH_VOLUME,
+ })
+ }
+
return n
}
@@ -95,15 +104,21 @@ func (n *SeaweedFsDriver) initClient() error {
func (n *SeaweedFsDriver) Run() {
glog.Info("starting")
- controller := NewControllerServer(n)
- node := NewNodeServer(n)
+ var controller *ControllerServer
+ if n.RunController {
+ controller = NewControllerServer(n)
+ }
+
+ var node *NodeServer
+ if n.RunNode {
+ node = NewNodeServer(n)
+ }
s := NewNonBlockingGRPCServer()
s.Start(n.endpoint,
NewIdentityServer(n),
controller,
node)
- s.Wait()
stopChan := make(chan os.Signal)
signal.Notify(stopChan, os.Interrupt, syscall.SIGTERM, syscall.SIGHUP)
@@ -114,8 +129,10 @@ func (n *SeaweedFsDriver) Run() {
s.Stop()
s.Wait()
- glog.Infof("node cleanup")
- node.NodeCleanup()
+ if node != nil {
+ glog.Infof("node cleanup")
+ node.NodeCleanup()
+ }
glog.Infof("stopped")
}