암호화된 Amazon EFS 파일 시스템을 Amazon EKS의 포드에 탑재하려면 어떻게 해야 합니까?
암호화된 Amazon Elastic File System(Amazon EFS) 파일 시스템을 Amazon Elastic Kubernetes Service(Amazon EKS) 의 포드에 탑재하려고 합니다.
해결 방법
Amazon EFS 파일 시스템의 전송 중 데이터와 저장 데이터를 암호화할 수 있습니다. 기본적으로 전송 중 데이터가 설정됩니다.
참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
전송 중인 데이터를 TLS로 암호화
전송 중인 데이터를 TLS로 암호화하려면 다음 단계를 완료하십시오.
-
Amazon EKS 클러스터용 Amazon EFS 컨테이너 스토리지 인터페이스(CSI) 드라이버를 배포합니다.
-
Amazon EFS 파일 시스템을 만듭니다.
참고: 파일 시스템을 만들 때 EKS 노드가 위치한 모든 가용 영역에서 Amazon EFS의 탑재 대상을 만듭니다. -
GitHub 리포지토리를 로컬 시스템에 복제합니다.
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git -
encryption_in_transit 예제 디렉터리로 이동합니다.
cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/ -
Amazon EFS 파일 시스템 ID를 검색하려면 다음 describe-file-systems 명령을 실행합니다.
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text -
/examples/kubernetes/encryption_in_transit/specs/ 디렉터리에 있는 pv.yaml 파일을 엽니다. 그런 다음 VolumeHandle 값을 탑재하려는 Amazon EFS 파일 시스템의 FileSystemId로 바꾸십시오.
pv.yaml 파일은 다음과 비슷합니다.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"참고: FileSystemId를 Amazon EFS 파일 시스템 ID로 바꾸십시오. volumeAttributes: encryptInTransit 탑재 옵션은 전송 중 암호화를 켭니다.
-
/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 -
포드가 실행 중인 상태인지 확인하려면 다음 명령을 실행합니다.
kubectl get pods -
기본 네임스페이스의 영구 볼륨을 나열하려면 다음 명령을 실행합니다.
kubectl get pv -
영구 볼륨을 설명하려면 다음 명령을 실행합니다.
kubectl describe pv efs-pv
참고: Amazon EFS 파일 시스템 ID는 VolumeHandle로 표시됩니다. 데이터가 Amazon EFS 파일 시스템에 기록되었는지 확인하려면 다음 명령을 실행합니다.
kubectl exec -ti efs-app -- tail -f /data/out.txt
저장 데이터 암호화
참고: EFS 파일 시스템을 만든 후에는 암호화 설정을 변경할 수 없습니다. 즉, 암호화되지 않은 파일 시스템을 수정하여 암호화할 수 없습니다.
저장 데이터를 암호화하려면 다음 단계를 완료하십시오.
-
Amazon EKS 클러스터용 Amazon EFS CSI 드라이버를 배포합니다.
-
저장 암호화를 활성화한 상태로 Amazon EFS 파일 시스템을 만듭니다.
참고: AWS Management Console은 AWS 관리형 AWS Key Management Service(AWS KMS) 키를 사용하여 저장 암호화를 자동으로 켭니다. AWS CLI와 SDK를 사용하려면 암호화를 명시적으로 켜야 합니다. -
다음 GitHub 리포지토리를 로컬 시스템에 복제합니다.
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git -
multiple_pods 예제 디렉터리로 이동합니다.
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/ -
Amazon EFS 파일 시스템 ID를 검색하려면 다음 명령을 실행합니다.
aws efs describe-file-systems출력 예시:
{ "FileSystems": [ { "SizeInBytes": { "Timestamp": **timestamp**, "Value": **value** }, "ThroughputMode": "**throughput-mode**", "CreationToken": "**creation-token**", "Encrypted": true, "CreationTime": **creation-time**, "PerformanceMode": "**performance-mode**", "FileSystemId": "**file-system-id**", "NumberOfMountTargets": **number**, "LifeCycleState": "available", "KmsKeyId": "arn:aws:kms:ap-southeast-1:**account-id**:key/**key-id**", "OwnerId": "**owner-id**" } ] } -
/examples/kubernetes/multiple_pods/specs/ 디렉터리에 있는 pv.yaml 파일을 엽니다. 그런 다음 volumeHandle 값을 탑재하려는 Amazon EFS 파일 시스템의 FileSystemId로 바꿉니다.
pv.yaml 파일은 다음과 비슷합니다.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참고: FileSystemId를 Amazon EFS 파일 시스템 ID로 바꾸십시오.
-
/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 -
포드가 실행 중인 상태인지 확인하려면 다음 명령을 실행합니다.
kubectl get pods -
기본 네임스페이스의 영구 볼륨을 나열하려면 다음 명령을 실행합니다.
kubectl get pv -
영구 볼륨을 설명하려면 다음 명령을 실행합니다.
kubectl describe pv efs-pv
- 데이터가 Amazon EFS 파일 시스템에 기록되었는지 확인하려면 다음 명령을 실행합니다.
kubectl exec -ti app1 -- tail /data/out1.txt kubectl exec -ti app2 -- tail /data/out1.txt
- 언어
- 한국어

관련 콘텐츠
- 질문됨 일 년 전