Skip to content

Commit 579dd37

Browse files
committed
Add support to configure MaxVolumesPerNode for of csi node
Add support to configure MaxVolumesPerNode setting of csi node via the cos-csi-driver-configmap. The configmap value will be synced to the CR The node syncer will then update the MAX_VOLUMES_PER_NODE env var on the daemonset Depends on IBM/ibm-object-csi-driver#173 Signed-off-by: Benjamin Isinger <[email protected]>
1 parent 1a5ddd2 commit 579dd37

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

api/v1alpha1/ibmobjectcsi_types.go

+3
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ type IBMObjectCSINodeSpec struct {
6969
Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
7070

7171
Resources ResourcesSpec `json:"resources,omitempty"`
72+
73+
// +kubebuilder:validation:Optional
74+
MaxVolumesPerNode string `json:"maxVolumesPerNode,omitempty"`
7275
}
7376

7477
// IBMObjectCSIControllerSpec defines the desired state of IBMObjectCSIController

controllers/ibmobjectcsi_controller.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,15 @@ func (r *IBMObjectCSIReconciler) handleConfigMapReconcile(ctx context.Context, r
222222
CSINodeMemoryRequest := configMap.Data["CSINodeMemoryRequest"]
223223
CSINodeCPULimit := configMap.Data["CSINodeCPULimit"]
224224
CSINodeMemoryLimit := configMap.Data["CSINodeMemoryLimit"]
225+
CSINodeMaxVolumesPerNode := configMap.Data["CSINodeMaxVolumesPerNode"]
225226

226-
reqLogger.Info("The resource requests and limits fetched from configmap",
227-
"CSINodeCPURequest", CSINodeCPURequest, "CSINodeMemoryRequest", CSINodeMemoryRequest,
228-
"CSINodeCPULimit", CSINodeCPULimit, "CSINodeMemoryLimit", CSINodeMemoryLimit)
227+
reqLogger.Info("Configruration fetched from configmap",
228+
"CSINodeCPURequest", CSINodeCPURequest,
229+
"CSINodeMemoryRequest", CSINodeMemoryRequest,
230+
"CSINodeCPULimit", CSINodeCPULimit,
231+
"CSINodeMemoryLimit", CSINodeMemoryLimit,
232+
"CSINodeMaxVolumesPerNode", CSINodeMaxVolumesPerNode,
233+
)
229234

230235
// Fetch the IBMObjectCSI instance
231236
instance := &objectdriverv1alpha1.IBMObjectCSI{}
@@ -245,9 +250,10 @@ func (r *IBMObjectCSIReconciler) handleConfigMapReconcile(ctx context.Context, r
245250
instance.Spec.Node.Resources.Requests.Memory = CSINodeMemoryRequest
246251
instance.Spec.Node.Resources.Limits.CPU = CSINodeCPULimit
247252
instance.Spec.Node.Resources.Limits.Memory = CSINodeMemoryLimit
253+
instance.Spec.Node.MaxVolumesPerNode = CSINodeMaxVolumesPerNode
248254

249255
// Update the instance in the Kubernetes API server
250-
reqLogger.Info("Updating IBMObjectCSI CR with resource requests and limits for Node pods")
256+
reqLogger.Info("Updating IBMObjectCSI CR with ConfigMap values")
251257
err = r.Update(ctx, instance)
252258
if err != nil {
253259
reqLogger.Error(err, "Failed to update IBMObjectCSI instance with ConfigMap values")

controllers/syncer/csi_node.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -212,14 +212,23 @@ func envVarFromField(name, fieldPath string) corev1.EnvVar {
212212
func (s *csiNodeSyncer) getEnvFor(name string) []corev1.EnvVar {
213213
switch name {
214214
case constants.NodeContainerName:
215-
return []corev1.EnvVar{
215+
envVars := []corev1.EnvVar{
216216
{
217217
Name: "CSI_ENDPOINT",
218218
Value: constants.CSINodeEndpoint,
219219
},
220220
envVarFromField("KUBE_NODE_NAME", "spec.nodeName"),
221221
}
222222

223+
if s.driver.Spec.Node.MaxVolumesPerNode != "" {
224+
envVars = append(envVars, corev1.EnvVar{
225+
Name: "MAX_VOLUMES_PER_NODE",
226+
Value: s.driver.Spec.Node.MaxVolumesPerNode,
227+
})
228+
}
229+
230+
return envVars
231+
223232
case constants.CSINodeDriverRegistrar:
224233
return []corev1.EnvVar{
225234
{

0 commit comments

Comments
 (0)