このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
Amazon Elastic File System (Amazon EFS) は、サーバーレスで伸縮自在なファイルストレージを提供するため、ストレージ容量およびパフォーマンスのプロビジョニングや管理を行うことなくファイルデータを共有できます。Amazon EFS Container Storage Interface (CSI) ドライバー
考慮事項
-
Amazon EFS CSI ドライバーは、Windows ベースのコンテナイメージと互換性がありません。
-
Fargate ノードでは永続ボリュームのために動的プロビジョニング
を使用できませんが、静的プロビジョニング は使用できます。 -
動的プロビジョニング
には、1.2 以降のドライバーが必要です。サポートされている Amazon EKS クラスターのバージョンのドライバーのバージョン 1.1
を使用して、永続ボリュームのために静的プロビジョニングを使用できます (EKS の Kubernetes バージョンライフサイクルを理解する を参照)。 -
このドライバーのバージョン 1.3.2
以降では、Amazon EC2 Graviton ベースのインスタンスを含む Arm64 アーキテクチャがサポートされています。 -
バージョン 1.4.2
以降のドライバーでは、ファイルシステムのマウントに FIPS を使用できます。 -
Amazon EFS のリソースクォータに注意してください。例えば、Amazon EFS ファイルシステムごとに作成できるアクセスポイントのクォータは 1,000 です。詳細については、「変更できない Amazon EFS リソースクォータ」を参照してください。
-
バージョン 2.0.0
以降、このドライバーは TLS 接続に stunnel
からefs-proxy
を使用するように切り替えました。efs-proxy
を使用すると、実行中のノードのコア数に 1 を足した数のスレッドが開きます。 -
Amazon EFS CSI ドライバーは Amazon EKS Hybrid Nodes と互換性がありません。
前提条件
-
クラスターの既存の AWS Identity and Access Management (IAM) OpenID Connect (OIDC) プロバイダー。既に存在しているかどうかを確認する、または作成するには「クラスターの IAM OIDC プロバイダーを作成するには」を参照してください。
-
ご使用のデバイスまたは AWS CloudShell で、バージョン
2.12.3
以降、または AWS コマンドラインインターフェイス (AWS CLI) のバージョン1.27.160
以降がインストールおよび設定されていること。現在のバージョンを確認するには「aws --version | cut -d / -f2 | cut -d ' ' -f1
」を参照してください。yum
、apt-get
、macOS 用の Homebrew などのパッケージマネージャーは、多くの場合 AWS CLI の最新バージョンより数バージョン古くなっています。最新バージョンをインストールするには「AWS コマンドラインインターフェイスユーザーガイド」の「インストール」および「aws configure を使用したクイック設定」を参照してください。AWS クラウドシェル にインストールされている AWS CLI バージョンも最新バージョンより数バージョン遅れることがあります。更新するには「AWS クラウドシェル ユーザーガイド」の「ホームディレクトリへの AWS CLI のインストール」を参照してください。 -
デバイスまたは AWS クラウドシェル に、
kubectl
コマンドラインツールがインストールされていること。バージョンはご使用のクラスターの Kubernetes バージョンと同じか、1 つ前のマイナーバージョン以前、あるいはそれより新しいバージョンが使用できます。例えば、クラスターのバージョンが1.29
である場合、kubectl
のバージョン1.28
、1.29
、または1.30
が使用できます。kubectl
をインストールまたはアップグレードする方法については「kubectl および eksctl のセットアップ」を参照してください。
注記
Fargate 上で実行される Pod は、ドライバーの手動インストールステップなしで、Amazon EFS ファイルシステムを自動的にマウントします。
ステップ 1: IAM ロールを作成する
Amazon EFS CSI ドライバーには、ファイルシステムと対話するための IAM アクセス許可が必要です。IAM ロールを作成して、必要な AWS 管理ポリシーをアタッチします。この手順を実装するには、次のいずれかのツールを使用できます。
注記
この手順には、ドライバーを Amazon EKS アドオンとして使用するための特定のステップが書かれています。セルフマネージド型インストールについての詳細は、GitHub の「Set up driver permission
eksctl
次のコマンドを実行して、eksctl
を使用して IAM ロールを作成します。my-cluster
をクラスターの名前に置き換え、AmazonEKS_EFS_CSI_DriverRole
をロールの名前に置き換えます。
export cluster_name=my-cluster
export role_name=AmazonEKS_EFS_CSI_DriverRole
eksctl create iamserviceaccount \
--name efs-csi-controller-sa \
--namespace kube-system \
--cluster $cluster_name \
--role-name $role_name \
--role-only \
--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
--approve
TRUST_POLICY=$(aws iam get-role --output json --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \
sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/')
aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"
AWS Management Console
次のコマンドを実行して、AWS Management Console を使用して IAM ロールを作成します。
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
左のナビゲーションペインで、[ロール] を選択してください。
-
[ロール] ページで、[ロールの作成] を選択してください。
-
[信頼されたエンティティを選択] ページで、以下の操作を実行します。
-
[信頼されたエンティティの種類] セクションで、[ウェブ アイデンティティ] を選択します。
-
[Identity provider] (ID プロバイダー) で、(Amazon EKS の [Overview] (概要) に示されているように) クラスターに [OpenID Connect provider URL] (OpenID Connect プロバイダーの URL) を選択します。
-
[対象者] で [
sts.amazonaws.com
] を選択します。 -
[Next] を選択します。
-
-
[アクセス許可を追加] ページで、以下を実行します。
-
[Filter policies] (ポリシーをフィルタリング) ボックスに
AmazonEFSCSIDriverPolicy
と入力します。 -
検索結果で返される
AmazonEFSCSIDriverPolicy
の左にあるチェックボックスを選択します。 -
[Next] を選択します。
-
-
[名前を付けて、レビューし、作成する] ページで、以下の操作を実行します。
-
[ロール名] に、
AmazonEKS_EFS_CSI_DriverRole
などのロールの一意の名前を入力します。 -
[タグの追加 (オプション)] で、タグをキーバリューのペアとして添付して、メタデータをロールに追加します。IAM でのタグの使用に関する詳細については『IAM ユーザーガイド』の「IAM リソースにタグを付ける」を参照してください。
-
[ロールの作成] を選択します。
-
-
ロールが作成されたら、コンソールでロールを選択して編集用に開きます。
-
[信頼関係] タブを選択し、続いて [信頼ポリシーの編集] を選択します。
-
次の行と似ている行を探してます。
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
前の行の上に、次の行を追加します。
region-code
を、クラスターのある AWS リージョンに置き換えます。EXAMPLED539D4633E53DE1B71EXAMPLE
をクラスターの OIDC プロバイダー ID に置き換えます。"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*",
-
Condition
オペレーターを"StringEquals"
から"StringLike"
に修正します。 -
[ポリシーの更新] を選択して終了します。
AWS CLI
次のコマンドを実行して、AWS CLI を使用して IAM ロールを作成します。
-
クラスターの OIDC プロバイダーの URL を表示します。
マイクラスター
の部分は自分のクラスター名に置き換えます。コマンドの出力がNone
の場合は、「前提条件」を確認してください。aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text
出力例は次のとおりです。
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
-
IAM ロールを作成して
AssumeRoleWithWebIdentity
アクションを付与します。-
次の内容を
aws-efs-csi-driver-trust-policy.json
という名前のファイルにコピーします。111122223333
は、ご自分のアカウント ID に置き換えます。EXAMPLED539D4633E53DE1B71EXAMPLE
およびregion-code
を、前のステップで返された値にそれぞれ置き換えます。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
-
ロールを作成します。
AmazonEKS_EFS_CSI_DriverRole
を別の名前に変更できますが、変更する場合は、後の手順でも変更してください。aws iam create-role \ --role-name AmazonEKS_EFS_CSI_DriverRole \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
-
-
次のマンドを実行して、必要な AWS マネージドポリシーをロールに添付します。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name AmazonEKS_EFS_CSI_DriverRole
ステップ 2: Amazon EFS CSI ドライバーを取得する
Amazon EFS CSI ドライバーは Amazon EKS アドオンを使用してインストールすることをお勧めします。Amazon EKS アドオンをクラスターに追加するには、「Amazon EKS アドオンを作成する」を参照してください。アドオンの詳細については、「Amazon EKS アドオン」を参照してください。Amazon EKS アドオンを使用できない場合は、その理由に関する問題をコンテナロードマップ GitHub リポジトリ
重要
Amazon EFS ドライバーを Amazon EKS アドオンとして追加する前に、クラスターにセルフマネージドバージョンのドライバーがインストールされていないことを確認してください。インストールされている場合は、GitHub の「Uninstalling the Amazon EFS CSI Driver
または、Amazon EFS CSI ドライバーのセルフマネージド型インストールが必要な場合は、GitHub の「Installation
ステップ 3:Amazon EFS ファイルシステムを作成する
Amazon EFS ファイルシステムを作成するには、「GitHub」の「Amazon EKS 用の Amazon EFS ファイルシステムを作成
ステップ 4: サンプルアプリケーションをデプロイする
さまざまなサンプルアプリケーションをデプロイし、必要に応じて変更できます。詳細については、「GitHub」の「例