暗号化された Amazon EFS ファイルシステムを Amazon EKS のポッドにマウントするにはどうすればよいですか?

最終更新日: 2021 年 4 月 21 日

暗号化された Amazon Elastic File System (Amazon EFS) ファイルシステムを Amazon Elastic Kubernetes Service (Amazon EKS) のポッドにマウントしたいと思います。

簡単な説明

次のいずれかの方法を使用して、Amazon EFS ファイルシステム内のデータを暗号化できます。

[Resolution (解決方法)] セクションで、必要に応じて暗号化方法を選択します。

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

解決方法

TLS で送信中のデータを暗号化する

1.    Amazon EKS クラスター用 Amazon EFS Container Storage Interface (CSI) ドライバーをデプロイします。

2.    クラスターの暗号化なしで Amazon EFS ファイルシステムを作成します。

3.    GitHub リポジトリをローカルシステムに複製します。

git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git

4.    encryption_in_transit のサンプルディレクトリに移動します。

cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/

5.    Amazon EFS ファイルシステム ID を取得します。

aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text

6.    /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 マウントオプションは、転送中の暗号化を有効にします。

7.    ストレージクラス、永続ボリュームのクレーム、永続ボリューム、およびポッドを /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

8.    オブジェクトを作成したら、ポッドが実行されていることを確認します。

kubectl get pods

9.    デフォルトの名前空間の永続的なボリュームを一覧表示します。

kubectl get pv

10.    永続ボリュームを記述します。

kubectl describe pv efs-pv

注: Amazon EFS ファイルシステムの ID は、VolumeHandle として表示されます。

11.    データが Amazon EFS ファイルシステムに書き込まれていることを確認します。

kubectl exec -ti efs-app -- tail -f /data/out.txt

保管中のデータを暗号化する

1.    Amazon EKS クラスター用 Amazon EFS CSI ドライバーをデプロイします。

2.    Amazon EKS クラスターの保管時に暗号化を有効にして、Amazon EFS ファイルシステムを作成します。

3.    以下の GitHub リポジトリをローカルシステムに複製します。

git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git

4.    multiple_pods サンプルディレクトリに移動します。

cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/

5.    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": ""
 },
 ]
}

6.    /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]

7.    /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

8.    オブジェクトを作成したら、ポッドが実行されていることを確認します。

kubectl get pods

9.    デフォルトの名前空間の永続的なボリュームを一覧表示します。

kubectl get pv

10.    永続ボリュームを記述します。

kubectl describe pv efs-pv

11.    データが Amazon EFS ファイルシステムに書き込まれていることを確認します。

kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt

この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?