Skip to content

Commit 82bc092

Browse files
committed
Remove driver name hardcode
Looking through the code, the driver name seems to be configurable. However, there is one place where it is hardcoded. This PR tries to ease the restriction and allow the use of custom driver names. Signed-off-by: m.nabokikh <[email protected]>
1 parent b1b8fa9 commit 82bc092

File tree

7 files changed

+18
-9
lines changed

7 files changed

+18
-9
lines changed

cmd/secrets-store-csi-driver/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ func mainErr() error {
168168
return err
169169
}
170170

171-
reconciler, err := controllers.New(mgr, *nodeID)
171+
reconciler, err := controllers.New(*driverName, mgr, *nodeID)
172172
if err != nil {
173173
klog.ErrorS(err, "failed to create secret provider class pod status reconciler")
174174
return err
@@ -217,7 +217,7 @@ func mainErr() error {
217217

218218
// Secret rotation
219219
if *enableSecretRotation {
220-
rec, err := rotation.NewReconciler(mgr.GetCache(), scheme, *rotationPollInterval, providerClients, tokenClient)
220+
rec, err := rotation.NewReconciler(*driverName, mgr.GetCache(), scheme, *rotationPollInterval, providerClients, tokenClient)
221221
if err != nil {
222222
klog.ErrorS(err, "failed to initialize rotation reconciler")
223223
return err

controllers/secretproviderclasspodstatus_controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,11 @@ type SecretProviderClassPodStatusReconciler struct {
6464
reader client.Reader
6565
writer client.Writer
6666
eventRecorder record.EventRecorder
67+
driverName string
6768
}
6869

6970
// New creates a new SecretProviderClassPodStatusReconciler
70-
func New(mgr manager.Manager, nodeID string) (*SecretProviderClassPodStatusReconciler, error) {
71+
func New(driverName string, mgr manager.Manager, nodeID string) (*SecretProviderClassPodStatusReconciler, error) {
7172
eventBroadcaster := record.NewBroadcaster()
7273
kubeClient := kubernetes.NewForConfigOrDie(mgr.GetConfig())
7374
eventBroadcaster.StartRecordingToSink(&clientcorev1.EventSinkImpl{Interface: kubeClient.CoreV1().Events("")})
@@ -81,6 +82,7 @@ func New(mgr manager.Manager, nodeID string) (*SecretProviderClassPodStatusRecon
8182
reader: mgr.GetCache(),
8283
writer: mgr.GetClient(),
8384
eventRecorder: recorder,
85+
driverName: driverName,
8486
}, nil
8587
}
8688

@@ -265,7 +267,7 @@ func (r *SecretProviderClassPodStatusReconciler) Reconcile(ctx context.Context,
265267
}
266268

267269
// determine which pod volume this is associated with
268-
podVol := k8sutil.SPCVolume(pod, spc.Name)
270+
podVol := k8sutil.SPCVolume(pod, r.driverName, spc.Name)
269271
if podVol == nil {
270272
return ctrl.Result{}, fmt.Errorf("failed to find secret provider class pod status volume for pod %s/%s", req.Namespace, spcPodStatus.Status.PodName)
271273
}

controllers/secretproviderclasspodstatus_controller_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ func newReconciler(client client.Client, scheme *runtime.Scheme, nodeID string)
117117
eventRecorder: fakeRecorder,
118118
mutex: &sync.Mutex{},
119119
nodeID: nodeID,
120+
driverName: "secrets-store.csi.k8s.io",
120121
}
121122
}
122123

pkg/rotation/reconciler.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,17 @@ type Reconciler struct {
8080
// secretStore stores Secret (filtered on secrets-store.csi.k8s.io/used=true)
8181
secretStore k8s.Store
8282
tokenClient *k8s.TokenClient
83+
84+
driverName string
8385
}
8486

8587
// +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch
8688
// These permissions are required for secret rotation + nodePublishSecretRef
8789
// TODO (aramase) remove this as part of https://github.com/kubernetes-sigs/secrets-store-csi-driver/issues/585
8890

8991
// NewReconciler returns a new reconciler for rotation
90-
func NewReconciler(client client.Reader,
92+
func NewReconciler(driverName string,
93+
client client.Reader,
9194
s *runtime.Scheme,
9295
rotationPollInterval time.Duration,
9396
providerClients *secretsstore.PluginClientBuilder,
@@ -123,6 +126,8 @@ func NewReconciler(client client.Reader,
123126
cache: client,
124127
secretStore: secretStore,
125128
tokenClient: tokenClient,
129+
130+
driverName: driverName,
126131
}, nil
127132
}
128133

@@ -295,7 +300,7 @@ func (r *Reconciler) reconcile(ctx context.Context, spcps *secretsstorev1.Secret
295300
}
296301

297302
// determine which pod volume this is associated with
298-
podVol := k8sutil.SPCVolume(pod, spc.Name)
303+
podVol := k8sutil.SPCVolume(pod, r.driverName, spc.Name)
299304
if podVol == nil {
300305
errorReason = internalerrors.PodVolumeNotFound
301306
return fmt.Errorf("could not find secret provider class pod status volume for pod %s/%s", pod.Namespace, pod.Name)

pkg/rotation/reconciler_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ func newTestReconciler(client client.Reader, kubeClient kubernetes.Interface, cr
8383
cache: client,
8484
secretStore: secretStore,
8585
tokenClient: k8s.NewTokenClient(kubeClient, "test-driver", 1*time.Second),
86+
driverName: "secrets-store.csi.k8s.io",
8687
}, nil
8788
}
8889

pkg/util/k8sutil/volume.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ import (
2424

2525
// SPCVolume finds the Secret Provider Class volume from a Pod, or returns nil
2626
// if a volume could not be found.
27-
func SPCVolume(pod *corev1.Pod, spcName string) *corev1.Volume {
27+
func SPCVolume(pod *corev1.Pod, driverName, spcName string) *corev1.Volume {
2828
for idx := range pod.Spec.Volumes {
2929
vol := &pod.Spec.Volumes[idx]
3030
if vol.CSI == nil {
3131
continue
3232
}
33-
if vol.CSI.Driver != "secrets-store.csi.k8s.io" {
33+
if vol.CSI.Driver != driverName {
3434
continue
3535
}
3636
if vol.CSI.VolumeAttributes["secretProviderClass"] != spcName {

pkg/util/k8sutil/volume_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func TestSPCVolume(t *testing.T) {
159159

160160
for _, tc := range tests {
161161
t.Run(tc.name, func(t *testing.T) {
162-
got := SPCVolume(tc.pod, tc.spcName)
162+
got := SPCVolume(tc.pod, "secrets-store.csi.k8s.io", tc.spcName)
163163
if diff := cmp.Diff(tc.want, got); diff != "" {
164164
t.Errorf("SPCVolume() mismatch (-want +got):\n%s", diff)
165165
}

0 commit comments

Comments
 (0)