Como faço para montar um sistema de arquivos criptografado do Amazon EFS em um pod no Amazon EKS?

4 minuto de leitura
0

Quero montar um sistema de arquivos criptografado do Amazon Elastic File System (Amazon EFS) em um pod no Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrição

Você pode criptografar seus dados em trânsito com TLS ou em repouso.

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Solução

Criptografe dados em trânsito com TLS

Para criptografar seus dados em trânsito com o TLS, conclua as seguintes etapas:

  1. Implante o driver Amazon EFS Container Storage Interface (CSI) em seu cluster do Amazon EKS.

  2. Crie um sistema de arquivos do Amazon EFS sem criptografia para seu cluster.
    **Observação:**Ao criar o sistema de arquivos, crie um destino de montagem para o Amazon EFS em todas as zonas de disponibilidade em que seus nós do EKS estão localizados.

  3. Clone o repositório do GitHub em seu sistema local:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Acesse o diretório de exemplo encryption_in_transit:

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Recupere a ID do sistema de arquivos do Amazon EFS:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Acesse o arquivo pv.yaml no diretório /examples/kubernetes/encryption_in_transit/specs/. Em seguida, substitua o valor de VolumeHandle pelo FileSystemId do sistema de arquivos do Amazon EFS que precisa ser montado. Por exemplo:

    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"

    **Observação:**A opção de montagem volumeAttributes: encryptInTransit ativa a criptografia em trânsito.

  7. Implante a classe de armazenamento, a declaração de volume persistente, o volume persistente e o pod do diretório /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. Verifique se seu pod está em um estado de execução:

    kubectl get pods
  9. Liste os volumes persistentes no namespace padrão:

    kubectl get pv
  10. Descreva o volume persistente:

kubectl describe pv efs-pv

**Observação:**O ID do sistema de arquivos do Amazon EFS está listado como VolumeHandle. Verifique se os dados estão gravados no sistema de arquivos do Amazon EFS:

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

Criptografe dados em repouso

Para criptografar dados em repouso, conclua as seguintes etapas:

  1. Implante o driver CSI do Amazon EFS para seu cluster do Amazon EKS.

  2. Crie um sistema de arquivos do Amazon EFS ativando a criptografia em repouso para seu cluster do Amazon EKS.

  3. Clone o repositório do GitHub a seguir em seu sistema local:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Vá para o diretório de exemplo multiple_pods:

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Recupere a ID do sistema de arquivos do Amazon EFS:

    aws efs describe-file-systems

    Exemplo de saída:

    { "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. Acesse o arquivo pv.yaml no diretório /examples/kubernetes/multiple_pods/specs/. Em seguida, substitua o valor de volumeHandle pelo FileSystemId do sistema de arquivos do Amazon EFS que precisa ser montado. Por exemplo:

    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. Implante a classe de armazenamento, a declaração de volume persistente, o volume persistente e o pod no diretório /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. Verifique se seu pod está em um estado de execução:

    kubectl get pods
  9. Liste os volumes persistentes no namespace padrão:

    kubectl get pv
  10. Descreva o volume persistente:

kubectl describe pv efs-pv
  1. Verifique se os dados estão gravados no sistema de arquivos do Amazon EFS:
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS OFICIAL
AWS OFICIALAtualizada há um ano