

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

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

# ACK 기능 생성
<a name="create-ack-capability"></a>

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

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

ACK 기능을 생성하기 전에 다음이 있는지 확인합니다.
+ Amazon EKS 클러스터
+ ACK가 AWS 리소스를 관리할 권한이 있는 IAM 기능 역할
+ EKS 클러스터에서 기능 리소스를 생성할 수 있는 충분한 IAM 권한
+ 설치 및 구성된 적절한 CLI 도구 또는 EKS 콘솔에 대한 액세스

IAM 기능 역할을 생성하는 방법에 대한 지침은 [Amazon EKS 기능 IAM 역할](capability-role.md) 섹션을 참조하세요.

**중요**  
ACK는 AWS 리소스를 생성, 수정 및 삭제할 수 있는 기능을 부여하는 인프라 관리 기능입니다. 이는 신중하게 제어해야 하는 관리자 범위의 기능입니다. 클러스터에서 Kubernetes 리소스를 생성할 권한이 있는 사람은 누구나 IAM 기능 역할 권한에 따라 ACK를 통해 AWS 리소스를 효과적으로 생성할 수 있습니다. 사용자가 제공하는 IAM 기능 역할에 따라 ACK에서 생성하고 관리할 수 있는 AWS 리소스가 결정됩니다. 최소 권한으로 적절한 역할을 생성하는 방법에 대한 지침은 [Amazon EKS 기능 IAM 역할](capability-role.md) 및 [EKS 기능에 대한 보안 고려 사항](capabilities-security.md) 섹션을 참조하세요.

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

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

## ACK 기능을 생성할 때 상황
<a name="_what_happens_when_you_create_an_ack_capability"></a>

ACK 기능을 생성할 때:

1. EKS는 ACK 기능 서비스를 생성하고 클러스터의 리소스를 모니터링하고 관리하도록 이를 구성함

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

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

1. 이 기능은 사용자가 제공하는 IAM 기능 역할을 수임함

1. ACK에서 클러스터에 있는 사용자 지정 리소스 감시를 시작함

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

활성 상태가 되면 클러스터에서 ACK 사용자 지정 리소스를 생성하여 AWS 리소스를 관리할 수 있습니다.

**참고**  
자동으로 생성된 액세스 항목에는 AWS 리소스를 관리할 권한을 ACK에 부여하는 `AmazonEKSACKPolicy`가 포함됩니다. Kubernetes 보안 암호를 참조하는 일부 ACK 리소스(예: 암호가 있는 RDS 데이터베이스)에는 추가 액세스 항목 정책이 필요합니다. 액세스 항목 및 추가 권한을 구성하는 방법에 대한 자세한 내용은 [EKS 기능에 대한 보안 고려 사항](capabilities-security.md) 섹션을 참조하세요.

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

ACK 기능을 생성한 후:
+  [ACK 개념](ack-concepts.md) - ACK 개념 이해 및 AWS 리소스 시작하기
+  [ACK 개념](ack-concepts.md) - 조정, 필드 내보내기 및 리소스 채택 패턴에 대해 알아보기
+  [ACK 권한 구성](ack-permissions.md) - IAM 권한 및 다중 계정 패턴 구성

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

이 주제에서는 AWS Management Console을 사용하여 AWS Controllers for Kubernetes(ACK) 기능을 생성하는 방법을 설명합니다.

## ACK 기능 생성
<a name="_create_the_ack_capability"></a>

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

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

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

1. 왼쪽 탐색에서 **AWS Controllers for Kubernetes(ACK)**를 선택하세요.

1. **AWS Controllers for Kubernetes 기능 생성**을 선택하세요.

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

     그러면 신뢰 정책 및 `AdministratorAccess` 관리형 정책이 미리 채워진 새 탭에서 IAM 콘솔이 열립니다. 원하는 경우 이 정책의 선택을 취소하고 다른 권한을 추가할 수 있습니다.

     역할을 생성한 후 EKS 콘솔로 돌아가면 역할이 자동으로 선택됩니다.
**중요**  
제안된 `AdministratorAccess` 정책은 광범위한 권한을 부여하며 시작을 간소화하기 위해 제공됩니다. 프로덕션 사용 시 ACK로 관리하려는 특정 AWS 서비스에 필요한 권한만 부여하는 사용자 지정 정책으로 바꿉니다. 최소 권한 정책 생성에 대한 지침은 [ACK 권한 구성](ack-permissions.md) 및 [EKS 기능에 대한 보안 고려 사항](capabilities-security.md) 섹션을 참조하세요.

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

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

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

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

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

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

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

## 사용자 지정 리소스를 사용할 수 있는지 확인
<a name="_verify_custom_resources_are_available"></a>

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

 **콘솔 사용** 

1. Amazon EKS 콘솔에서 클러스터로 이동

1. **리소스** 탭 선택

1. **확장** 선택 

1. **CustomResourceDefinitions** 선택 

AWS 리소스에 대한 여러 CRD가 나열됩니다.

 **kubectl 사용** 

```
kubectl api-resources | grep services.k8s.aws
```

AWS 리소스에 대한 여러 API가 나열됩니다.

**참고**  
AWS Controllers for Kubernetes의 기능은 다양한 AWS 리소스에 대해 여러 CRD를 설치합니다.

