¿Cómo puedo montar un sistema de archivos cifrado de Amazon EFS en un pod de Amazon EKS?
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:
-
Implemente el controlador de interfaz de almacenamiento en contenedores (CSI) de Amazon EFS para su clúster de Amazon EKS.
-
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. -
Clone el repositorio de GitHub en su sistema local:
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
Vaya al directorio de ejemplo: encryption_in_transit.
cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
-
Recupere el ID del sistema de archivos de Amazon EFS:
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
-
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.
-
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
-
Compruebe que el pod esté en funcionamiento:
kubectl get pods
-
Enumere los volúmenes persistentes en el espacio de nombres predeterminado:
kubectl get pv
-
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:
-
Implemente el controlador CSI de Amazon EFS para su clúster de Amazon EKS.
-
Active el cifrado en reposo para su clúster de Amazon EKS para crear un sistema de archivos de Amazon EFS.
-
Clone el siguiente repositorio de GitHub en su sistema local:
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
Vaya al directorio de ejemplos de multiple_pods:
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
-
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": "" }, ] }
-
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]
-
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
-
Compruebe que el pod esté en funcionamiento:
kubectl get pods
-
Enumere los volúmenes persistentes en el espacio de nombres predeterminado:
kubectl get pv
-
Describa el volumen persistente:
kubectl describe pv efs-pv
- 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
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 21 días
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace 7 meses