

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **GitHub에서 이 페이지 편집** 링크를 선택합니다.

# eksctl 사용 시 Argo CD 기능 생성
<a name="argocd-create-eksctl"></a>

eksctl을 사용하여 Amazon EKS 클러스터에서 Argo CD 기능을 생성하는 방법을 알아봅니다.

**참고**  
다음 단계에서는 eksctl 버전 `0.215.0` 이상이 필요합니다. 버전을 확인하려면 `eksctl version`을 실행합니다.

## 사전 조건
<a name="_prerequisites"></a>
+  **구성된 AWS Identity Center** - Argo CD에는 인증을 위해 AWS Identity Center가 필요합니다. 로컬 사용자는 지원되지 않습니다. AWS Identity Center를 설정하지 않은 경우 [Getting started with AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)를 참조하여 Identity Center 인스턴스를 생성하고 [사용자 추가](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) 및 [그룹 추가](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)를 통해 Argo CD 액세스를 위한 사용자 및 그룹을 생성합니다.
+  **AWS Identity Center에 있는 하나 이상의 사용자 또는 그룹** - Argo CD RBAC 역할 매핑을 할당하고 Argo CD UI에 대한 액세스를 제공하려면 Identity Center 인스턴스에 하나 이상의 사용자 또는 그룹이 구성되어 있어야 합니다.

## 1단계: IAM 기능 역할 생성
<a name="_step_1_create_an_iam_capability_role"></a>

신뢰 정책 파일을 생성합니다.

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

IAM 역할을 생성합니다.

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**참고**  
이 기본 설정에는 추가 IAM 정책이 필요하지 않습니다. 리포지토리 자격 증명 또는 CodeConnections에 Secrets Manager를 사용하려는 경우 역할에 권한을 추가해야 합니다. IAM 정책 예제 및 구성 지침은 [AWS Secrets Manager를 사용하여 애플리케이션 보안 암호 관리](integration-secrets-manager.md) 및 [AWS CodeConnections를 사용하여 Git 리포지토리에 연결](integration-codeconnections.md) 섹션을 참조하세요.

## 2단계: AWS Identity Center 구성 가져오기
<a name="step_2_get_your_shared_aws_identity_center_configuration"></a>

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
```

이 값을 기록합니다. 다음 단계에 해당 값이 필요합니다.

## (선택 사항) 프라이빗 엔드포인트 구성
<a name="_optional_configure_a_private_endpoint"></a>

기본적으로 Argo CD UI 및 API 엔드포인트는 인터넷을 통해 공개적으로 액세스할 수 있습니다. 액세스를 제한해야 하는 경우 VPC 엔드포인트를 구성할 수 있습니다. 네트워크 보안 요구 사항이 엄격한 환경에 권장됩니다.

### EKS 기능에 대한 VPC 엔드포인트 생성
<a name="_create_a_vpc_endpoint_for_eks_capabilities"></a>

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 엔드포인트가 사용 가능한지 확인
<a name="_verify_the_vpc_endpoint_is_available"></a>

```
aws ec2 describe-vpc-endpoints \
  --vpc-endpoint-ids {{vpce-xxxxxxxx}} \
  --query 'VpcEndpoints[0].State' \
  --output text \
  --region {{region-code}}
```

상태가 `available`로 표시될 때까지 기다린 후 계속 진행합니다.

## 3단계: eksctl 구성 파일 생성
<a name="_step_3_create_an_eksctl_configuration_file"></a>

다음 콘텐츠가 포함된 `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 기능 생성
<a name="_step_4_create_the_argo_cd_capability"></a>

구성 파일을 적용합니다.

```
eksctl create capability -f argocd-capability.yaml
```

명령은 즉시 반환되지만 기능이 활성 상태가 되려면 다소 시간이 걸립니다.

## 5단계: 기능이 활성 상태인지 확인
<a name="_step_5_verify_the_capability_is_active"></a>

기능 상태를 확인합니다. {{region-code}}를 클러스터를 생성한 AWS 리전으로 바꾸고 {{my-cluster}}를 클러스터 이름으로 바꿉니다.

```
eksctl get capability \
  --region {{region-code}} \
  --cluster {{my-cluster}} \
  --name my-argocd
```

상태가 `ACTIVE`로 표시되면 기능이 준비된 것입니다.

## 6단계: 사용자 지정 리소스를 사용할 수 있는지 확인
<a name="_step_6_verify_custom_resources_are_available"></a>

기능이 활성 상태가 되면 클러스터에서 Argo CD 사용자 지정 리소스를 사용할 수 있는지 확인합니다.

```
kubectl api-resources | grep argoproj.io
```

`Application` 및 `ApplicationSet` 리소스 유형이 나열됩니다.

## 다음 단계
<a name="_next_steps"></a>
+  [Argo CD 작업](working-with-argocd.md) - Argo CD 애플리케이션을 생성하고 관리하는 방법 알아보기
+  [Argo CD 고려 사항](argocd-considerations.md) - SSO 및 다중 클러스터 액세스 구성
+  [기능 리소스 작업](working-with-capabilities.md) - Argo CD 기능 리소스 관리