eksctl로 Argo CD 캐퍼빌리티 생성
eksctl로 Argo CD 캐퍼빌리티 생성
eksctl을 사용해 Amazon EKS 클러스터에 Argo CD 캐퍼빌리티를 생성하는 방법을 설명합니다.
출처: 문서
본문
참고
다음 단계는 eksctl 버전
0.215.0이상이 필요합니다. 버전을 확인하려면eksctl version을 실행하세요.
사전 요구 사항
- AWS Identity Center 구성 - Argo CD는 인증을 위해 AWS Identity Center가 필요합니다. 로컬 사용자는 지원되지 않습니다. AWS Identity Center가 설정되어 있지 않으면 AWS Identity Center 시작하기를 참고해 Identity Center 인스턴스를 만들고, 사용자 추가 및 그룹 추가를 참고해 Argo CD 접근용 사용자와 그룹을 만드세요.
- AWS Identity Center에 사용자나 그룹이 하나 이상 있어야 함 - Argo CD RBAC 역할 매핑을 할당하고 Argo CD UI 접근을 제공하려면 Identity Center 인스턴스에 구성된 사용자나 그룹이 하나 이상 있어야 합니다.
1단계: IAM 캐퍼빌리티 역할 생성
신뢰 정책 파일을 만듭니다.
cat > argocd-trust-policy.json
참고
이 기본 설정에는 추가 IAM 정책이 필요하지 않습니다. 리포지토리 자격 증명용 Secrets Manager나 CodeConnections를 사용할 계획이라면 역할에 권한을 추가해야 합니다. IAM 정책 예시와 구성 안내는 AWS Secrets Manager로 애플리케이션 시크릿 관리와 AWS CodeConnections로 Git 리포지토리 연결을 참고하세요.
2단계: AWS Identity Center 구성 가져오기
RBAC 구성용 Identity Center 인스턴스 ARN과 사용자 ID를 가져옵니다.
# Get your Identity Center instance ARN
aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text
# Get a user ID for admin access (replace 'your-username' with your Identity Center username)
aws identitystore list-users \
--identity-store-id $(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text) \
--query 'Users[?UserName==`your-username`].UserId' --output text
이 값을 기록해 두세요. 다음 단계에서 필요합니다.
(선택) 프라이빗 엔드포인트 구성
기본적으로 Argo CD UI와 API 엔드포인트는 인터넷을 통해 공개적으로 접근할 수 있습니다. 접근을 제한해야 한다면 VPC 엔드포인트를 구성할 수 있습니다. 이는 네트워크 보안 요구 사항이 엄격한 환경에 권장됩니다.
EKS 캐퍼빌리티용 VPC 엔드포인트 생성
VPC에 EKS 캐퍼빌리티 서비스용 인터페이스 VPC 엔드포인트를 생성합니다. vpc-id, subnet-id-1 subnet-id-2, sg-id, region-code를 자신의 값으로 바꾸세요.
aws ec2 create-vpc-endpoint \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.region-code.eks-capabilities \
--vpc-id vpc-id \
--subnet-ids subnet-id-1 subnet-id-2 \
--security-group-ids sg-id \
--region region-code
참고
고가용성을 위해 서브넷은 서로 다른 가용 영역에 있어야 합니다. 보안 그룹은 Argo CD UI와 API에 접근해야 하는 네트워크에서 인바운드 HTTPS(포트 443) 트래픽을 허용해야 합니다.
이 명령이 반환하는 VPC 엔드포인트 ID를 기록해 두세요. 캐퍼빌리티를 만들 때 필요합니다.
VPC 엔드포인트가 사용 가능한지 확인
aws ec2 describe-vpc-endpoints \
--vpc-endpoint-ids vpce-xxxxxxxx \
--query 'VpcEndpoints[0].State' \
--output text \
--region region-code
상태가 available로 표시될 때까지 기다린 후 진행하세요.
3단계: eksctl 구성 파일 생성
argocd-capability.yaml이라는 파일을 다음 내용으로 생성합니다. 플레이스홀더 값을 클러스터 이름, 클러스터 리전, IAM 역할 ARN, Identity Center 인스턴스 ARN, Identity Center 리전, 사용자 ID로 바꾸세요.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: cluster-region-code
capabilities:
- name: my-argocd
type: ARGOCD
roleArn: arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
deletePropagationPolicy: RETAIN
configuration:
argocd:
awsIdc:
idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
idcRegion: idc-region-code
rbacRoleMappings:
- role: ADMIN
identities:
- id: 38414300-1041-708a-01af-5422d6091e34
type: SSO_USER
참고
RBAC 매핑에 여러 사용자나 그룹을 추가할 수 있습니다. 그룹은
type: SSO_GROUP을 사용하고 그룹 ID를 제공하세요. 사용 가능한 역할은ADMIN,EDITOR,VIEWER입니다.
프라이빗 접근용 VPC 엔드포인트를 구성했다면 캐퍼빌리티 정의에 networkConfiguration 섹션을 추가하세요. vpce-xxxxxxxx를 VPC 엔드포인트 ID로 바꾸세요.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: cluster-region-code
capabilities:
- name: my-argocd
type: ARGOCD
roleArn: arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
deletePropagationPolicy: RETAIN
networkConfiguration:
elasticNetworkInterfaces:
vpcEndpointId: vpce-xxxxxxxx
configuration:
argocd:
awsIdc:
idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
idcRegion: idc-region-code
rbacRoleMappings:
- role: ADMIN
identities:
- id: 38414300-1041-708a-01af-5422d6091e34
type: SSO_USER
참고
프라이빗 엔드포인트가 활성화되면 Argo CD UI와 API는 VPC 엔드포인트를 통해서만 접근할 수 있습니다. 사용자는 Argo CD 인터페이스에 접근하려면 VPC(또는 피어링된 네트워크)에 연결되어 있어야 합니다.
4단계: Argo CD 캐퍼빌리티 생성
구성 파일을 적용합니다.
eksctl create capability -f argocd-capability.yaml
명령은 즉시 반환되지만, 캐퍼빌리티가 활성 상태가 되기까지 시간이 걸립니다.
5단계: 캐퍼빌리티 활성 확인
캐퍼빌리티 상태를 확인합니다. region-code를 클러스터가 있는 AWS 리전으로, my-cluster를 클러스터 이름으로 바꾸세요.
eksctl get capability \
--region region-code \
--cluster my-cluster \
--name my-argocd
상태가 ACTIVE로 표시되면 캐퍼빌리티가 준비된 것입니다.
6단계: 커스텀 리소스 사용 가능 확인
캐퍼빌리티가 활성화된 후, 클러스터에서 Argo CD 커스텀 리소스를 사용할 수 있는지 확인합니다.
kubectl api-resources | grep argoproj.io
Application과 ApplicationSet 리소스 유형이 나열된 것을 확인할 수 있어야 합니다.
다음 단계
- Argo CD 사용하기 - Argo CD Application 생성 및 관리 방법 알아보기
- Argo CD 고려 사항 - SSO와 멀티 클러스터 접근 구성
- 캐퍼빌리티 리소스 다루기 - Argo CD 캐퍼빌리티 리소스 관리