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 Daten in Ihrem Amazon EFS-Dateisystem mit einer der folgenden Verfahren verschlüsseln:

Wählen Sie im Abschnitt „Lösung“ ein Verschlüsselungsverfahren aus, das Ihren Anforderungen entspricht.

**Hinweis:**Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, vergewissern Sie sich, dass Sie die neueste AWS CLI-Version verwenden.

Behebung

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

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.

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 gemountet werden muss. 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.    Nachdem die Objekte erstellt wurden, vergewissern Sie sich, dass Ihr Pod läuft:

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.

11.    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

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

Beispiel für eine Ausgabe:

{
 "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 gemountet werden muss. 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.    Nachdem die Objekte erstellt wurden, vergewissern Sie sich, dass Ihr Pod läuft:

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

11.    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 OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren