「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
Amazon EFS CSI ドライバー
Amazon EFS Container Storage Interface (CSI)
このトピックでは、Amazon EFS CSI ドライバーを Amazon EKS クラスターにデプロイし、動作することを確認する方法を示します。
Amazon EFS CSI ドライバーのアルファ機能は、Amazon EKS クラスターではサポートされていません。
使用可能なパラメータの詳細と、ドライバーの機能を示す完全な例については、GitHub の Amazon EFS コンテナストレージインターフェイス (CSI) ドライバー
Considerations
-
Fargate ノードで動的永続ボリュームプロビジョニングを使用することはできませんが、静的プロビジョニングを使用できます。
-
動的プロビジョニングには、1.2 以降のドライバーが必要です。これには、1.17 以降のクラスターが必要です。サポートされている任意のAmazon EKSクラスターバージョンで 1.1 ドライバーを使用して、永続的ボリュームを静的にプロビジョニングできます。
Prerequisites
-
OIDC – プロバイダーを使用した既存のクラスター クラスターがない場合は、 の使用を開始するAmazon EKS ガイドのいずれかを使用してクラスターを作成できます。既存の クラスターの OIDC プロバイダーがあるかどうかを判断するか、作成するにはクラスターの IAM OIDC プロバイダーを作成する、「」を参照してください。
-
AWS CLI – を含む AWS サービスを使用するためのコマンドラインツールAmazon EKS。このガイドでは、 バージョン 2.1.26 以降、または 1.19.7 以降を使用する必要があります。詳細については、の「AWS CLI のインストール、更新、アンインストール」を参照してくださいAWS Command Line Interface ユーザーガイド。をインストールしたらAWS CLI、設定も行うことをお勧めします。詳細については、の「aws 設定を使用したクイック設定」を参照してくださいAWS Command Line Interface ユーザーガイド。
-
kubectl
– Kubernetes クラスターを操作するためのコマンドラインツール。このガイドでは、 バージョン 1.19 以降を使用する必要があります。詳細については、「 」を参照してくださいのインストール kubectl
IAM ポリシーとロールを作成する
IAM ポリシーを作成し、 IAM ロールに割り当てます。このポリシーによりAmazon EFS、ドライバーは ファイルシステムとやり取りできるようになります。
Amazon EFS CSI ドライバーを Amazon EKS クラスターにデプロイするには
-
CSI ドライバーのサービスアカウントがユーザーに代わって IAM APIs を呼び出すことを許可する AWS ポリシーを作成します。
-
GitHub からIAMポリシードキュメントをダウンロードします。ポリシードキュメント
を表示することもできます。 curl -o iam-policy-example.json https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/v/docs/iam-policy-example.json
-
ポリシーを作成します。変更することができます
別の名前に変更しますが、変更する場合は、後のステップでも変更してください。AmazonEKS_EFS_CSI_Driver_Policy
aws iam create-policy \ --policy-name
AmazonEKS_EFS_CSI_Driver_Policy
\ --policy-document file://iam-policy-example.json
-
-
IAM ロールを作成して、IAM ポリシーをアタッチします。Kubernetes サービスアカウントにIAMロールARNを注釈を付けIAM、ロールに Kubernetes サービスアカウント名を付けます。
eksctl
または を使用してロールを作成できますAWS CLI。
Amazon EFS ドライバーのインストール
Helm またはマニフェストを使用して Amazon EFS CSI ドライバーをインストールします。
-
以下のステップでは、 1.2.0 バージョンのドライバーをインストールします。これには、 1.17 以降の クラスターが必要です。バージョン 1.17 より前のクラスターにドライバーをインストールする場合は、バージョン 1.1 のドライバーをインストールする必要があります。詳細についてはGitHub のAmazon EFS「CSI
ドライバー」を参照してください。 -
TLS を使用した転送中のデータの暗号化は、デフォルトで有効になっています。転送中の
暗号化を使用すると、ネットワーク経由で Amazon EFS サービスに移行中にデータが暗号化されます。NFSv4 を使用してボリュームを無効にしてマウントするには、永続的なボリュームマニフェスト volumeAttributes
encryptInTransit
で"false"
フィールドを に設定します。マニフェストの例についてはGitHub の「転送時の暗号化の例」を参照してください。
Amazon EFS ファイルシステムを作成する
Amazon EFS CSI ドライバーはAmazon EFS、アクセスポイントをサポートします。アクセスポイントはAmazon EFS、複数のポッド間でファイルシステムを簡単に共有できる、 ファイルシステムへのアプリケーション固有のエントリポイントです。アクセスポイントは、アクセスポイントを介して行われたすべてのファイルシステムリクエストに対してユーザー
ID を適用し、各ポッドにルートディレクトリを適用できます。詳細についてはGitHub の「 Amazon EFS アクセスポイント
変数はステップ間で設定および使用されるため、同じターミナルで次のステップを完了する必要があります。
Amazon EFS クラスターの Amazon EKS ファイルシステムを作成するには
-
クラスターがある VPC ID を取得し、後のステップで使用するために変数に保存します。を置き換える
( を含む)<cluster-name>
) を選択します。<>
vpc_id=$(aws eks describe-cluster \ --name
<cluster-name>
\ --query "cluster.resourcesVpcConfig.vpcId" \ --output text) -
クラスターの VPC の CIDR 範囲を取得し、後のステップで使用するために変数に保存します。
cidr_range=$(aws ec2 describe-vpcs \ --vpc-ids $vpc_id \ --query "Vpcs[].CidrBlock" \ --output text)
-
Amazon EFS マウントポイントのインバウンド NFS トラフィックを許可するインバウンドルールを持つセキュリティグループを作成します。
-
セキュリティグループを作成します。の置き換え
独自の を使用します。値の例
security_group_id=$(aws ec2 create-security-group \ --group-name
MyEfsSecurityGroup
\ --description "My EFS security group
" \ --vpc-id $vpc_id \ --output text) -
クラスターの VPC の CIDR からのインバウンド NFS トラフィックを許可するインバウンドルールを作成します。
aws ec2 authorize-security-group-ingress \ --group-id $security_group_id \ --protocol tcp \ --port 2049 \ --cidr $cidr_range
重要 ファイルシステムへのアクセスをさらに制限するには、VPC の代わりにサブネットの CIDR を使用できます。
-
-
Amazon EFS クラスターの Amazon EKS ファイルシステムを作成します。
-
ファイルシステムを作成します。
file_system_id=$(aws efs create-file-system \ --region us-west-2 \ --performance-mode generalPurpose \ --query 'FileSystemId' \ --output text)
-
マウントターゲットを作成します。
-
クラスターノードの IP アドレスを確認します。
kubectl get nodes
出力
NAME STATUS ROLES AGE VERSION ip-192-168-56-0.us-west-2.compute.internal Ready <none> 19m v1.19.6-eks-49a6c0
-
VPC 内のサブネットとサブネットがあるサブネットの IDs アベイラビリティーゾーン を確認します。
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$vpc_id" \ --query 'Subnets[*].{SubnetId: SubnetId,AvailabilityZone: AvailabilityZone,CidrBlock: CidrBlock}' \ --output table
出力
| DescribeSubnets | +------------------+--------------------+----------------------------+ | AvailabilityZone | CidrBlock | SubnetId | +------------------+--------------------+----------------------------+ | us-west-2c | 192.168.128.0/19 | subnet-EXAMPLE6e421a0e97 | | us-west-2b | 192.168.96.0/19 | subnet-EXAMPLEd0503db0ec | | us-west-2c | 192.168.32.0/19 | subnet-EXAMPLEe2ba886490 | | us-west-2b | 192.168.0.0/19 | subnet-EXAMPLE123c7c5182 | | us-west-2a | 192.168.160.0/19 | subnet-EXAMPLE0416ce588p | | us-west-2a | 192.168.64.0/19 | subnet-EXAMPLE12c68ea7fb | +------------------+--------------------+----------------------------+
-
ノードがあるサブネットのマウントターゲットを追加します。前の 2 つのステップの出力から、クラスターには IP アドレスが の 1 つのノードがあります
192.168.56.0
。その IP アドレスは、ID を持つサブネットCidrBlock
の 内にありますsubnet-EXAMPLEe2ba886490
。その結果、次のコマンドは、ノードが存在するサブネットのマウントターゲットを作成します。クラスターにさらにノードがある場合は、ノードがあった各 AZ のサブネットに対して コマンドを 1 回実行し、 を適切なサブネット ID
に置き換えます。subnet-EXAMPLEe2ba886490
aws efs create-mount-target \ --file-system-id $file_system_id \ --subnet-id subnet-
EXAMPLEe2ba886490
\ --security-groups $security_group_id
-
-
(オプション) サンプルアプリケーションをデプロイする
永続的ボリュームを動的に作成するサンプルアプリケーションをデプロイすることも、手動で永続的ボリュームを作成することもできます。