

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

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

# Argo CD 기능 생성
<a name="create-argocd-capability"></a>

이 주제에서는 Amazon EKS 클러스터에서 Argo CD 기능을 생성하는 방법을 설명합니다.

## 사전 조건
<a name="_prerequisites"></a>

Argo CD 기능을 생성하기 전에 다음이 있는지 확인합니다.
+ 지원되는 Kubernetes 버전(표준 및 확장 지원의 모든 버전이 지원됨)을 실행하는 기존 Amazon EKS 클러스터
+  **구성된 AWS Identity Center** - Argo CD 인증에 필요(로컬 사용자는 지원되지 않음)
+ Argo CD에 대한 권한이 있는 IAM 기능 역할
+ EKS 클러스터에서 기능 리소스를 생성할 수 있는 충분한 IAM 권한
+  클러스터와 통신하도록 구성된 `kubectl`
+ (선택 사항) 더 쉬운 클러스터 및 리포지토리 관리를 위해 설치된 Argo CD CLI
+ (CLI/eksctl의 경우) 설치 및 구성된 적절한 CLI 도구

IAM 기능 역할을 생성하는 방법에 대한 지침은 [Amazon EKS 기능 IAM 역할](capability-role.md) 섹션을 참조하세요. Identity Center 설정에 대한 자세한 내용은 [Getting started with AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)를 참조하세요.

**중요**  
사용자가 제공하는 IAM 기능 역할에 따라 Argo CD에서 액세스할 수 있는 AWS 리소스가 결정됩니다. 여기에는 CodeConnections를 통한 Git 리포지토리 액세스와 Secrets Manager의 보안 암호가 포함됩니다. 최소 권한으로 적절한 역할을 생성하는 방법에 대한 지침은 [Amazon EKS 기능 IAM 역할](capability-role.md) 및 [EKS 기능에 대한 보안 고려 사항](capabilities-security.md) 섹션을 참조하세요.

## 도구 선택
<a name="_choose_your_tool"></a>

AWS Management Console, AWS CLI 또는 eksctl을 사용하여 Argo CD 기능을 생성할 수 있습니다.
+  [콘솔을 사용하여 Argo CD 기능 생성](argocd-create-console.md) - 안내 경험을 이용하려면 콘솔 사용
+  [AWS CLI를 사용하여 Argo CD 기능 생성](argocd-create-cli.md) -스크립트 및 자동화를 이용하려면 AWS CLI 사용
+  [eksctl 사용 시 Argo CD 기능 생성](argocd-create-eksctl.md) - Kubernetes 네이티브 경험을 이용하려면 eksctl 사용

## Argo CD 기능을 생성할 때 상황
<a name="_what_happens_when_you_create_an_argo_cd_capability"></a>

Argo CD 기능을 생성할 때:

1. EKS는 AWS 컨트롤 플레인에서 Argo CD 기능 서비스를 생성함

1. 사용자 지정 리소스 정의(CRD)가 클러스터에 설치됨

1. 기준 Kubernetes 권한을 부여하는 기능별 액세스 항목 정책을 사용하여 IAM 기능 역할에 대한 액세스 항목이 자동으로 생성됨([EKS 기능에 대한 보안 고려 사항](capabilities-security.md) 참조)

1. Argo CD에서 사용자 지정 리소스(Applications, ApplicationSets, AppProjects) 감시를 시작함

1. 기능 상태가 `CREATING`에서 `ACTIVE`로 변경됨 

1. 해당 URL을 통해 Argo CD UI에 액세스할 수 있음

활성 상태가 되면 클러스터에서 Argo CD 애플리케이션을 생성하여 선언적 소스에서 배포할 수 있습니다.

**참고**  
자동으로 생성된 액세스 항목은 클러스터에 애플리케이션을 배포하기 위한 권한을 부여하지 않습니다. 애플리케이션을 배포하려면 각 대상 클러스터에 대해 추가 Kubernetes RBAC 권한을 구성해야 합니다. 클러스터 등록 및 액세스 구성에 대한 자세한 내용은 [대상 클러스터 등록](argocd-register-clusters.md) 섹션을 참조하세요.

