Wie mounte ich ein verschlüsseltes Amazon EFS-Dateisystem auf einen Pod in Amazon EKS?
Ich möchte ein verschlüsseltes Amazon Elastic File System (Amazon EFS)-Dateisystem auf einen Pod in Amazon Elastic Kubernetes Service (Amazon EKS) mounten.
Lösung
Du kannst deine Daten in deinem Amazon EFS-Dateisystem sowohl während der Übertragung als auch im Ruhezustand verschlüsseln. Daten während der Übertragung sind standardmäßig aktiviert.
Hinweis: Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, findest du weitere Informationen unter Problembehandlung bei AWS CLI-Fehlern. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Daten während der Übertragung mit TLS verschlüsseln
Gehe wie folgt vor, um deine Daten während der Übertragung mit TLS zu verschlüsseln:
-
Stelle den Amazon EFS Container Storage Interface (CSI)-Treiber für deinen Amazon EKS-Cluster bereit.
-
Erstelle ein Amazon EFS-Dateisystems.
Hinweis: Wenn du das Dateisystem erstellst, erstelle ein Mount-Ziel für Amazon EFS in allen Availability Zones, in denen sich deine EKS-Knoten befinden. -
Klone das GitHub-Repository auf dein lokales System.
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git -
Navigiere zum Beispielverzeichnis encryption_in_transit:
cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/ -
Um deine Amazon EFS-Dateisystem-ID abzurufen, führe den folgenden Befehl describe-file-systems aus:
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text -
Öffne die Datei pv.yaml im Verzeichnis /examples/kubernetes/encryption_in_transit/specs/. Ersetze dann den Wert von VolumeHandle durch die FileSystemId des Amazon EFS-Dateisystems, das du mountest.
Die pv.yaml-Datei sollte ähnlich wie folgt aussehen: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: Ersetze FileSystemId durch deine Amazon EFS-Dateisystem-ID. Die Mount-Option volumeAttributes: encryptInTransit aktiviert die Verschlüsselung während der Übertragung.
-
Stelle 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 -
Um zu überprüfen, ob sich dein Pod im Status „Running“ befindet, führe den folgenden Befehl aus:
kubectl get pods -
Um die persistenten Volumes im Standard-Namespace aufzulisten, führe den folgenden Befehl aus:
kubectl get pv -
Um das persistente Volume zu beschreiben, führe den folgenden Befehl aus:
kubectl describe pv efs-pv
Hinweis: Die Amazon EFS-Dateisystem-ID ist als VolumeHandle aufgeführt. Um zu überprüfen, dass die Daten in das Amazon EFS-Dateisystem geschrieben werden, führe den folgenden Befehl aus:
kubectl exec -ti efs-app -- tail -f /data/out.txt
Daten im Ruhezustand verschlüsseln
Hinweis: Nachdem du ein EFS-Dateisystem erstellt hast, kannst du dessen Verschlüsselungseinstellung nicht mehr ändern. Das bedeutet, dass du ein unverschlüsseltes Dateisystem nicht nachträglich verschlüsseln kannst.
Gehe wie folgt vor, um Daten im Ruhezustand zu verschlüsseln:
-
Stelle den Amazon EFS CSI-Treiber für deinen Amazon EKS-Cluster bereit.
-
Erstelle ein Amazon EFS-Dateisystem mit aktiver Verschlüsselung im Ruhezustand.
Hinweis: Die AWS Managementkonsole aktiviert die Verschlüsselung im Ruhezustand automatisch mit einem von AWS verwalteten AWS Key Management Service (AWS KMS)-Schlüssel. Die AWS CLI und das SDK erfordern, dass du die Verschlüsselung explizit aktivierst. -
Klone das folgende GitHub-Repository auf dein lokales System:
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git -
Navigiere zum Beispielverzeichnis multiple_pods:
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/ -
Um deine Amazon EFS-Dateisystem-ID abzurufen, führe den folgenden Befehl aus:
aws efs describe-file-systemsBeispielausgabe:
{ "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**" } ] } -
Öffne die Datei pv.yaml im Verzeichnis /examples/kubernetes/multiple_pods/specs/. Ersetze dann den Wert von volumeHandle durch die FileSystemId des Amazon EFS-Dateisystems, das du mountest.
Die pv.yaml-Datei sollte ähnlich wie folgt aussehen: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: FileSystemIdHinweis: Ersetze FileSystemId durch deine Amazon EFS-Dateisystem-ID.
-
Stelle die StorageClass, den PersistentVolumeClaim, 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 -
Um zu überprüfen, ob sich dein Pod im Status „Running“ befindet, führe den folgenden Befehl aus:
kubectl get pods -
Um die persistenten Volumes im Standard-Namespace aufzulisten, führe den folgenden Befehl aus:
kubectl get pv -
Um das persistente Volume zu beschreiben, führe den folgenden Befehl aus:
kubectl describe pv efs-pv
- Um zu überprüfen, dass die Daten in das Amazon EFS-Dateisystem geschrieben werden, führe die folgenden Befehle aus:
kubectl exec -ti app1 -- tail /data/out1.txt kubectl exec -ti app2 -- tail /data/out1.txt
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 10 Monaten
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor einem Jahr