跳至內容

如何將加密的 Amazon EFS 檔案系統掛載到 Amazon EKS 中的 Pod?

3 分的閱讀內容
0

我想要將加密的 Amazon Elastic File System (Amazon EFS) 檔案系統掛載到 Amazon Elastic Kubernetes Service (Amazon EKS) 中的 Pod。

解決方法

您可以在 Amazon EFS 檔案系統處於傳輸中的資料和靜態資料狀態時加密資料。預設會設定傳輸中的資料。

**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

使用 TLS 加密傳輸中的資料

若要使用 TLS 加密傳輸中的資料,請完成以下步驟:

  1. 為您的 Amazon EKS 叢集部署 Amazon EFS Container Storage Interface (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,請執行以下 describe-file-systems 命令:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. /examples/kubernetes/encryption_in_transit/specs/ 目錄中開啟 pv.yaml 檔案。接著,將 VolumeHandle 的值替換為您要掛載的 Amazon EFS 檔案系統的 FileSystemId
    pv.yaml 檔案應如下所示:

    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"

    **注意事項:**將 FileSystemId 替換為您的 Amazon EFS 檔案系統 ID。volumeAttributes: encryptInTransit 掛載選項會開啟傳輸中加密。

  7. /examples/kubernetes/encryption_in_transit/specs/ 目錄部署儲存類別、永續性磁碟區宣告、永續性磁碟區和 Pod:

    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. 若要驗證您的 Pod 處於執行中狀態,請執行以下命令:

    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

加密靜態資料

**注意事項:**建立 EFS 檔案系統後,您無法變更其加密設定。這表示您無法修改未加密的檔案系統,以將其加密。

若要加密靜態資料,請完成以下步驟:

  1. 為您的 Amazon EKS 叢集部署 Amazon EFS CSI 驅動程式

  2. 建立 Amazon EFS 檔案系統,並啟用靜態資料加密
    **注意事項:**AWS 管理主控台會自動使用 AWS 受管 AWS Key Management Service (KMS) 金鑰開啟靜態資料加密。AWS CLI 和 SDK 需要您明確開啟加密。

  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": **timestamp**,
            "Value": **value**
          },
          "ThroughputMode": "**throughput-mode**",
          "CreationToken": "**creation-token**",
          "Encrypted": true,
          "CreationTime": **creation-time**,
          "PerformanceMode": "**performance-mode**",
          "FileSystemId": "**file-system-id**",
          "NumberOfMountTargets": **number**,
          "LifeCycleState": "available",
          "KmsKeyId": "arn:aws:kms:ap-southeast-1:**account-id**:key/**key-id**",
          "OwnerId": "**owner-id**"
        }
      ]
    }
  6. 開啟 /examples/kubernetes/multiple_pods/specs/ 目錄中的 pv.yaml 檔案。接著,將 volumeHandle 的值替換為您要掛載的 Amazon EFS 檔案系統的 FileSystemId
    pv.yaml 檔案應如下所示:

    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

    **注意事項:**將 FileSystemId 替換為您的 Amazon EFS 檔案系統 ID。

  7.  從 /examples/kubernetes/multiple_pods/specs/ 目錄部署儲存類別、永續性磁碟區宣告、永續性磁碟區和 Pod:

    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. 若要驗證您的 Pod 處於執行中狀態,請執行以下命令:

    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 官方已更新 6 個月前