## 다음 단계
<a name="_next_steps"></a>

Argo CD 기능을 생성한 후:
+  [Argo CD 개념](argocd-concepts.md) - GitOps 원칙, 동기화 정책, 다중 클러스터 패턴에 대해 알아보기
+  [Argo CD 작업](working-with-argocd.md) - 리포지토리 액세스 구성, 대상 클러스터 등록, 애플리케이션 생성
+  [Argo CD 고려 사항](argocd-considerations.md) - 다중 클러스터 아키텍처 패턴 및 고급 구성 살펴보기

# 콘솔을 사용하여 Argo CD 기능 생성
<a name="argocd-create-console"></a>

이 주제에서는 AWS Management Console을 사용하여 Argo CD 기능을 생성하는 방법을 설명합니다.

## 사전 조건
<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 액세스를 위한 사용자 및 그룹을 생성합니다.

## Argo CD 기능 생성
<a name="_create_the_argo_cd_capability"></a>

1. https://console.aws.amazon.com/eks/home\$1/clusters에서 Amazon EKS 콘솔을 엽니다.

1. 클러스터 이름을 선택하여 클러스터 세부 정보 페이지를 여세요.

1. **기능** 탭을 선택하세요.

1. 왼쪽 탐색에서 **Argo CD**를 선택하세요.

1. **Argo CD 기능 생성**을 선택하세요.

1. **IAM 기능 역할**의 경우:
   + IAM 기능 역할이 이미 있는 경우 드롭다운 선택
   + 새 역할을 생성해야 하는 경우 **새 Argo CD 역할 생성** 선택 

     그러면 Secrets Manager에 대한 전체 읽기 액세스 권한과 함께 신뢰 정책이 미리 채워진 새 탭에서 IAM 콘솔이 열립니다. 다른 권한은 기본적으로 추가되지 않지만 필요한 경우 추가할 수 있습니다. CodeCommit 리포지토리 또는 기타 AWS 서비스를 사용하려는 경우 역할을 생성하기 전에 적절한 권한을 추가합니다.

     역할을 생성한 후 EKS 콘솔로 돌아가면 역할이 자동으로 선택됩니다.
**참고**  
AWS Secrets Manager 또는 AWS CodeConnections와의 선택적 통합을 사용하려는 경우 역할에 권한을 추가해야 합니다. IAM 정책 예제 및 구성 지침은 [AWS Secrets Manager를 사용하여 애플리케이션 보안 암호 관리](integration-secrets-manager.md) 및 [AWS CodeConnections를 사용하여 Git 리포지토리에 연결](integration-codeconnections.md) 섹션을 참조하세요.

1. AWS Identity Center 통합을 구성하세요.

   1. **AWS Identity Center 통합 활성화**를 선택하세요.

   1. 드롭다운에서 Identity Center 인스턴스를 선택하세요.

   1. Argo CD 역할(ADMIN, EDITOR 또는 VIEWER)에 사용자 또는 그룹을 할당하여 RBAC에 대한 역할 매핑을 구성하세요.

1. **생성(Create)**을 선택합니다.

기능 생성 프로세스가 시작됩니다.

## 기능이 활성 상태인지 확인
<a name="_verify_the_capability_is_active"></a>

1. **기능** 탭에서 Argo CD 기능 상태를 확인하세요.

1. 상태가 `CREATING`에서 `ACTIVE`로 변경될 때까지 기다리세요.

1. 활성 상태가 되면 기능을 사용할 준비가 된 것입니다.

기능 상태 및 문제 해결에 대한 자세한 내용은 [기능 리소스 작업](working-with-capabilities.md) 섹션을 참조하세요.

## Argo CD UI에 액세스
<a name="_access_the_argo_cd_ui"></a>

기능이 활성 상태가 되면 Argo CD UI에 액세스할 수 있습니다.

1. Argo CD 기능 페이지에서 **Argo CD UI 열기**를 선택하세요.

1. Argo CD UI가 새 브라우저 탭에서 열립니다.

1. 이제 UI를 통해 애플리케이션을 생성하고 배포를 관리할 수 있습니다.

