Skip to content

Wie mounte ich ein verschlüsseltes Amazon EFS-Dateisystem auf einen Pod in Amazon EKS?

Lesedauer: 4 Minute
0

Ich möchte ein verschlüsseltes Amazon Elastic File System (Amazon EFS)-Dateisystem auf einen Pod in Amazon Elastic Kubernetes Service (Amazon EKS) mounten.

Kurzbeschreibung

Sie können Ihre Daten entweder während der Übertragung mit TLS oder im Ruhezustand verschlüsseln.

**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Behebung

Verschlüsseln von Daten während der Übertragung mit TLS

Gehen Sie wie folgt vor, um Ihre Daten während der Übertragung mit TLS zu verschlüsseln:

  1. Stellen Sie den Amazon EFS Container Storage Interface (CSI)-Treiber für Ihren Amazon EKS-Cluster bereit.

  2. Erstellen Sie ein Amazon EFS-Dateisystem ohne Verschlüsselung für Ihren Cluster.
    Hinweis: Wenn Sie das Dateisystem erstellen, erstellen Sie ein Mount-Ziel für Amazon EFS in allen Availability Zones, in denen sich Ihre EKS-Knoten befinden.

  3. Klonen Sie das GitHub-Repository auf Ihr lokales System:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Gehen Sie zum Beispielverzeichnis encryption_in_transit:

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Rufen Sie Ihre Amazon EFS-Dateisystem-ID ab:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Gehen Sie zur Datei pv.yaml im Verzeichnis /examples/kubernetes/encryption_in_transit/specs/. Ersetzen Sie dann den Wert von VolumeHandle durch die FileSystemId des Amazon EFS-Dateisystems, das Sie mounten. Zum Beispiel:

    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"

    Hinweis: Die Mount-Option volumeAttributes: encryptInTransit aktiviert die Verschlüsselung während der Übertragung.

  7. Stellen Sie die Speicherklasse, den Anspruch auf ein persistentes Volume, das persistente Volume und den Pod aus dem Verzeichnis /examples/kubernetes/encryption_in_transit/specs/ bereit:

    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. Stellen Sie sicher, dass sich Ihr Pod in einem laufenden Zustand befindet:

    kubectl get pods
  9. Listen Sie das persistente Volume im Standard-Namespace auf:

    kubectl get pv
  10. Beschreiben Sie das persistente Volume:

kubectl describe pv efs-pv

Hinweis: Die Amazon EFS-Dateisystem-ID ist als VolumeHandle aufgeführt. Vergewissern Sie sich, dass die Daten in das Amazon EFS-Dateisystem geschrieben wurden:

kubectl exec -ti efs-app -- tail -f /data/out.txt

Verschlüsseln von Daten im Ruhezustand

Gehen Sie wie folgt vor, um Daten im Ruhezustand zu verschlüsseln:

  1. Stellen Sie den Amazon EFS CSI-Treiber für Ihren Amazon EKS-Cluster bereit.

  2. Erstellen Sie ein Amazon EFS-Dateisystem, indem Sie die Verschlüsselung im Ruhezustand für Ihren Amazon EKS-Cluster aktivieren.

  3. Klonen Sie das folgende GitHub-Repository auf Ihr lokales System:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Gehen Sie zum Beispielverzeichnis multiple_pods:

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Rufen Sie Ihre Amazon EFS-Dateisystem-ID ab:

    aws efs describe-file-systems

    Beispielausgabe:

    { "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. Gehen Sie zur Datei pv.yaml im Verzeichnis /examples/kubernetes/multiple_pods/specs/. Ersetzen Sie dann den Wert von VolumeHandle durch die FileSystemId des Amazon EFS-Dateisystems, das Sie mounten. Zum Beispiel:

    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. Stellen Sie die Speicherklasse, den Anspruch auf ein persistentes Volume, das persistente Volume und den Pod aus dem Verzeichnis /examples/kubernetes/multiple_pods/specs/ bereit:

    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. Stellen Sie sicher, dass sich Ihr Pod in einem laufenden Zustand befindet:

    kubectl get pods
  9. Listen Sie das persistente Volume im Standard-Namespace auf:

    kubectl get pv
  10. Beschreiben Sie das persistente Volume:

kubectl describe pv efs-pv
  1. Vergewissern Sie sich, dass die Daten in das Amazon EFS-Dateisystem geschrieben wurden:
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS OFFICIALAktualisiert vor einem Jahr