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:
-
Implante o driver Amazon EFS Container Storage Interface (CSI) em seu cluster do Amazon EKS.
-
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.
-
Clone o repositório do GitHub em seu sistema local:
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
Acesse o diretório de exemplo encryption_in_transit:
cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
-
Recupere a ID do sistema de arquivos do Amazon EFS:
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
-
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.
-
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
-
Verifique se seu pod está em um estado de execução:
kubectl get pods
-
Liste os volumes persistentes no namespace padrão:
kubectl get pv
-
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:
-
Implante o driver CSI do Amazon EFS para seu cluster do Amazon EKS.
-
Crie um sistema de arquivos do Amazon EFS ativando a criptografia em repouso para seu cluster do Amazon EKS.
-
Clone o repositório do GitHub a seguir em seu sistema local:
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
Vá para o diretório de exemplo multiple_pods:
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
-
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": ""
},
]
}
-
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]
-
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
-
Verifique se seu pod está em um estado de execução:
kubectl get pods
-
Liste os volumes persistentes no namespace padrão:
kubectl get pv
-
Descreva o volume persistente:
kubectl describe pv efs-pv
- 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