暗号化された Amazon EFS ファイルシステムを Amazon EKS のポッドにマウントする方法を教えてください。
暗号化された Amazon Elastic File System (Amazon EFS) ファイルシステムを Amazon Elastic Kubernetes Service (Amazon EKS) のポッドにマウントしたいと考えています。
簡単な説明
TLS を使用して転送中または保存中にデータを暗号化できます。
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
解決策
転送中のデータを TLS で暗号化
TLS を使用して転送中のデータを暗号化するには、次の手順を実行します。
-
Amazon EKS クラスターに Amazon EFS コンテナストレージインターフェイス (CSI) ドライバーをデプロイします。
-
クラスター用に暗号化せずに Amazon EFS ファイルシステムを作成します。
**注:**ファイルシステムを作成するときに、EKS ノードが配置されているすべてのアベイラビリティーゾーンで Amazon EFS のマウントターゲットを作成します。 -
GitHub リポジトリをローカルシステムにクローンします。
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
encryption_in_transit のサンプルディレクトリに移動します。
cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
-
Amazon EFS ファイルシステム ID を取得します。
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
-
/examples/kubernetes/encryption_in_transit/specs/ ディレクトリにある pv.yaml ファイルに移動します。次に、VolumeHandle の値を、マウントしている Amazon EFS ファイルシステムの FileSystemId に置き換えます。例:
apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc csi: driver: efs.csi.aws.com volumeHandle: [FileSystemId] volumeAttributes: encryptInTransit: "true"
**注:**volumeAttributes: encryptInTransit マウントオプションを使用すると、転送中の暗号化が有効になります。
-
/examples/kubernetes/encryption_in_transit/specs/ ディレクトリからストレージクラス、永続ボリュームクレーム、永続ボリューム、ポッドをデプロイします。
kubectl apply -f specs/storageclass.yaml kubectl apply -f specs/pv.yaml kubectl apply -f specs/claim.yaml kubectl apply -f specs/pod.yaml
-
ポッドが稼働状態であることを確認します。
kubectl get pods
-
デフォルト名前空間の永続ボリュームを一覧表示します。
kubectl get pv
-
永続ボリュームについて記述します。
kubectl describe pv efs-pv
**注:**Amazon EFS ファイルシステム ID は VolumeHandle と表示されます。 データが Amazon EFS ファイルシステムに書き込まれていることを確認します。
kubectl exec -ti efs-app -- tail -f /data/out.txt
保存中のデータを暗号化
保存中のデータを暗号化するには、次の手順を実行します。
-
Amazon EKS クラスターの保存時の暗号化を有効にして Amazon EFS ファイルシステムを作成します。
-
次の GitHub リポジトリをローカルシステムにクローンします。
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
multiple_pods サンプルディレクトリに移動します。
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
-
Amazon EFS ファイルシステム ID を取得します。
aws efs describe-file-systems
出力例:
{ "FileSystems": [ { "SizeInBytes": { "Timestamp": , "Value": }, "ThroughputMode": "", "CreationToken": "", "Encrypted": true, "CreationTime": , "PerformanceMode": "", "FileSystemId": "[FileSystemId]", "NumberOfMountTargets": , "LifeCycleState": "available", "KmsKeyId": "arn:aws:kms:ap-southeast-1:<account_id>:key/854df848-fdd1-46e3-ab97-b4875c4190e6", "OwnerId": "" }, ] }
-
/examples/kubernetes/multiple\ _pods/specs/ ディレクトリにある pv.yaml ファイルに移動します。次に、VolumeHandle の値を、マウントしている Amazon EFS ファイルシステムの FileSystemId に置き換えます。例:
apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc csi: driver: efs.csi.aws.com volumeHandle: [FileSystemId]
-
/examples/kubernetes/multiple\ _pods/specs/ ディレクトリからストレージクラス、永続ボリュームクレーム、永続ボリューム、ポッドをデプロイします。
kubectl apply -f specs/storageclass.yaml kubectl apply -f specs/pv.yaml kubectl apply -f specs/claim.yaml kubectl apply -f specs/pod1.yaml kubectl apply -f specs/pod2.yaml
-
ポッドが稼働状態であることを確認します。
kubectl get pods
-
デフォルト名前空間の永続ボリュームを一覧表示します。
kubectl get pv
-
永続ボリュームについて記述します。
kubectl describe pv efs-pv
- データが Amazon EFS ファイルシステムに書き込まれていることを確認します。
kubectl exec -ti app1 -- tail /data/out1.txt kubectl exec -ti app2 -- tail /data/out1.txt

関連するコンテンツ
- 質問済み 2年前lg...
- 質問済み 3ヶ月前lg...
- 質問済み 2年前lg...
- AWS公式更新しました 10ヶ月前
- AWS公式更新しました 10ヶ月前
- AWS公式更新しました 1年前