IRSA(서비스 계정에 대한 IAM 역할)에서 AWS Secrets and Configuration Provider CSI 사용
사전 조건
-
Amazon EKS 클러스터(버전 1.17 이상)
-
kubectl
을 통해 AWS CLI 및 Amazon EKS 클러스터에 액세스
액세스 제어 설정
ASCP는 Amazon EKS Pod Identity를 검색하고 IAM 역할에 대한 자격 증명을 교환합니다. IAM 정책에서 해당 IAM 역할에 대한 권한을 설정합니다. ASCP가 IAM 역할을 가정할 경우, ASCP는 사용자가 권한을 부여한 파라미터에 대한 액세스 권한을 가져옵니다. 다른 컨테이너는 IAM 역할과 연결하지 않는 한 파라미터에 액세스할 수 없습니다.
Parameter Store의 파라미터에 대한 Amazon EKS 포드의 액세스 권한 부여
-
포드가 액세스해야 하는 파라미터에
ssm:GetParameters
및ssm:DescribeParameters
권한을 부여하는 권한 정책을 생성합니다. -
아직 없는 경우 클러스터에 대한 IAM OpenID Connect(OIDC) 공급자를 생성합니다. 자세한 내용은 Amazon EKS 사용 설명서의 Create an IAM OIDC provider for your cluster 단원을 참조하세요.
-
서비스 계정용 IAM 역할을 생성하고 정책을 연결합니다. 자세한 내용은 Amazon EKS 사용 설명서의 Create an IAM role for a service account 단원을 참조하세요.
-
프라이빗 Amazon EKS 클러스터를 사용하는 경우 클러스터가 있는 VPC에 AWS STS 엔드포인트가 있어야 합니다. 엔드포인트 생성에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 인터페이스 VPC 엔드포인트 단원을 참조하세요.
탑재할 파라미터 식별
ASCP가 Amazon EKS에 파일 시스템의 파일로 탑재하는 파라미터를 확인하려면 SecretProviderClass YAML 파일을 생성합니다. SecretProviderClass
는 탑재할 파라미터와 이를 탑재할 파일 이름을 나열합니다. 이 SecretProviderClass
는 참조하는 Amazon EKS 포드와 동일한 네임스페이스에 있어야 합니다.
파라미터를 파일로 탑재
다음 지침에서는 YAML 파일 예제 ExampleSecretProviderClass.yaml
Amazon EKS에 파라미터 탑재
-
포드에
SecretProviderClass
적용:kubectl apply -f ExampleSecretProviderClass.yaml
-
포드 배포:
kubectl apply -f ExampleDeployment.yaml
-
ASCP가 파일을 탑재합니다.
문제 해결
포드 배포를 설명하여 대부분의 오류를 볼 수 있습니다.
컨테이너에 대한 오류 메시지 확인
-
다음 명령을 사용하여 포드 이름 목록을 가져옵니다. 기본 네임스페이스를 사용하지 않는 경우에는
-n
를 사용합니다.name-space
kubectl get pods
-
포드를 설명하기 위해 다음 명령에서
pod-id
에 대해 이전 단계에서 찾은 포드의 포드 ID를 사용합니다. 기본 네임스페이스를 사용하지 않는 경우에는-n
를 사용합니다.nameSpace
kubectl describe pod/
pod-id
ASCP에 대한 오류를 확인하려면
-
공급자 로그에서 자세한 정보를 찾으려면 다음 명령에서
pod-id
에 대해 csi-secrets-store-provider-aws 포드의 ID를 사용합니다.kubectl -n kube-system get pods kubectl -n kube-system logs Pod/
pod-id
-
SecretProviderClass
CRD 설치 여부 확인:kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io
이 명령에서
SecretProviderClass
사용자 지정 리소스 정의에 관한 정보가 반환되어야 합니다.
-
SecretProviderClass 객체가 생성되었는지 확인합니다.
kubectl get secretproviderclass
SecretProviderClassName
-o yaml