내용으로 건너뛰기

암호화된 Amazon EFS 파일 시스템을 Amazon EKS의 포드에 탑재하려면 어떻게 해야 합니까?

4분 분량
0

암호화된 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로 암호화하려면 다음 단계를 완료하십시오.

  1. Amazon EKS 클러스터용 Amazon EFS 컨테이너 스토리지 인터페이스(CSI) 드라이버를 배포합니다.

  2. Amazon EFS 파일 시스템을 만듭니다.
    참고: 파일 시스템을 만들 때 EKS 노드가 위치한 모든 가용 영역에서 Amazon EFS의 탑재 대상을 만듭니다.

  3. GitHub 리포지토리를 로컬 시스템에 복제합니다.

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. encryption_in_transit 예제 디렉터리로 이동합니다.

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Amazon EFS 파일 시스템 ID를 검색하려면 다음 describe-file-systems 명령을 실행합니다.

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. /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 탑재 옵션은 전송 중 암호화를 켭니다.

  7. /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. 포드가 실행 중인 상태인지 확인하려면 다음 명령을 실행합니다.

    kubectl get pods
  9. 기본 네임스페이스의 영구 볼륨을 나열하려면 다음 명령을 실행합니다.

    kubectl get pv
  10. 영구 볼륨을 설명하려면 다음 명령을 실행합니다.

kubectl describe pv efs-pv

참고: Amazon EFS 파일 시스템 ID는 VolumeHandle로 표시됩니다. 데이터가 Amazon EFS 파일 시스템에 기록되었는지 확인하려면 다음 명령을 실행합니다.

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

저장 데이터 암호화

참고: EFS 파일 시스템을 만든 후에는 암호화 설정을 변경할 수 없습니다. 즉, 암호화되지 않은 파일 시스템을 수정하여 암호화할 수 없습니다.

저장 데이터를 암호화하려면 다음 단계를 완료하십시오.

  1. Amazon EKS 클러스터용 Amazon EFS CSI 드라이버를 배포합니다.

  2. 저장 암호화를 활성화한 상태로 Amazon EFS 파일 시스템을 만듭니다.
    참고: AWS Management Console은 AWS 관리형 AWS Key Management Service(AWS KMS) 키를 사용하여 저장 암호화를 자동으로 켭니다. AWS CLI와 SDK를 사용하려면 암호화를 명시적으로 켜야 합니다.

  3. 다음 GitHub 리포지토리를 로컬 시스템에 복제합니다.

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. multiple_pods 예제 디렉터리로 이동합니다.

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. 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**"
        }
      ]
    }
  6. /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로 바꾸십시오.

  7.  /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. 포드가 실행 중인 상태인지 확인하려면 다음 명령을 실행합니다.

    kubectl get pods
  9. 기본 네임스페이스의 영구 볼륨을 나열하려면 다음 명령을 실행합니다.

    kubectl get pv
  10. 영구 볼륨을 설명하려면 다음 명령을 실행합니다.

kubectl describe pv efs-pv
  1. 데이터가 Amazon EFS 파일 시스템에 기록되었는지 확인하려면 다음 명령을 실행합니다.
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS 공식업데이트됨 4달 전