Pourquoi mon déploiement File Storage for VPC échoue-t-il en raison d'une erreur de droits d'accès?
Cloud privé virtuel
Votre application qui utilise File Storage for VPC rencontre une erreur liée aux autorisations.
Dépannage des problèmes d'accès des utilisateurs non root au stockage de fichiers VPC.
Vous avez créé votre propre classe de stockage à utiliser avec un partage de fichiers existant, mais vous n'avez pas indiqué les uid et gid appropriés. Lorsque des processus s'exécutent sous UNIX et sur l' Linux, le système
d'exploitation identifie un utilisateur à l'aide d'un identifiant utilisateur (UID) et un groupe à l'aide d'un identifiant de groupe (GID). Ces ID déterminent les ressources système auxquelles un utilisateur ou un groupe peut accéder. Par exemple,
si l'ID utilisateur du stockage de fichiers est 12345 et que son ID de groupe est 6789, alors le montage sur le nœud hôte et dans le conteneur doit utiliser ces mêmes ID. Le processus principal du conteneur doit correspondre à un des deux ID
ou aux deux ID pour accéder au partage de fichiers.
Vous pouvez résoudre le problème de l'une des manières suivantes.
-
Si vous avez besoin que votre application s'exécute en tant que non-root, créez votre propre classe de stockage avec les
uidetgidappropriés dont votre application a besoin. -
Si vous souhaitez exécuter votre application en tant qu'utilisateur root, modifiez votre déploiement pour utiliser
fsGroup: 0.
Créez votre propre classe de stockage et spécifiez les uid et gid dont votre application a besoin
Si vous souhaitez utiliser File Storage for VPC avec la mise à disposition statique, vous devez référencer les uid et gid appropriés.
-
Créez une classe de stockage avec les
uidetgidappropriés dont votre application a besoin. Pour une liste des profils de stockage, voir File Storage for VPC profiles.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 -
Créez la classe de stockage personnalisée dans votre cluster.
oc apply -f custom-storageclass.yaml -
Vérifiez que votre classe de stockage est disponible dans le cluster.
oc get scExemple de sortie
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
Editez votre application pour qu'elle s'exécute en tant que root avec fsGroup: 0
-
Connectez-vous à votre cluster.
-
Identifiez le déploiement dans votre cluster que vous souhaitez éditer.
kubectl get deployments -
Editez le déploiement en ajoutant
fsGroup: 0dans la sectionsecurityContextde votre déploiement.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 -
Appliquez les modifications à votre déploiement.