Al usar AWS re:Post, aceptas las AWS re:Post Términos de uso

¿Cómo puedo montar un sistema de archivos cifrado de Amazon EFS en un pod de Amazon EKS?

4 minutos de lectura
0

Quiero montar un sistema de archivos cifrado de Amazon Elastic File System (Amazon EFS) en un pod de Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descripción

Puede cifrar los datos en tránsito con TLS o en reposo.

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente.

Resolución

Cómo cifrar datos en tránsito con TLS

Para cifrar los datos en tránsito con TLS, siga estos pasos:

  1. Implemente el controlador de interfaz de almacenamiento en contenedores (CSI) de Amazon EFS para su clúster de Amazon EKS.

  2. Cree un sistema de archivos Amazon EFS sin cifrado para su clúster.
    Nota: Al crear el sistema de archivos, cree un destino de montaje para Amazon EFS en todas las zonas de disponibilidad en las que se encuentran los nodos de EKS.

  3. Clone el repositorio de GitHub en su sistema local:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Vaya al directorio de ejemplo: encryption_in_transit.

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Recupere el ID del sistema de archivos de Amazon EFS:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Vaya al archivo pv.yaml en el directorio /examples/kubernetes/encryption_in_transit/specs/. A continuación, sustituya el valor de VolumeHandle por el FileSystemId del sistema de archivos Amazon EFS que debe montarse. Por ejemplo:

    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: La opción de montaje volumeAttributes: encryptInTransit activa el cifrado en tránsito.

  7. Implemente la clase de almacenamiento, la reclamación de volumen persistente, el volumen persistente y el pod desde el directorio: /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. Compruebe que el pod esté en funcionamiento:

    kubectl get pods
  9. Enumere los volúmenes persistentes en el espacio de nombres predeterminado:

    kubectl get pv
  10. Describa el volumen persistente:

kubectl describe pv efs-pv

Nota: El ID del sistema de archivos de Amazon EFS aparece como VolumeHandle. Compruebe que los datos estén escritos en el sistema de archivos Amazon EFS:

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

Cómo cifrar datos en reposo

Para cifrar los datos en reposo, siga estos pasos:

  1. Implemente el controlador CSI de Amazon EFS para su clúster de Amazon EKS.

  2. Active el cifrado en reposo para su clúster de Amazon EKS para crear un sistema de archivos de Amazon EFS.

  3. Clone el siguiente repositorio de GitHub en su sistema local:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Vaya al directorio de ejemplos de multiple_pods:

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Recupere el ID del sistema de archivos de Amazon EFS:

    aws efs describe-file-systems

    Resultado del ejemplo:

    { "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. Vaya al archivo pv.yaml en el directorio: /examples/kubernetes/multiple_pods/specs/. A continuación, sustituya el valor de volumeHandle por el FileSystemId del sistema de archivos Amazon EFS que debe montarse. Por ejemplo:

    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. Implemente la clase de almacenamiento, la reclamación de volumen persistente, el volumen persistente y el pod desde el directorio /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. Compruebe que el pod esté en funcionamiento:

    kubectl get pods
  9. Enumere los volúmenes persistentes en el espacio de nombres predeterminado:

    kubectl get pv
  10. Describa el volumen persistente:

kubectl describe pv efs-pv
  1. Compruebe que los datos estén escritos en el sistema de archivos Amazon EFS:
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses