如何將加密的 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 版本。
解決方法
使用 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 檔案。然後,使用需要掛載的 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 列出。
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 檔案。然後,使用需要掛載的 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
11. 驗證資料是否已寫入 Amazon EFS 檔案系統:
kubectl exec -ti app1 -- tail /data/out1.txt kubectl exec -ti app2 -- tail /data/out1.txt
相關內容
- 已提問 9 個月前lg...
- 已提問 1 年前lg...
- 已提問 3 個月前lg...
- 已提問 9 個月前lg...
- AWS 官方已更新 4 年前
- AWS 官方已更新 9 個月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前