## 다음 단계
<a name="_next_steps"></a>
+  [Argo CD 작업](working-with-argocd.md) - 리포지토리 구성, 클러스터 등록, 애플리케이션 생성
+  [Argo CD 고려 사항](argocd-considerations.md) - 다중 클러스터 아키텍처 및 고급 구성
+  [기능 리소스 작업](working-with-capabilities.md) - Argo CD 기능 리소스 관리

# AWS CLI를 사용하여 Argo CD 기능 생성
<a name="argocd-create-cli"></a>

이 주제에서는 AWS CLI를 사용하여 Argo CD 기능을 생성하는 방법을 설명합니다.

## 사전 조건
<a name="_prerequisites"></a>
+  **AWS CLI** – 버전 `2.12.3` 이상. 버전을 확인하려면 `aws --version`을 실행합니다. 자세한 내용은 AWS 명령줄 인터페이스 사용 설명서에서 [설치하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)를 참조하세요.
+  **`kubectl`** - Kubernetes 클러스터 작업을 위한 명령줄 도구. 자세한 내용은 [`kubectl` 및 `eksctl` 설정](install-kubectl.md) 섹션을 참조하세요.
+  **구성된 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 액세스를 위한 사용자 및 그룹을 생성합니다.

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

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

## 2단계: Argo CD 기능 생성
<a name="_step_2_create_the_argo_cd_capability"></a>

클러스터에서 Argo CD 기능 리소스를 생성합니다.

먼저 Identity Center 구성에 대한 환경 변수를 설정합니다.

```
# Get your Identity Center instance ARN (replace region if your IDC instance is in a different region)
export IDC_INSTANCE_ARN=$(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].InstanceArn' --output text)

# Get a user ID for RBAC mapping (replace with your username and region if needed)
export IDC_USER_ID=$(aws identitystore list-users \
  --region [.replaceable]`region` \
  --identity-store-id $(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text)

echo "IDC_INSTANCE_ARN=$IDC_INSTANCE_ARN"
echo "IDC_USER_ID=$IDC_USER_ID"
```

Identity Center 통합을 사용하여 기능을 생성합니다. *region-code*를 클러스터가 위치한 AWS 리전으로 바꾸고 *my-cluster*를 클러스터 이름으로 바꾸며 *idc-region-code*를 IAM Identity Center가 구성된 리전 코드로 바꿉니다.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ArgoCDCapabilityRole \
  --delete-propagation-policy RETAIN \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'[.replaceable]`idc-region-code`'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

명령은 즉시 반환되지만, EKS가 필요한 기능 인프라 및 구성 요소를 생성하므로 기능이 활성 상태가 되려면 다소 시간이 걸립니다. EKS는 생성될 때 클러스터에서 이 기능과 관련된 Kubernetes 사용자 지정 리소스 정의를 설치합니다.

**참고**  
클러스터가 존재하지 않는다는 오류가 발생하거나 권한이 없는 경우 다음을 확인합니다.  
클러스터 이름이 올바른지
AWS CLI가 올바른 리전에 구성되었는지
필요한 IAM 권한이 있음

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

기능이 활성 상태가 될 때까지 기다립니다. *region-code*를 클러스터가 있는 AWS 리전으로 바꾸고 *my-cluster*를 클러스터 이름으로 바꿉니다.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.status' \
  --output text
```

상태가 `ACTIVE`로 표시되면 기능이 준비된 것입니다. `ACTIVE` 상태가 되면 다음 단계를 계속하지 마세요.

전체 기능 세부 정보를 볼 수도 있습니다.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd
```

## 4단계: 사용자 지정 리소스를 사용할 수 있는지 확인
<a name="_step_4_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 고려 사항](argocd-considerations.md) - 다중 클러스터 아키텍처 및 고급 구성
+  [기능 리소스 작업](working-with-capabilities.md) - Argo CD 기능 리소스 관리

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

이 주제에서는 eksctl을 사용하여 Argo CD 기능을 생성하는 방법을 설명합니다.

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

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

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

## 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::[.replaceable]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`입니다.

## 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 기능 리소스 관리