Come si monta un file system Amazon EFS crittografato su un pod in Amazon EKS?

4 minuti di lettura
0

Desidero montare un file system Amazon Elastic File System (Amazon EFS) crittografato su un pod in Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrizione

È possibile crittografare i dati in transito con TLS o a riposo.

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Soluzione

Crittografia dei dati in transito con TLS

Per crittografare i dati in transito con TLS, completa i seguenti passaggi:

  1. Implementa il driver Amazon EFS Container Storage Interface (CSI) per il cluster Amazon EKS.

  2. Crea un file system Amazon EFS senza crittografia per il cluster.
    Nota: quando crei il file system, crea un target di montaggio per Amazon EFS in tutte le zone di disponibilità in cui sono presenti i tuoi nodi EKS.

  3. Clona il repository GitHub sul sistema locale:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Vai alla directory di esempio encryption\ _in\ _transit:

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Recupera l'ID del file system Amazon EFS:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Vai al file pv.yaml nella directory /examples/kubernetes/encryption\ _in\ _transit/specs/. Quindi, sostituisci il valore di VolumeHandle con il FileSystemId del file system Amazon EFS che deve essere montato. Ad esempio:

    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"

    Nota: l'opzione di montaggio volumeAttributes: encryptInTransit attiva la crittografia in transito.

  7. Implementa la classe di archiviazione, la dichiarazione del volume persistente, il volume persistente e il pod dalla directory /examples/kubernetes/encryption_in_transit/specs/:

    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. Verifica che il pod sia in esecuzione:

    kubectl get pods
  9. Elenca i volumi persistenti nello spazio dei nomi predefinito:

    kubectl get pv
  10. Descrivi il volume persistente:

kubectl describe pv efs-pv

Nota: l'ID del file system Amazon EFS è indicato come VolumeHandle. Verifica che i dati siano scritti nel file system Amazon EFS:

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

Crittografia dei dati a riposo

Per crittografare i dati a riposo, completa i seguenti passaggi:

  1. Implementa il driver CSI Amazon EFS per il cluster Amazon EKS.

  2. Crea un file system Amazon EFS abilitando la crittografia a riposo per il cluster Amazon EKS.

  3. Clona il seguente repository GitHub sul sistema locale:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Vai alla cartella degli esempio multiple_pods:

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Recupera l'ID del file system Amazon EFS:

    aws efs describe-file-systems

    Esempio di output:

    { "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. Vai al file pv.yaml nella directory /examples/kubernetes/multiple_pods/specs/. Quindi, sostituisci il valore di volumeHandle con il FileSystemId del file system Amazon EFS che deve essere montato. Ad esempio:

    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. Implementa la classe di archiviazione, la dichiarazione del volume persistente, il volume persistente e il pod dalla directory /examples/kubernetes/multiple_pods/specs/:

    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. Verifica che il pod sia in esecuzione:

    kubectl get pods
  9. Elenca i volumi persistenti nello spazio dei nomi predefinito:

    kubectl get pv
  10. Descrivi il volume persistente:

kubectl describe pv efs-pv
  1. Verifica che i dati siano scritti nel file system Amazon EFS:
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa