> ## 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.

# EFS ファイルシステム

インプロセスボリュームは、お客様が作成した EFS ファイルシステム上に配置されます。このボリュームは、チャートで自動プロビジョニングすることも、お客様が事前にプロビジョニングすることもできます。

| | 自動プロビジョニング (デフォルト) | 事前プロビジョニング |
| - | - | - |
| お客様が作成するもの | ファイルシステム | ファイルシステム、アクセスポイント、PersistentVolume、クレーム |
| お客様が設定するもの | `storage.inProcess.efs.fileSystemId` | `storage.inProcess.existingClaim` |
| EFS CSI ドライバーの IAM | コントローラーに `AmazonEFSCSIDriverPolicy` を付与 | 不要 |

## ファイルシステムを作成する

ファイルシステムには、ノードが稼働する各アベイラビリティーゾーンにマウントターゲットが必要です。各マウントターゲットには、ノードからの TCP 2049 のトラフィックを許可するセキュリティグループを設定してください。

```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)

# アベイラビリティーゾーンごとに 1 回実行
aws efs create-mount-target --region <region> \
  --file-system-id $FS_ID --subnet-id <subnet-id> --security-groups <security-group-id>
```

エラスティックスループットは、ワーカープールの規模に応じてスケールします。

## EFS CSI ドライバーをインストールする

自動プロビジョニングでは、ドライバーのコントローラーがアクセスポイントを作成するために `AmazonEFSCSIDriverPolicy` が必要です。

```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
```

事前にプロビジョニングされたボリュームを使用する場合、このロールは不要です。その他のインストール方法については、Amazon EKS ドキュメントの [Amazon EFS](https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html) を参照してください。

## 自動プロビジョニング

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

チャートは StorageClass `<release>-in-process` を作成し、それを使用してクレームを作成します。ドライバーは、このクレーム用に、ユーザー `65534` が所有するアクセスポイントを作成します。`basePath` などの追加の [EFS CSI ドライバーのパラメーター](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/parameters.md)は、`storage.inProcess.storageClass.parameters` の下に指定します。

## 事前プロビジョニング

**1. 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
```

ファイルシステムのルートを直接マウントしないでください。ルートは `root` の所有であるため、FineParser から書き込むことはできません。

**2. ボリュームとクレームを作成する**

```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. チャートでクレームを指定する**

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