Comment monter un système de fichiers Amazon EFS chiffré sur un pod dans Amazon EKS ?

Date de la dernière mise à jour : 21/04/2021

Je souhaite monter un système de fichiers Amazon Elastic File System (Amazon EFS) chiffré sur un pod dans Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Vous pouvez chiffrer les données dans votre système de fichiers Amazon EFS en utilisant l'une des méthodes suivantes :

Dans la section « Solution », choisissez une méthode de chiffrement en fonction de vos besoins.

Remarque : en cas d'erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Solution

Chiffrer les données en transit avec TLS

1.    Déployez le pilote Container Storage Interface (CSI) Amazon EFS pour votre cluster Amazon EKS.

2.    Créez un système de fichiers Amazon EFS sans chiffrement pour votre cluster.

3.    Clonez le référentiel GitHub sur votre système local :

git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git

4.    Accédez à l'exemple de répertoire encryption_in_transit :

cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/

5.    Récupérez l'ID de votre système de fichiers Amazon EFS :

aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text

6.    Accédez au fichier pv.yaml dans le répertoire /examples/kubernetes/encryption_in_transit/specs/. Remplacez ensuite la valeur de VolumeHandle par le FileSystemId du système de fichiers Amazon EFS qui doit être monté. Par exemple :

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"

Remarque : l'option de montage volumeAttributes: encryptInTransit active le chiffrement en transit.

7.    Déployez la classe de stockage, la demande de volume persistant, le volume persistant et le pod à partir du répertoire /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.    Une fois les objets créés, vérifiez que votre pod est en cours d'exécution :

kubectl get pods

9.    Répertoriez les volumes persistants dans l'espace de noms par défaut :

kubectl get pv

10.    Décrivez le volume persistant :

kubectl describe pv efs-pv

Remarque : l'ID du système de fichiers Amazon EFS est répertorié en tant que VolumeHandle.

11.    Vérifiez que les données sont écrites sur le système de fichiers Amazon EFS :

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

Chiffrer les données au repos

1.    Déployez le pilote CSI Amazon EFS pour votre cluster Amazon EKS.

2.    Créez un système de fichiers Amazon EFS en activant le chiffrement au repos pour votre cluster Amazon EKS.

3.    Clonez le référentiel GitHub suivant sur votre système local :

git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git

4.    Accédez à l'exemple de répertoire multiple_pods :

cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/

5.    Récupérez l'ID de votre système de fichiers Amazon EFS :

aws efs describe-file-systems

Exemple de sortie :

{
 "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.    Accédez au fichier pv.yaml dans le répertoire /examples/kubernetes/multiple_pods/specs/. Remplacez ensuite la valeur de volumeHandle par le FileSystemId du système de fichiers Amazon EFS qui doit être monté. Par exemple :

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.    Déployez la classe de stockage, la demande de volume persistant, le volume persistant et le pod à partir du répertoire /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.    Une fois les objets créés, vérifiez que votre pod est en cours d'exécution :

kubectl get pods

9.    Répertoriez les volumes persistants dans l'espace de noms par défaut :

kubectl get pv

10.    Décrivez le volume persistant :

kubectl describe pv efs-pv

11.    Vérifiez que les données sont écrites sur le système de fichiers Amazon EFS :

kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?