EFS CSI Driver
このセクションに入る前に、メインのストレージセクションで紹介されたKubernetesのストレージオブジェクト(ボリューム、Persistent Volume(PV)、Persistent Volume Claim(PVC)、動的プロビジョニング、一時的ストレージ)について理解しておく必要があります。
Amazon Elastic File System Container Storage Interface (CSI) Driverを使用すると、CSIインターフェースを提供することで、AWSで実行されているKubernetesクラスターがAmazon EFSファイルシステムのライフサイクルを管理できるようになり、ステートフルなコンテナ化されたアプリケーションを実行できます。
次のアーキテクチャ図は、EKS PodのPersistent StorageとしてEFSを使用する方法を示しています:
EKSクラスターで動的プロビジョニングを使用してAmazon EFSを利用するには、まずEFS CSI Driverがインストールされていることを確認する必要があります。このドライバーはCSI仕様を実装してお り、コンテナオーケストレーターがAmazon EFSファイルシステムのライフサイクル全体を管理できるようにします。
セキュリティの向上と管理の簡素化のために、Amazon EFS CSI driverをAmazon EKSアドオンとして実行できます。必要なIAM roleが既に作成されているため、アドオンのインストールを進めることができます:
アドオンがEKSクラスターに作成したものを確認してみましょう。例えば、クラスター内の各ノードでPodを実行するDaemonSetがあります:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
efs-csi-node 3 3 3 3 3 kubernetes.io/os=linux 47s
EFS CSI driverは動的プロビジョニングと静的プロビジョニングの両方をサポートしています:
- 動的プロビジョニング:ドライバーは各PersistentVolumeのアクセスポイントを作成します。これには既存のAWS EFSファイルシステムが必要であり、StorageClassパラメータで指定する必要があります。
- 静的プロビジョニング:これにも事前に作成されたAWS EFSファイルシステムが必要であり、ドライバーを使用してコンテナ内のボリュームとしてマウントできます。
EFSファイルシステムはすでにプロビジョニングされており、マウントターゲットとEFSマウントポイントへのNFSトラフィックを許可するインバウンドルールを含む必要なセキュリティグループも設定されています。後で使用するためにIDを取得しましょう:
fs-061cb5c5ed841a6b0
次に、事前にプロビジョニングされたEFSファイルシステムとEFSアクセスポイントをプロビジョニングモードで使用するように設定されたStorageClassオブジェクトを作成します。これにはefsstorageclass.yamlファイルを使用します。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: efs-sc
provisioner: efs.csi.aws.com
parameters:
provisioningMode: efs-ap
fileSystemId: ${EFS_ID}
directoryPerms: "700"