使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

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

3 分的閱讀內容
0

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

簡短說明

您可以使用 TLS 加密傳輸中靜態的資料。

**注意:**如果您在執行 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:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. 前往 /examples/kubernetes/encryption_in_transit/specs/ 目錄中的 pv.yaml 檔案。然後,使用掛載的 Amazon EFS 檔案系統的 FileSystemId 取代 VolumeHandle 的值。例如:

    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/ 目錄部署儲存體類別、持久性磁碟區宣告、持久性磁碟區和 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

加密靜態資料

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

  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 檔案。然後,使用掛載的 Amazon EFS 檔案系統的 FileSystemId 取代 volumeHandle 的值。例如:

    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/ 目錄部署儲存體類別、持久性磁碟區宣告、持久性磁碟區和 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 官方
AWS 官方已更新 10 個月前