start controller or node server based on config

if both controller and nodeserver flags are set/unset
cephcsi will start both server,

if only one flag is set, it will start relavent
service.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
This commit is contained in:
Madhu Rajanna 2019-08-14 12:12:17 +05:30 committed by mergify[bot]
parent 89732d923f
commit 0da4bd5151
20 changed files with 78 additions and 35 deletions

View File

@ -55,6 +55,8 @@ func init() {
flag.StringVar(&conf.MetadataStorage, "metadatastorage", "", "metadata persistence method [node|k8s_configmap]") flag.StringVar(&conf.MetadataStorage, "metadatastorage", "", "metadata persistence method [node|k8s_configmap]")
flag.StringVar(&conf.PluginPath, "pluginpath", "/var/lib/kubelet/plugins/", "the location of cephcsi plugin") flag.StringVar(&conf.PluginPath, "pluginpath", "/var/lib/kubelet/plugins/", "the location of cephcsi plugin")
flag.IntVar(&conf.PidLimit, "pidlimit", 0, "the PID limit to configure through cgroups") flag.IntVar(&conf.PidLimit, "pidlimit", 0, "the PID limit to configure through cgroups")
flag.BoolVar(&conf.IsControllerServer, "controllerserver", false, "start cephcsi controller server")
flag.BoolVar(&conf.IsNodeServer, "nodeserver", false, "start cephcsi node server")
// rbd related flags // rbd related flags
flag.BoolVar(&conf.Containerized, "containerized", true, "whether run as containerized") flag.BoolVar(&conf.Containerized, "containerized", true, "whether run as containerized")

View File

@ -68,6 +68,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=cephfs.csi.ceph.com" - "--drivername=cephfs.csi.ceph.com"

View File

@ -53,6 +53,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=cephfs.csi.ceph.com" - "--drivername=cephfs.csi.ceph.com"

View File

@ -68,6 +68,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -71,6 +71,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -71,6 +71,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=cephfs.csi.ceph.com" - "--drivername=cephfs.csi.ceph.com"

View File

@ -53,6 +53,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=cephfs.csi.ceph.com" - "--drivername=cephfs.csi.ceph.com"

View File

@ -68,6 +68,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -73,6 +73,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=cephfs" - "--type=cephfs"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -83,6 +83,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=rbd.csi.ceph.com" - "--drivername=rbd.csi.ceph.com"

View File

@ -56,6 +56,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=rbd.csi.ceph.com" - "--drivername=rbd.csi.ceph.com"

View File

@ -70,6 +70,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -89,6 +89,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -87,6 +87,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=rbd.csi.ceph.com" - "--drivername=rbd.csi.ceph.com"

View File

@ -56,6 +56,7 @@ spec:
args: args:
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=rbd.csi.ceph.com" - "--drivername=rbd.csi.ceph.com"

View File

@ -70,6 +70,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--nodeserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -92,6 +92,7 @@ spec:
args : args :
- "--nodeid=$(NODE_ID)" - "--nodeid=$(NODE_ID)"
- "--type=rbd" - "--type=rbd"
- "--controllerserver=true"
- "--endpoint=$(CSI_ENDPOINT)" - "--endpoint=$(CSI_ENDPOINT)"
- "--v=5" - "--v=5"
- "--drivername=$(DRIVER_NAME)" - "--drivername=$(DRIVER_NAME)"

View File

@ -147,20 +147,30 @@ func (fs *Driver) Run(conf *util.Config, cachePersister util.CachePersister) {
klog.Fatalln("failed to initialize CSI driver") klog.Fatalln("failed to initialize CSI driver")
} }
fs.cd.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{ if conf.IsControllerServer || !conf.IsNodeServer {
csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME, fs.cd.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{
}) csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
})
fs.cd.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{
csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
})
fs.cd.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{
csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
})
}
// Create gRPC servers // Create gRPC servers
fs.is = NewIdentityServer(fs.cd) fs.is = NewIdentityServer(fs.cd)
fs.ns = NewNodeServer(fs.cd, conf.Vtype)
fs.cs = NewControllerServer(fs.cd, cachePersister) if conf.IsNodeServer {
fs.ns = NewNodeServer(fs.cd, conf.Vtype)
}
if conf.IsControllerServer {
fs.cs = NewControllerServer(fs.cd, cachePersister)
}
if !conf.IsControllerServer && !conf.IsNodeServer {
fs.ns = NewNodeServer(fs.cd, conf.Vtype)
fs.cs = NewControllerServer(fs.cd, cachePersister)
}
server := csicommon.NewNonBlockingGRPCServer() server := csicommon.NewNonBlockingGRPCServer()
server.Start(conf.Endpoint, fs.is, fs.cs, fs.ns) server.Start(conf.Endpoint, fs.is, fs.cs, fs.ns)