## 다음 단계
<a name="_next_steps"></a>
+  [ACK 개념](ack-concepts.md) - ACK 개념 이해 및 시작하기
+  [ACK 권한 구성](ack-permissions.md) - 기타 AWS 서비스에 대한 IAM 권한 구성
+  [기능 리소스 작업](working-with-capabilities.md) - ACK 기능 리소스 관리

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

이 주제에서는 AWS CLI를 사용하여 AWS Controllers for Kubernetes(ACK) 기능을 생성하는 방법을 설명합니다.

## 사전 조건
<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) 섹션을 참조하세요.

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

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

```
cat > ack-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 ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

`AdministratorAccess` 관리형 정책을 역할에 연결합니다.

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**중요**  
제안된 `AdministratorAccess` 정책은 광범위한 권한을 부여하며 시작을 간소화하기 위해 제공됩니다. 프로덕션 사용 시 ACK로 관리하려는 특정 AWS 서비스에 필요한 권한만 부여하는 사용자 지정 정책으로 바꿉니다. 최소 권한 정책 생성에 대한 지침은 [ACK 권한 구성](ack-permissions.md) 및 [EKS 기능에 대한 보안 고려 사항](capabilities-security.md) 섹션을 참조하세요.

## 2단계: ACK 기능 생성
<a name="_step_2_create_the_ack_capability"></a>

클러스터에서 ACK 기능 리소스를 생성합니다. *region-code*를 클러스터를 생성한 AWS 리전으로 바꾸고 *my-cluster*를 클러스터 이름으로 바꿉니다.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --delete-propagation-policy RETAIN
```

명령은 즉시 반환되지만, 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-ack \
  --query 'capability.status' \
  --output text
```

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

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

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

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

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

```
kubectl api-resources | grep services.k8s.aws
```

AWS 리소스에 대한 여러 API가 나열됩니다.

**참고**  
AWS Controllers for Kubernetes의 기능은 다양한 AWS 리소스에 대해 여러 CRD를 설치합니다.

## 다음 단계
<a name="_next_steps"></a>
+  [ACK 개념](ack-concepts.md) - ACK 개념 이해 및 시작하기
+  [ACK 권한 구성](ack-permissions.md) - 기타 AWS 서비스에 대한 IAM 권한 구성
+  [기능 리소스 작업](working-with-capabilities.md) - ACK 기능 리소스 관리

# eksctl을 사용하여 ACK 기능 생성
<a name="ack-create-eksctl"></a>

이 주제에서는 eksctl을 사용하여 AWS Controllers for Kubernetes(ACK) 기능을 생성하는 방법을 설명합니다.

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

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

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

```
cat > ack-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 ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

`AdministratorAccess` 관리형 정책을 역할에 연결합니다.

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**중요**  
제안된 `AdministratorAccess` 정책은 광범위한 권한을 부여하며 시작을 간소화하기 위해 제공됩니다. 프로덕션 사용 시 ACK로 관리하려는 특정 AWS 서비스에 필요한 권한만 부여하는 사용자 지정 정책으로 바꿉니다. 최소 권한 정책 생성에 대한 지침은 [ACK 권한 구성](ack-permissions.md) 및 [EKS 기능에 대한 보안 고려 사항](capabilities-security.md) 섹션을 참조하세요.

**중요**  
이 정책은 모든 S3 버킷에 대한 작업을 허용하는 `"Resource": "*"`를 사용하여 S3 버킷 관리에 대한 권한을 부여합니다.  
프로덕션 사용 시: \$1 `Resource` 필드를 특정 버킷 ARN 또는 이름 패턴으로 제한 \$1 IAM 조건 키를 사용하여 리소스 태그 기준으로 액세스 제한 \$1 사용 사례에 필요한 최소 권한만 부여  
다른 AWS 서비스의 경우 [ACK 권한 구성](ack-permissions.md) 섹션을 참조하세요.

역할에 정책을 연결합니다.

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/ACKS3Policy
```

## 2단계: ACK 기능 생성
<a name="_step_2_create_the_ack_capability"></a>

eksctl을 사용하여 ACK 기능을 생성합니다. *region-code*를 클러스터를 생성한 AWS 리전으로 바꾸고 *my-cluster*를 클러스터 이름으로 바꿉니다.

```
eksctl create capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --ack-service-controllers s3
```

**참고**  
`--ack-service-controllers` 플래그는 옵션입니다. 생략하면 ACK에서 사용 가능한 모든 컨트롤러를 활성화합니다. 성능과 보안을 개선하려면 필요한 컨트롤러만 활성화하는 방법을 고려합니다. 여러 컨트롤러를 지정할 수 있습니다. `--ack-service-controllers s3,rds,dynamodb` 

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

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

기능 상태를 확인합니다.

```
eksctl get capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack
```

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

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

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

```
kubectl api-resources | grep services.k8s.aws
```

AWS 리소스에 대한 여러 API가 나열됩니다.

**참고**  
AWS Controllers for Kubernetes의 기능은 다양한 AWS 리소스에 대해 여러 CRD를 설치합니다.

## 다음 단계
<a name="_next_steps"></a>
+  [ACK 개념](ack-concepts.md) - ACK 개념 이해 및 시작하기
+  [ACK 권한 구성](ack-permissions.md) - 기타 AWS 서비스에 대한 IAM 권한 구성
+  [기능 리소스 작업](working-with-capabilities.md) - ACK 기능 리소스 관리