如何將加密的 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 版本

解決方法

使用 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

AWS 官方
AWS 官方已更新 3 年前