暗号化された Amazon EFS ファイルシステムを Amazon EKS のポッドにマウントする方法を教えてください。

所要時間2分
0

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

簡単な説明

TLS を使用して転送中または保存中にデータを暗号化できます。

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

解決策

転送中のデータを TLS で暗号化

TLS を使用して転送中のデータを暗号化するには、次の手順を実行します。

  1. Amazon EKS クラスターに Amazon EFS コンテナストレージインターフェイス (CSI) ドライバーをデプロイします。

  2. クラスター用に暗号化せずに Amazon EFS ファイルシステムを作成します。
    **注:**ファイルシステムを作成するときに、EKS ノードが配置されているすべてのアベイラビリティーゾーンで 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 と表示されます。 データが 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
  1. データが Amazon EFS ファイルシステムに書き込まれていることを確認します。
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS公式
AWS公式更新しました 1年前
コメントはありません