如何將加密的 Amazon EFS 檔案系統掛載到 Amazon EKS 中的 Pod?
我想要將加密的 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 加密傳輸中的資料,請完成以下步驟:
-
為您的 Amazon EKS 叢集部署 Amazon EFS Container Storage Interface (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,請執行以下 describe-file-systems 命令:
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text -
在 /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 掛載選項會開啟傳輸中加密。
-
從 /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 -
若要驗證您的 Pod 處於執行中狀態,請執行以下命令:
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
加密靜態資料
**注意事項:**建立 EFS 檔案系統後,您無法變更其加密設定。這表示您無法修改未加密的檔案系統,以將其加密。
若要加密靜態資料,請完成以下步驟:
-
為您的 Amazon EKS 叢集部署 Amazon EFS CSI 驅動程式。
-
建立 Amazon EFS 檔案系統,並啟用靜態資料加密。
**注意事項:**AWS 管理主控台會自動使用 AWS 受管 AWS Key Management Service (KMS) 金鑰開啟靜態資料加密。AWS CLI 和 SDK 需要您明確開啟加密。 -
將以下 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": **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**" } ] } -
開啟 /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。
-
從 /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 -
若要驗證您的 Pod 處於執行中狀態,請執行以下命令:
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 年前
已提問 2 年前
已提問 2 年前