> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Système de fichiers EFS

Le volume in-process réside sur un système de fichiers EFS que vous créez. Ce volume peut être provisionné automatiquement par le chart ou provisionné au préalable par vos soins :

| | Provisionnement automatique (par défaut) | Provisionnement préalable |
| - | - | - |
| Vous créez | Le système de fichiers | Le système de fichiers, un point d’accès, un PersistentVolume et une revendication |
| Vous définissez | `storage.inProcess.efs.fileSystemId` | `storage.inProcess.existingClaim` |
| IAM du pilote CSI EFS | `AmazonEFSCSIDriverPolicy` sur le contrôleur | Aucune |

## Créer le système de fichiers

Le système de fichiers nécessite une cible de montage (mount target) dans chaque zone de disponibilité (Availability Zone) où s'exécutent vos nœuds, ainsi qu'un groupe de sécurité autorisant le trafic TCP sur le port 2049 en provenance des nœuds.

```bash theme={null}
FS_ID=$(aws efs create-file-system --region <region> \
  --encrypted --throughput-mode elastic \
  --tags Key=Name,Value=fineparser \
  --query FileSystemId --output text)

# à exécuter une fois par zone de disponibilité
aws efs create-mount-target --region <region> \
  --file-system-id $FS_ID --subnet-id <subnet-id> --security-groups <security-group-id>
```

Le débit élastique s'ajuste en fonction de la taille du pool de processus de traitement.

## Installer le pilote CSI EFS

Pour le provisionnement automatique, le contrôleur du pilote a besoin de la stratégie `AmazonEFSCSIDriverPolicy` pour créer des points d'accès :

```bash theme={null}
eksctl create iamserviceaccount \
  --cluster <cluster> --region <region> \
  --namespace kube-system --name efs-csi-controller-sa \
  --role-name AmazonEKS_EFS_CSI_DriverRole --role-only \
  --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
  --approve

aws eks create-addon --region <region> --cluster-name <cluster> \
  --addon-name aws-efs-csi-driver \
  --service-account-role-arn arn:aws:iam::<account>:role/AmazonEKS_EFS_CSI_DriverRole
```

Le rôle n'est pas nécessaire pour un volume préprovisionné. Pour les autres méthodes d'installation, consultez [Amazon EFS](https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html) dans la documentation Amazon EKS.

## Provisionnement automatique

```yaml fineparser-values.yaml theme={null}
storage:
  inProcess:
    efs:
      fileSystemId: fs-0123456789abcdef0
```

Le chart crée une StorageClass, `<release>-in-process`, ainsi qu'une revendication basée sur celle-ci. Le pilote crée pour cette revendication un point d'accès appartenant à l'utilisateur `65534`. Les [paramètres supplémentaires du pilote CSI EFS](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/parameters.md), tels que `basePath`, se définissent sous `storage.inProcess.storageClass.parameters`.

## Provisionnement préalable

**1. Créer un point d’accès appartenant à l’UID 65534**

```bash theme={null}
aws efs create-access-point --region <region> --file-system-id $FS_ID \
  --posix-user Uid=65534,Gid=65534 \
  --root-directory 'Path=/fineparser,CreationInfo={OwnerUid=65534,OwnerGid=65534,Permissions=755}' \
  --query AccessPointId --output text
```

Ne montez pas directement la racine du système de fichiers : elle appartient à `root` et FineParser ne peut pas y écrire.

**2. Créer le volume et la revendication**

```yaml fineparser-in-process.yaml theme={null}
apiVersion: v1
kind: PersistentVolume
metadata:
  name: fineparser-in-process
spec:
  capacity:
    storage: 10Gi
  accessModes: [ReadWriteMany]
  persistentVolumeReclaimPolicy: Retain
  storageClassName: ""
  csi:
    driver: efs.csi.aws.com
    volumeHandle: fs-0123456789abcdef0::fsap-0123456789abcdef0
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fineparser-in-process
  namespace: fineparser
spec:
  accessModes: [ReadWriteMany]
  storageClassName: ""
  volumeName: fineparser-in-process
  resources:
    requests:
      storage: 10Gi
```

**3. Faire pointer le chart vers la revendication**

```yaml fineparser-values.yaml theme={null}
storage:
  inProcess:
    existingClaim: fineparser-in-process
```
