Skip to content

Commit 898943d

Browse files
committed
squashed commit for Allow Fileownership
1 parent 0104039 commit 898943d

25 files changed

+603
-714
lines changed

apis/v1/secretproviderclasspodstatus_types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ type SecretProviderClassPodStatusStatus struct {
3232
Mounted bool `json:"mounted,omitempty"`
3333
TargetPath string `json:"targetPath,omitempty"`
3434
Objects []SecretProviderClassObject `json:"objects,omitempty"`
35+
FSGroup string `json:"fsGroup,omitempty"`
3536
}
3637

3738
// SecretProviderClassObject defines the object fetched from external secrets store

charts/secrets-store-csi-driver/crds/secrets-store.csi.x-k8s.io_secretproviderclasspodstatuses.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ spec:
4141
description: SecretProviderClassPodStatusStatus defines the observed state
4242
of SecretProviderClassPodStatus
4343
properties:
44+
fsGroup:
45+
type: string
4446
mounted:
4547
type: boolean
4648
objects:

config/crd/bases/secrets-store.csi.x-k8s.io_secretproviderclasspodstatuses.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ spec:
4141
description: SecretProviderClassPodStatusStatus defines the observed state
4242
of SecretProviderClassPodStatus
4343
properties:
44+
fsGroup:
45+
type: string
4446
mounted:
4547
type: boolean
4648
objects:

deploy/secrets-store.csi.x-k8s.io_secretproviderclasspodstatuses.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ spec:
4141
description: SecretProviderClassPodStatusStatus defines the observed state
4242
of SecretProviderClassPodStatus
4343
properties:
44+
fsGroup:
45+
type: string
4446
mounted:
4547
type: boolean
4648
objects:

manifest_staging/charts/secrets-store-csi-driver/crds/secrets-store.csi.x-k8s.io_secretproviderclasspodstatuses.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ spec:
4141
description: SecretProviderClassPodStatusStatus defines the observed state
4242
of SecretProviderClassPodStatus
4343
properties:
44+
fsGroup:
45+
type: string
4446
mounted:
4547
type: boolean
4648
objects:

manifest_staging/deploy/secrets-store.csi.x-k8s.io_secretproviderclasspodstatuses.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ spec:
4141
description: SecretProviderClassPodStatusStatus defines the observed state
4242
of SecretProviderClassPodStatus
4343
properties:
44+
fsGroup:
45+
type: string
4446
mounted:
4547
type: boolean
4648
objects:

pkg/constants/constants.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package constants
2+
3+
const (
4+
NO_GID = int64(-1) // Use the default gid -1 to indicate no change in FSGroup
5+
)

pkg/errors/errors.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,6 @@ const (
4444
// PodVolumeNotFound error
4545
PodVolumeNotFound = "PodVolumeNotFound"
4646
// FileWriteError error
47-
FileWriteError = "FileWriteError"
47+
FileWriteError = "FileWriteError"
48+
FailedToParseFSGroup = "FailedToParseFSGroup"
4849
)

pkg/rotation/reconciler.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ import (
2121
"encoding/json"
2222
"fmt"
2323
"os"
24+
"strconv"
2425
"strings"
2526
"time"
2627

2728
secretsstorev1 "sigs.k8s.io/secrets-store-csi-driver/apis/v1"
2829
"sigs.k8s.io/secrets-store-csi-driver/controllers"
2930
secretsStoreClient "sigs.k8s.io/secrets-store-csi-driver/pkg/client/clientset/versioned"
31+
"sigs.k8s.io/secrets-store-csi-driver/pkg/constants"
3032
internalerrors "sigs.k8s.io/secrets-store-csi-driver/pkg/errors"
3133
"sigs.k8s.io/secrets-store-csi-driver/pkg/k8s"
3234
secretsstore "sigs.k8s.io/secrets-store-csi-driver/pkg/secrets-store"
@@ -398,7 +400,18 @@ func (r *Reconciler) reconcile(ctx context.Context, spcps *secretsstorev1.Secret
398400
r.generateEvent(pod, corev1.EventTypeWarning, mountRotationFailedReason, fmt.Sprintf("failed to lookup provider client: %q", providerName))
399401
return fmt.Errorf("failed to lookup provider client: %q", providerName)
400402
}
401-
newObjectVersions, errorReason, err := secretsstore.MountContent(ctx, providerClient, string(paramsJSON), string(secretsJSON), spcps.Status.TargetPath, string(permissionJSON), oldObjectVersions)
403+
gid := constants.NO_GID
404+
if spcps.Status.FSGroup != "" {
405+
gid, err = strconv.ParseInt(spcps.Status.FSGroup, 10, 64)
406+
if err != nil {
407+
errorReason = internalerrors.FailedToParseFSGroup
408+
errStr := fmt.Sprintf("failed to rotate objects for pod %s/%s, err: %v, invalid FSGroup:%s", spcps.Namespace, spcps.Status.PodName, err, spcps.Status.FSGroup)
409+
r.generateEvent(pod, corev1.EventTypeWarning, mountRotationFailedReason, errStr)
410+
return fmt.Errorf("%s", errStr)
411+
}
412+
}
413+
klog.V(5).Infof("Reconciling pod %s/%s with fsGroup: %v\n", spcps.Namespace, spcps.Status.PodName, gid)
414+
newObjectVersions, errorReason, err := secretsstore.MountContent(ctx, providerClient, string(paramsJSON), string(secretsJSON), spcps.Status.TargetPath, string(permissionJSON), oldObjectVersions, gid)
402415
if err != nil {
403416
r.generateEvent(pod, corev1.EventTypeWarning, mountRotationFailedReason, fmt.Sprintf("provider mount err: %+v", err))
404417
return fmt.Errorf("failed to rotate objects for pod %s/%s, err: %w", spcps.Namespace, spcps.Status.PodName, err)

0 commit comments

Comments
 (0)