S3 Filesを使用した静的プロビジョニング
S3 FilesのストレージクラスとS3 Filesが静的プロビジョニングを使用する理由を理解したので、事前に作成されたS3ファイルシステム用にPersistent Volumeを静的にプロビジョニングし、UIコンポーネントをマウントするように変更しましょう。
S3ファイルシステムは、バージョニングが有効なS3バケットにリンクされた状態でプロビジョニングされています。ファイルシステムには、マウントターゲットと、ポート2049でNFSトラフィックを許可するインバウンドルールを含む必要なセキュリティグループが含まれています。静的PersistentVolumeに必要なIDを取得しましょう:
~$export S3_FILES_ID=$(aws s3files list-file-systems \
--query "fileSystems[?starts_with(bucket, 'arn:aws:s3:::${EKS_CLUSTER_NAME}-s3-files-')].fileSystemId | [0]" \
--output text)
~$echo $S3_FILES_ID
fs-0123456789abcdef0
静的プロビジョニングでは、セットとして機能する3つのオブジェクトを定義します:
- パラメータなしの
StorageClass(s3-files-sc)で、ボリュームとクレームをバインドするためだけに使用されます - 既存のS3ファイルシステムを直接指し示す
PersistentVolume(s3-files-pv) - その特定の
PersistentVolumeにバインドするPersistentVolumeClaim(s3-files-claim)
静的プロビジョニングのStorageClassは、PersistentVolumeとPersistentVolumeClaimの間のバインディングラベルとしてのみ機能します。意図的にパラメータがないため、ドライバーがオンデマンドで何かをプロビジョニングしようとすることはありません:
~/environment/eks-workshop/modules/fundamentals/storage/s3-files/pv/s3filesstorageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: s3-files-sc
# No parameters and no dynamic provisioning: this StorageClass exists only to
# bind the statically-provisioned PersistentVolume to its PersistentVolumeClaim.
# The S3 file system is created ahead of time, so the EFS CSI driver does not
# provision anything on demand here.
provisioner: efs.csi.aws.com
A
provisionerパラメータをefs.csi.aws.comに設定します - S3 FilesはEFS CSIドライバーを使用するため、EFSに使用されるものと同じプロビジョナーです
B
parametersがないことに注意してください: 動的プロビジョニングとは異なり、ドライバーにファイルシステムやアクセスポイントの作成を要求していません
では、PersistentVolumeとPersistentVolumeClaimを見てみましょう:
~/environment/eks-workshop/modules/fundamentals/storage/s3-files/pv/s3filespv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: s3-files-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: s3-files-sc
csi:
driver: efs.csi.aws.com
volumeHandle: s3files:${S3_FILES_ID}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: s3-files-claim
namespace: ui
spec:
accessModes:
- ReadWriteMany
storageClassName: s3-files-sc
resources:
requests:
storage: 5Gi
volumeName: s3-files-pv