AWS CLI로 kro 캐퍼빌리티 생성
AWS CLI로 kro 캐퍼빌리티 생성
AWS CLI를 사용해 Amazon EKS 클러스터에 kro 캐퍼빌리티를 생성하는 방법을 설명합니다. 이 절차는 IAM 역할 생성과 캐퍼빌리티 활성 확인을 안내합니다.
출처: 문서
본문
사전 요구 사항
- AWS CLI - 버전
2.12.3이상. 버전을 확인하려면aws --version을 실행하세요. 자세한 내용은 AWS Command Line Interface 사용자 가이드의 설치를 참고하세요. kubectl- Kubernetes 클러스터 작업용 명령줄 도구. 자세한 내용은 Set up kubectl and eksctl을 참고하세요.
1단계: IAM 캐퍼빌리티 역할 생성
신뢰 정책 파일을 만듭니다.
cat > kro-trust-policy.json
참고
ACK와 Argo CD와 달리 kro는 추가 IAM 권한이 필요하지 않습니다. kro는 클러스터 내에서 완전히 작동하며 AWS API 호출을 수행하지 않습니다. 이 역할은 EKS 캐퍼빌리티 서비스와의 신뢰 관계를 설정하는 데만 필요합니다.
2단계: kro 캐퍼빌리티 생성
클러스터에 kro 캐퍼빌리티 리소스를 생성합니다. region-code를 클러스터가 있는 AWS 리전(예: us-west-2)으로, my-cluster를 클러스터 이름으로 바꾸세요.
aws eks create-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-kro \
--type KRO \
--role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/KROCapabilityRole \
--delete-propagation-policy RETAIN
명령은 즉시 반환되지만, EKS가 필요한 캐퍼빌리티 인프라와 구성 요소를 만드는 동안 캐퍼빌리티가 활성 상태가 되기까지 시간이 걸립니다. EKS는 생성 과정에서 이 캐퍼빌리티와 관련된 Kubernetes 커스텀 리소스 정의를 클러스터에 설치합니다.
참고
클러스터가 존재하지 않거나 권한이 없다는 오류가 발생하면 다음을 확인하세요.
- 클러스터 이름이 올바른지
- AWS CLI가 올바른 리전으로 구성되었는지
- 필요한 IAM 권한이 있는지
3단계: 캐퍼빌리티 활성 확인
캐퍼빌리티가 활성화될 때까지 기다립니다. region-code를 클러스터가 있는 AWS 리전으로, my-cluster를 클러스터 이름으로 바꾸세요.
aws eks describe-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-kro \
--query 'capability.status' \
--output text
상태가 ACTIVE로 표시되면 캐퍼빌리티가 준비된 것입니다.
전체 캐퍼빌리티 상세 정보도 확인할 수 있습니다.
aws eks describe-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-kro
4단계: Kubernetes 리소스 관리 권한 부여
kro 캐퍼빌리티를 만들면 AmazonEKSKROPolicy와 함께 EKS 접근 항목이 자동 생성되어 kro가 ResourceGraphDefinition과 그 인스턴스를 관리할 수 있습니다. 그러나 ResourceGraphDefinition에 정의된 기본 Kubernetes 리소스(Deployments, Services, ConfigMaps 등)를 만드는 권한은 기본적으로 부여되지 않습니다.
이것은 의도적인 설계로, 최소 권한 원칙을 따릅니다. 예를 들어:
- ConfigMap과 Secret만 만드는 ResourceGraphDefinition은 Deployment와 Service를 만드는 것과 다른 권한이 필요합니다.
- ACK 리소스를 만드는 ResourceGraphDefinition은 해당 특정 커스텀 리소스에 대한 권한이 필요합니다.
- 일부 ResourceGraphDefinition은 새 리소스를 만들지 않고 기존 리소스만 읽을 수도 있습니다.
ResourceGraphDefinition이 관리할 리소스에 따라 kro에 필요한 권한을 직접 구성해야 합니다.
빠른 설정
빠르게 시작하거나 테스트, 개발 환경에서는 AmazonEKSClusterAdminPolicy를 사용하세요.
캐퍼빌리티 역할 ARN을 가져옵니다.
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-kro \
--query 'capability.roleArn' \
--output text)
클러스터 관리자 정책을 연결합니다.
aws eks associate-access-policy \
--region region-code \
--cluster-name my-cluster \
--principal-arn $CAPABILITY_ROLE_ARN \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
--access-scope type=cluster
중요
AmazonEKSClusterAdminPolicy는 모든 Kubernetes 리소스를 생성하고 관리할 수 있는 광범위한 권한을 부여하며, 모든 네임스페이스에서 모든 리소스 유형을 만들 수 있는 기능을 포함합니다. 개발과 POC에는 편리하지만 프로덕션에서 사용해서는 안 됩니다. 프로덕션에서는 ResourceGraphDefinition이 관리할 특정 리소스에 필요한 권한만 부여하는 커스텀 RBAC 정책을 만드세요. 최소 권한 구성에 대한 안내는 kro 권한 구성과 EKS 캐퍼빌리티 보안 고려 사항을 참고하세요.
5단계: 커스텀 리소스 사용 가능 확인
캐퍼빌리티가 활성화된 후, 클러스터에서 kro 커스텀 리소스를 사용할 수 있는지 확인합니다.
kubectl api-resources | grep kro.run
ResourceGraphDefinition 리소스 유형이 나열된 것을 확인할 수 있어야 합니다.
다음 단계
- kro 개념 - kro 개념과 리소스 구성 이해하기
- 캐퍼빌리티 리소스 다루기 - kro 캐퍼빌리티 리소스 관리