Perché la mia distribuzione File Storage for VPC non riesce a causa di un errore di autorizzazioni?
Cloud privato virtuale
La tua app che utilizza File Storage for VPC genera un errore relativo alle autorizzazioni.
Risolvere i problemi relativi all'accesso degli utenti non root all'archivio file VPC.
È stata creata la propria classe di archiviazione da utilizzare con una condivisione file esistente, ma non sono stati specificati uid e gid corretti. Quando i processi vengono eseguiti su UNIX e su Linux, il sistema
operativo identifica un utente tramite un ID utente (UID) e un gruppo tramite un ID gruppo (GID). Questi ID determinano a quali risorse di sistema un utente o un gruppo può accedere. Ad esempio, se l'ID utente dell'archiviazione file è 12345
e il relativo ID gruppo è 6789, il montaggio sul nodo host e nel contenitore deve avere gli stessi ID. Il processo principale del contenitore deve corrispondere a uno o a entrambi gli ID per accedere alla condivisione file.
È possibile risolvere il problema in uno dei seguenti modi.
-
Se hai bisogno che la tua applicazione venga eseguita come non root, crea la tua classe di archiviazione con i
uidegidcorretti di cui la tua applicazione ha bisogno. -
Se desideri eseguire la tua app come utente root, modifica la configurazione di distribuzione in modo da utilizzare
fsGroup: 0.
Crea la tua classe di archiviazione e specifica le uid e gid di cui hai bisogno la tua applicazione
Se vuoi utilizzare File Storage for VPC con provisioning statico, devi fare riferimento a uid e gid corretti.
-
Crea una classe di archiviazione con
uidegidcorretti di cui la tua applicazione ha bisogno. Per un elenco dei profili di archiviazione, vedere File Storage for VPC.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: custom-storageclas provisioner: vpc.file.csi.ibm.io mountOptions: - hard - nfsvers=4.0 - sec=sys parameters: profile: "custom-iops" # The VPC Storage profile used. iops: "400" # Default IOPS. User can override from secrets billingType: "hourly" # The default billing policy used. User can override this default encrypted: "false" # By default, all PVC using this class will only be provider managed encrypted. The user can override this default encryptionKey: "" # If encrypted is true, then a user must specify the encryption key used associated KP instance resourceGroup: "" # Use resource group if specified here. Otherwise, use the one mentioned in storage-secrete-store zone: "" # By default, the storage vpc driver will select a zone. The user can override this default tags: "" # A list of tags "a, b, c" that will be created when the volume is created. This can be overidden by user classVersion: "1" uid: "1234" # The initial user identifier for the file share. gid: "5678" # The initial group identifier for the file share. reclaimPolicy: "Delete" allowVolumeExpansion: true -
Crea la classe di archiviazione personalizzata nel tuo cluster.
oc apply -f custom-storageclass.yaml -
Verifica che la tua classe di archiviazione sia disponibile nel cluster.
oc get scOutput di esempio
NAME PROVISIONER ibmc-vpc-file-10iops-tier vpc.file.csi.ibm.io ibmc-vpc-file-3iops-tier vpc.file.csi.ibm.io ibmc-vpc-file-5iops-tier vpc.file.csi.ibm.io ibmc-vpc-file-retain-10iops-tier vpc.file.csi.ibm.io ibmc-vpc-file-retain-3iops-tier vpc.file.csi.ibm.io ibmc-vpc-file-retain-5iops-tier vpc.file.csi.ibm.io ibmc-vpc-file-custom vpc.file.csi.ibm.io
Modifica la tua app da eseguire come root con fsGroup: 0
-
Accedi al tuo cluster.
-
Identifica la distribuzione nel tuo cluster che vuoi modificare.
kubectl get deployments -
Modifica la distribuzione aggiungendo
fsGroup: 0nella sezionesecurityContextdella tua distribuzione.kubectl get deployment -o yaml YOUR-DEPLOYMENTapiVersion: apps/v1 kind: Deployment metadata: name: <deployment_name> labels: app: <deployment_label> spec: securityContext: fsGroup: 0 selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: containers: - image: <image_name> name: <container_name> volumeMounts: - name: <volume_name> mountPath: /<file_path> volumes: - name: <volume_name> persistentVolumeClaim: claimName: PVC-NAME -
Applica le modifiche alla tua distribuzione.