Mountpoint for Amazon S3 CSI 드라이버를 통해 Amazon S3 객체에 액세스
Amazon S3 CSI(컨테이너 스토리지 인터페이스)용 Mountpoint 드라이버
고려 사항
-
Amazon S3 CSI 드라이버용 Mountpoint는 현재 Windows 기반 컨테이너 이미지와 호환되지 않습니다.
-
Amazon S3 CSI용 Mountpoint 드라이버는 AWS Fargate를 지원하지 않습니다. 하지만 Amazon EC2에서 실행되는 컨테이너(Amazon EKS 또는 사용자 지정 Kubernetes 설치)는 지원됩니다.
-
Mountpoint for Amazon S3 CSI 드라이버는 정적 프로비저닝만 지원합니다. 동적 프로비저닝 또는 새 버킷의 생성은 지원되지 않습니다.
참고
정적 프로비저닝이란
PersistentVolume
객체의volumeAttributes
에서bucketName
으로 지정된 기존 Amazon S3 버킷을 사용하는 것을 말합니다. 자세한 내용은 GitHub의 정적 프로비저닝을 참조하세요. -
Amazon S3 CSI 드라이버용 Mountpoint가 탑재된 볼륨은 모든 POSIX 파일 시스템 기능을 지원하지는 않습니다. 파일 시스템 동작에 대한 자세한 내용은 GitHub에서 Amazon S3 파일 시스템 동작에 대한 Mountpoint
를 참조하세요.
사전 조건
-
클러스터의 기존 AWS ID 및 액세스 관리(IAM)OpenID Connect (OIDC) 공급자입니다. 이미 있는지 아니면 생성해야 하는지 확인하려면 클러스터에 대한 IAM OIDC 공급자 생성 부분을 참조하세요.
-
디바이스 또는 AWS CloudShell에 AWS CLI 버전 2.12.3 이후 버전이 설치 및 구성됩니다.
-
kubectl
명령줄 도구는 장치 또는 AWS CloudShell에 설치됩니다. 버전은 클러스터의 Kubernetes 버전과 동일하거나 최대 하나 이전 또는 이후의 마이너 버전일 수 있습니다. 예를 들어 클러스터 버전이1.29
인 경우kubectl
버전1.28
,1.29
또는1.30
를 함께 사용할 수 있습니다.kubectl
을 설치하거나 업그레이드하려면 kubectl 및 eksctl 설정 부분을 참조하세요.
IAM 정책 생성
Mountpoint for Amazon S3 CSI 드라이버가 파일 시스템과 상호 작용하려면 Amazon S3 권한이 필요합니다. 이 섹션에서는 필요한 권한을 부여하는 IAM 정책을 생성하는 방법을 소개합니다.
다음 정책 예시는 Mountpoint에 대한 IAM 권한 권장 사항을 따릅니다. 또는 AWS 관리형 정책 AmazonS3FullAccess
Mountpoint에 대해 권장되는 권한에 대한 자세한 내용은 GitHub의 Mountpoint IAM 권한
-
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
왼쪽 탐색 창에서 정책을 선택합니다.
-
정책 페이지에서 정책 생성을 선택합니다.
-
정책 편집기에서 JSON을 선택합니다.
-
정책 편집기에서 다음을 복사하고 붙여 넣습니다.
중요
amzn-s3-demo-bucket1
을 사용자의 Amazon S3 버킷 이름으로 대체합니다.{ "Version": "2012-10-17", "Statement": [ { "Sid": "MountpointFullBucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "MountpointFullObjectAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }
Amazon S3 Express One Zone 스토리지 클래스에 도입된 디렉터리 버킷은 범용 버킷과 다른 인증 메커니즘을 사용합니다.
s3:*
작업을 사용하는 대신s3express:CreateSession
작업을 사용해야 합니다. 디렉터리 버킷에 대한 자세한 내용은 Amazon S3 사용 설명서의 디렉터리 버킷을 참조하세요.다음은 디렉터리 버킷에 사용할 최소 권한 정책의 예입니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3express:CreateSession", "Resource": "arn:aws:s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket1--usw2-az1--x-s3" } ] }
-
Next(다음)를 선택합니다.
-
검토 및 생성 페이지에서 정책의 이름을 지정합니다. 이 예시 연습에서는
AmazonS3CSIDriverPolicy
라는 이름을 사용합니다. -
정책 생성을 선택합니다.
IAM 역할 생성
Mountpoint for Amazon S3 CSI 드라이버가 파일 시스템과 상호 작용하려면 Amazon S3 권한이 필요합니다. 이 섹션에서는 IAM 역할을 생성하여 이러한 권한을 위임하는 방법을 설명합니다. 이 역할을 생성하려면 다음 도구 중 하나를 사용할 수 있습니다.
참고
IAM 정책 AmazonS3CSIDriverPolicy
는 이전 섹션에서 생성되었습니다.
eksctl
Mountpoint를 사용하여 Amazon S3 CSI 드라이버용 eksctl
IAM 역할 생성
IAM 역할 및 Kubernetes 서비스 계정을 생성하려면 다음 명령을 실행합니다. 또한 이러한 명령은 AmazonS3CSIDriverPolicy
IAM 정책을 역할에 연결하고, Kubernetes 서비스 계정(s3-csi-controller-sa
)에 IAM 역할 Amazon 리소스 이름(ARN)을 주석으로 추가하고, Kubernetes 서비스 계정 이름을 IAM 역할에 대한 신뢰 정책에 추가합니다.
CLUSTER_NAME=my-cluster REGION=region-code ROLE_NAME=AmazonEKS_S3_CSI_DriverRole POLICY_ARN=AmazonEKS_S3_CSI_DriverRole_ARN eksctl create iamserviceaccount \ --name s3-csi-driver-sa \ --namespace kube-system \ --cluster $CLUSTER_NAME \ --attach-policy-arn $POLICY_ARN \ --approve \ --role-name $ROLE_NAME \ --region $REGION \ --role-only
AWS Management Console
-
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
왼쪽 탐색 창에서 역할을 선택합니다.
-
역할(Roles) 페이지에서 역할 생성(Create role)을 선택합니다.
-
신뢰할 수 있는 엔터티 선택(Select trusted entity) 페이지에서 다음을 수행합니다.
-
신뢰할 수 있는 엔터티 유형(Trusted entity type) 섹션에서 웹 자격 증명(Web identity)을 선택합니다.
-
보안 인증 공급자의 경우 클러스터에 대해 OpenID Connect공급자 URL을 선택합니다(Amazon EKS의 개요에 표시된 대로).
URL이 표시되지 않으면 필수 요건을 검토하세요.
-
대상(Audience)에서
sts.amazonaws.com
을 입력합니다. -
Next(다음)를 선택합니다.
-
-
권한 추가(Add permissions) 페이지에서 다음을 수행합니다.
-
필터 정책(Filter policies) 상자에 AmazonS3CSIDriverPolicy를 입력합니다.
참고
이 정책은 이전 섹션에서 생성되었습니다.
-
검색에서 반환된
AmazonS3CSIDriverPolicy
결과 왼쪽에 있는 확인란을 선택합니다. -
Next(다음)를 선택합니다.
-
-
이름, 검토 및 생성(Name, review, and create) 페이지에서 다음을 수행합니다.
-
역할 이름(Role name)에 역할의 고유한 이름(예: AmazonEKS_S3_CSI_DriverRole)을 입력합니다.
-
태그 추가(선택 사항)에서 태그를 키-값 페어로 연결하여 메타데이터를 역할에 추가합니다. IAM에서 태그 사용에 대한 자세한 내용을 알아보려면 IAM 사용 설명서의 IAM 리소스에 태그 지정을 참조하세요.
-
역할 생성을 선택합니다.
-
-
역할을 생성한 후 편집할 수 있도록 콘솔에서 이 역할을 선택하여 엽니다.
-
신뢰 관계(Trust relationships) 탭을 선택한 후 신뢰 정책 편집(Edit trust policy)을 선택합니다.
-
다음과 비슷한 줄을 찾습니다.
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
이전 줄의 끝에 쉼표를 추가한 다음 이전 줄 뒤에 다음 줄을 추가합니다.
region-code
를 클러스터가 있는 AWS 리전으로 바꿉니다.EXAMPLED539D4633E53DE1B71EXAMPLE
을 클러스터의 OIDC 공급자 ID로 바꿉니다."oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:s3-csi-*"
-
Condition
운영자를"StringEquals"
에서"StringLike"
로 변경합니다. -
신뢰 정책 업데이트(Update Trust Policy)를 선택하여 종료합니다.
AWS CLI
-
클러스터의 OIDC 공급자 URL을 확인합니다.
my-cluster
를 해당 클러스터의 이름으로 바꿉니다. 명령의 출력이None
인 경우 사전 요구 사항을 검토합니다.aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text
예제 출력은 다음과 같습니다.
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
-
IAM 역할을 생성하여 Kubernetes 서비스 계정에
AssumeRoleWithWebIdentity
작업 권한을 부여합니다.-
다음 콘텐츠를
aws-s3-csi-driver-trust-policy.json
라는 파일에 복사합니다.111122223333
을 계정 ID로 바꿉니다.EXAMPLED539D4633E53DE1B71EXAMPLE
및region-code
를 이전 단계에서 반환된 값으로 바꿉니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:s3-csi-*", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
-
역할을 생성합니다.
AmazonEKS_S3_CSI_DriverRole
를 다른 이름으로 변경할 수 있지만, 그렇게 할 경우 이후 단계에서도 변경해야 합니다.aws iam create-role \ --role-name AmazonEKS_S3_CSI_DriverRole \ --assume-role-policy-document file://"aws-s3-csi-driver-trust-policy.json"
-
-
다음 명령을 사용하여 이전에 생성한 IAM 정책을 역할에 연결합니다.
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonS3CSIDriverPolicy \ --role-name AmazonEKS_S3_CSI_DriverRole
참고
IAM 정책
AmazonS3CSIDriverPolicy
는 이전 섹션에서 생성되었습니다. -
드라이버를 Amazon EKS 추가 기능으로 설치하는 경우에는 이 단계를 생략합니다. 자체 관리형 드라이버 설치의 경우 생성한 IAM 역할의 ARN으로 주석이 달린 Kubernetes 서비스 계정을 생성합니다.
-
다음 콘텐츠를
mountpoint-s3-service-account.yaml
이라는 파일에 저장합니다.111122223333
을 계정 ID로 바꿉니다.--- apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-mountpoint-s3-csi-driver name: mountpoint-s3-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
-
클러스터에 Kubernetes 서비스 계정을 생성합니다. Kubernetes 서비스 계정(
mountpoint-s3-csi-controller-sa
)에는AmazonEKS_S3_CSI_DriverRole
이름으로 생성된 IAM 역할을 사용하여 주석을 추가합니다.kubectl apply -f mountpoint-s3-service-account.yaml
참고
해당 절차에서 플러그인이 배포되면
s3-csi-driver-sa
라는 서비스 계정을 생성하고 해당 계정을 사용하도록 구성됩니다.
-
Amazon S3 CSI 드라이버용 Mountpoint 설치
Amazon EKS 추가 기능을 통해 Mountpoint for Amazon S3 CSI 드라이버를 설치할 수 있습니다. 다음 도구를 사용하여 클러스터에 애드온을 추가할 수 있습니다.
또는 Mountpoint for Amazon S3 CSI 드라이버를 자체 관리형 설치로 설치할 수 있습니다. 자체 관리형 설치 방법에 대한 지침은 GitHub의 설치
v1.8.0
부터 CSI 드라이버의 Pods에 대해 허용하도록 테인트를 구성할 수 있습니다. 이렇게 하려면 node.tolerations
를 사용하여 사용자 지정 테인트 세트를 지정하거나 node.tolerateAllTaints
를 사용하여 모든 테인트를 허용하도록 지정하세요. 테인트와 허용 오차
eksctl
eksctl
을 사용하여 Amazon S3 CSI 추가 기능 추가
다음 명령을 실행합니다. my-cluster
를 클러스터 이름으로, 111122223333
을 계정 ID로, AmazonEKS_S3_CSI_DriverRole
을 앞서 만든 IAM 역할의 이름으로 바꿉니다.
eksctl create addon --name aws-mountpoint-s3-csi-driver --cluster my-cluster \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole --force
기존 설정과 충돌하는 –-force
옵션과 Amazon EKS 추가 기능 설정을 제거할 경우, Amazon EKS 추가 기능의 업데이트 작업이 실패하고 충돌을 해결하는 데 도움이 되는 오류 메시지가 표시됩니다. 이 옵션을 사용하여 이러한 설정을 덮어쓰기 때문에 이 옵션을 지정하기 전에 Amazon EKS 추가 기능이 관리해야 하는 설정을 관리하지 않는지 확인합니다. 이 설정의 기타 옵션에 대한 자세한 내용은 eksctl
설명서의 추가 기능
구성 파일을 통해 eksctl
을 사용자 지정할 수 있습니다. 자세한 내용은 eksctl
설명서의 구성 값으로 작업하기
# config.yaml ... addons: - name: aws-mountpoint-s3-csi-driver serviceAccountRoleARN: arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole configurationValues: |- node: tolerateAllTaints: true
AWS Management Console
-
Amazon EKS 콘솔
을 엽니다. -
좌측 탐색 창에서 클러스터를 선택합니다.
-
Amazon S3 CSI 추가 기능에 대한 Mountpoint를 구성하려는 클러스터의 이름을 선택합니다.
-
추가 기능(Add-ons) 탭을 선택합니다.
-
추가 기능 더 가져오기를 선택합니다.
-
추가 기능 선택 페이지에서 다음을 수행합니다.
-
Amazon EKS 애드온 섹션에서 Amazon S3 CSI 드라이버용 Mountpoint 확인란을 선택합니다.
-
Next(다음)를 선택합니다.
-
-
선택한 추가 기능 설정 구성 페이지에서 다음을 수행합니다.
-
사용할 버전을 선택합니다.
-
IAM 역할 선택에서 Mountpoint for Amazon S3 CSI 드라이버 IAM 정책을 연결한 IAM 역할의 이름을 선택합니다.
-
(선택 사항) 선택적 구성 설정을 확장한 후 충돌 해결 방법을 업데이트하세요. 재정의를 선택한 경우 기존 추가 기능에 대한 하나 이상의 설정을 Amazon EKS 추가 기능의 설정으로 덮어쓸 수 있습니다. 이 옵션을 사용 설정하지 않고 기존 설정과 충돌이 있는 경우 작업이 실패합니다. 결과 오류 메시지를 사용하여 충돌을 해결할 수 있습니다. 이 옵션을 선택하기 전에 Amazon EKS 추가 기능이 사용자가 자체 관리해야 하는 설정을 관리하지 않는지 확인하세요.
-
(선택 사항) 선택적 구성 설정을 확장한 후 구성 값 필드에서 톨러레이션을 구성합니다.
-
Next(다음)를 선택합니다.
-
-
검토 및 추가 페이지에서 생성을 선택합니다. 추가 기능 설치가 완료되면 설치한 추가 기능이 표시됩니다.
AWS CLI
AWS을 사용하여 Amazon S3 CSI 추가 기능에 대한 Mountpoint 추가
다음 명령을 실행합니다. my-cluster
를 클러스터 이름으로, 111122223333
을 계정 ID로, AmazonEKS_S3_CSI_DriverRole
을 앞서 만든 역할의 이름으로 바꿉니다.
aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
--configuration-values
플래그와 함께 명령을 사용자 지정할 수 있습니다. 다음 대체 예제는 모든 테인트를 허용하는 방법을 보여줍니다.
aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole \ --configuration-values '{"node":{"tolerateAllTaints":true}}'
Amazon S3용 Mountpoint 구성
대부분의 경우 버킷 이름만 사용하여 Mountpoint for Amazon S3를 구성할 수 있습니다. Amazon S3용 Mountpoint 구성에 대한 지침은 GitHub에서 Amazon S3용 마운트포인트 구성
샘플 애플리케이션 배포
기존 Amazon S3 버킷의 드라이버에 정적 프로비저닝을 배포할 수 있습니다. 자세한 내용은 GitHub의 정적 프로비저닝
Amazon S3 CSI 드라이버용 Mountpoint 제거
Amazon EKS 추가 기능을 제거하는 경우 다음 두 가지 옵션이 있습니다.
-
클러스터에 추가 기능 소프트웨어 보존 – 이 옵션은 모든 설정에 대한 Amazon EKS 관리를 제거합니다. 또한 업데이트를 시작한 후 Amazon EKS가 업데이트를 알리고 Amazon EKS 추가 기능을 자동으로 업데이트하는 기능을 제거합니다. 그러나 클러스터에 추가 기능 소프트웨어는 유지됩니다. 이 옵션을 사용하면 추가 기능을 Amazon EKS 추가 기능이 아닌 자체 관리형 설치 기능으로 만들 수 있습니다. 이 옵션을 사용하면 추가 기능에 대한 가동 중지 시간이 없습니다. 이 절차의 명령은 이 옵션을 사용합니다.
-
클러스터에서 추가 기능 소프트웨어 완전히 제거(Remove the add-on software entirely from your cluster) - 클러스터에 종속된 리소스가 없는 경우에만 클러스터에서 Amazon EKS 추가 기능을 제거하는 것이 좋습니다. 이 옵션을 수행하려면 이 절차에서 사용하는 명령에서
--preserve
를 삭제합니다.
추가 기능에 연결된 IAM 계정이 있는 경우 IAM 계정은 제거되지 않습니다.
다음 도구를 사용하여 Amazon S3 CSI 애드온을 제거할 수 있습니다:
eksctl
eksctl
을 사용하여 Amazon S3 CSI 추가 기능 제거
my-cluster
를 클러스터 이름으로 바꾸고 다음 명령을 실행합니다.
eksctl delete addon --cluster my-cluster --name aws-mountpoint-s3-csi-driver --preserve
AWS Management Console
-
Amazon EKS 콘솔
을 엽니다. -
좌측 탐색 창에서 클러스터를 선택합니다.
-
Amazon EBS CSI 추가 기능을 제거할 클러스터의 이름을 선택합니다.
-
추가 기능(Add-ons) 탭을 선택합니다.
-
Amazon S3 CSI 드라이버용 Mountpoint를 선택합니다.
-
제거를 선택합니다.
-
제거: aws-mountpoint-s3-csi-driver 확인 대화 상자에서 다음을 수행합니다.
-
추가 기능에 대한 Amazon EKS의 설정 관리를 중지하려면 클러스터에 보존을 선택합니다. 클러스터에 추가 소프트웨어를 유지하려면 이렇게 합니다. 이는 추가 기능의 모든 설정을 스스로 관리할 수 있도록 하기 위한 것입니다.
-
aws-mountpoint-s3-csi-driver
을 입력합니다. -
제거를 선택합니다.
-
AWS CLI
AWS CLI을 사용하여 Amazon S3 CSI 추가 기능 제거
my-cluster
를 클러스터 이름으로 바꾸고 다음 명령을 실행합니다.
aws eks delete-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver --preserve