View File

@ -121,28 +121,41 @@ func (r *Driver) Run(conf *util.Config, cachePersister util.CachePersister) {
if r.cd == nil { if r.cd == nil {
klog.Fatalln("Failed to initialize CSI Driver.") klog.Fatalln("Failed to initialize CSI Driver.")
} }
r.cd.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{ if conf.IsControllerServer || !conf.IsNodeServer {
csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME, r.cd.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{
csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT, csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
csi.ControllerServiceCapability_RPC_CLONE_VOLUME, csi.ControllerServiceCapability_RPC_CREATE_DELETE_SNAPSHOT,
}) csi.ControllerServiceCapability_RPC_CLONE_VOLUME,
})
// We only support the multi-writer option when using block, but it's a supported capability for the plugin in general // We only support the multi-writer option when using block, but it's a supported capability for the plugin in general
// In addition, we want to add the remaining modes like MULTI_NODE_READER_ONLY, // In addition, we want to add the remaining modes like MULTI_NODE_READER_ONLY,
// MULTI_NODE_SINGLE_WRITER etc, but need to do some verification of RO modes first // MULTI_NODE_SINGLE_WRITER etc, but need to do some verification of RO modes first
// will work those as follow up features // will work those as follow up features
r.cd.AddVolumeCapabilityAccessModes( r.cd.AddVolumeCapabilityAccessModes(
[]csi.VolumeCapability_AccessMode_Mode{csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER, []csi.VolumeCapability_AccessMode_Mode{csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER}) csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER})
}
// Create GRPC servers // Create GRPC servers
r.ids = NewIdentityServer(r.cd) r.ids = NewIdentityServer(r.cd)
r.ns, err = NewNodeServer(r.cd, conf.Containerized, conf.Vtype)
if err != nil { if conf.IsNodeServer {
klog.Fatalf("failed to start node server, err %v\n", err) r.ns, err = NewNodeServer(r.cd, conf.Containerized, conf.Vtype)
if err != nil {
klog.Fatalf("failed to start node server, err %v\n", err)
}
} }
r.cs = NewControllerServer(r.cd, cachePersister) if conf.IsControllerServer {
r.cs = NewControllerServer(r.cd, cachePersister)
}
if !conf.IsControllerServer && !conf.IsNodeServer {
r.ns, err = NewNodeServer(r.cd, conf.Containerized, conf.Vtype)
if err != nil {
klog.Fatalf("failed to start node server, err %v\n", err)
}
r.cs = NewControllerServer(r.cd, cachePersister)
}
s := csicommon.NewNonBlockingGRPCServer() s := csicommon.NewNonBlockingGRPCServer()
s.Start(conf.Endpoint, r.ids, r.cs, r.ns) s.Start(conf.Endpoint, r.ids, r.cs, r.ns)

View File

@ -54,14 +54,16 @@ var (
// Config holds the parameters list which can be configured // Config holds the parameters list which can be configured
type Config struct { type Config struct {
// common flags // common flags
Vtype string // driver type [rbd|cephfs|liveness] Vtype string // driver type [rbd|cephfs|liveness]
Endpoint string // CSI endpoint Endpoint string // CSI endpoint
DriverName string // name of the driver DriverName string // name of the driver
NodeID string // node id NodeID string // node id
InstanceID string // unique ID distinguishing this instance of Ceph CSI InstanceID string // unique ID distinguishing this instance of Ceph CSI
MetadataStorage string // metadata persistence method [node|k8s_configmap] MetadataStorage string // metadata persistence method [node|k8s_configmap]
PluginPath string // location of cephcsi plugin PluginPath string // location of cephcsi plugin
PidLimit int // PID limit to configure through cgroups") PidLimit int // PID limit to configure through cgroups")
IsControllerServer bool // if set to true start provisoner server
IsNodeServer bool // if set to true start node server
// rbd related flags // rbd related flags
Containerized bool // whether run as containerized Containerized bool // whether run as containerized