

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

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

# Amazon EKS 시작하기 - AWS Management Console 및 AWS CLI
<a name="getting-started-console"></a>

**참고**  
이 주제에서는 EKS Auto Mode **없이** 시작하는 방법을 설명합니다. 관리형 노드 그룹을 사용하여 노드를 배포합니다.  
EKS Auto Mode는 클러스터 컴퓨팅, 스토리지, 네트워킹의 일상적인 작업을 자동화합니다. [Amazon EKS Auto Mode를 시작하는 방법을 자세히 알아봅니다. ](getting-started-automode.md) EKS 자율 모드는 노드를 배포하는 기본적인 방법입니다.

이 가이드는 AWS Management Console 및 AWS CLI를 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS)를 시작할 때 필요한 모든 리소스를 생성하는 데 도움이 됩니다. 이 가이드에서는 수동으로 각 리소스를 만듭니다. 이 튜토리얼의 마지막에서는 애플리케이션을 배포할 수 있는 Amazon EKS에 클러스터를 실행하게 됩니다.

이 안내서의 절차를 통해 각 리소스가 만들어지는 방식과 리소스가 상호 작용하는 방식을 완벽하게 파악할 수 있습니다. 대부분의 리소스를 자동으로 생성하려는 경우 `eksctl` CLI를 사용하여 클러스터 및 노드를 생성합니다. 자세한 내용은 [Amazon EKS 시작하기 – `eksctl`](getting-started-eksctl.md) 섹션을 참조하세요.

## 사전 조건
<a name="eks-prereqs"></a>

이 튜토리얼에서는 Amazon EKS 클러스터를 생성하고 관리할 때 필요한 다음 도구 및 리소스를 설치하고 구성해야 합니다.
+  ** AWS CLI **- Amazon EKS를 비롯한 AWS 서비스를 사용한 작업을 위한 명령줄 도구입니다. 자세한 내용은 AWS 명령줄 인터페이스 사용 설명서에서 [설치하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)를 참조하세요. AWS CLI 설치 후, 구성 작업도 수행하는 것이 좋습니다. 자세한 내용은 AWS 명령줄 인터페이스 사용 설명서에서 [aws config를 사용한 빠른 구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)을 참조하세요. 이 페이지에 나와 있는 **update-kubeconfig** 옵션을 사용하려면 AWS CLI v2가 필요합니다.
+  ** `kubectl` ** - Kubernetes 클러스터 작업을 위한 명령줄 도구입니다. 자세한 내용은 [`kubectl` 및 `eksctl` 설정](install-kubectl.md) 섹션을 참조하세요.
+  **필요한 IAM 권한** - 사용하는 IAM 보안 주체에 Amazon EKS IAM 역할, 서비스 연결 역할, AWS CloudFormation, VPC 및 관련 리소스를 사용할 수 있는 권한이 있어야 합니다. 자세한 내용은 IAM 사용 설명서의 [서비스 연결 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) [사용](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html)을 참조하세요. 이 가이드의 모든 단계를 동일한 사용자로 완료해야 합니다. 현재 사용자를 확인하려면 다음 명령을 실행합니다.

  ```
  aws sts get-caller-identity
  ```

Bash 셸에서 이 주제의 단계를 완료하는 것이 좋습니다. Bash 셸을 사용하지 않는 경우 줄 연속 문자 및 변수 설정 및 사용 방식과 같은 일부 스크립트 명령을 통해 셸이 조정되어야 합니다. 또한 쉘의 인용 및 이스케이프 규칙이 다를 수 있습니다. 자세한 내용은 AWS 명령줄 인터페이스 사용 설명서의 [AWS CLI에서 문자열에 따옴표 사용하기](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html)를 참조하세요.

## 1단계: Amazon EKS 클러스터 생성
<a name="eks-create-cluster"></a>

**중요**  
이 주제에는 가능한 한 간단하고 빠르게 시작하기 위해 기본 설정으로 클러스터를 생성하는 단계가 포함되어 있습니다. 프로덕션 용도로 클러스터를 생성하기 전에 모든 설정을 숙지하고 요구 사항을 충족하는 설정으로 클러스터를 배포하는 것이 좋습니다. 자세한 내용은 [Amazon EKS 클러스터 생성](create-cluster.md) 섹션을 참조하세요. 일부 설정은 클러스터를 생성할 때만 사용 설정할 수 있습니다.

1. Amazon EKS 요구 사항을 충족하는 퍼블릭 및 프라이빗 서브넷이 있는 Amazon VPC PC를 생성합니다. *region-code*를 Amazon EKS에서 지원하는 AWS 리전으로 바꿉니다. AWS 리전 목록은 AWS General Reference 가이드의 [Amazon EKS endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/eks.html)를 참조하세요. 선택하는 이름으로 *my-eks-vpc-stack*을 바꿀 수 있습니다.

   ```
   aws cloudformation create-stack \
     --region region-code \
     --stack-name my-eks-vpc-stack \
     --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
   ```
**작은 정보**  
이전 명령이 생성하는 모든 리소스 목록을 보려면 AWS CloudFormation 콘솔(https://console.aws.amazon.com/cloudformation/)을 엽니다. *my-eks-vpc-stack* 스택을 선택한 다음 **리소스(Resources)** 탭을 선택합니다.

1. 클러스터 IAM 역할을 생성하고 필요한 Amazon EKS IAM 관리형 정책을 연결합니다. Amazon EKS에서 관리하는 Kubernetes 클러스터는 사용자 대신 다른 AWS 서비스를 직접 호출하여 서비스에 사용하는 리소스를 관리합니다.

   1. 다음 콘텐츠를 *eks-cluster-role-trust-policy.json*이라는 파일에 복사합니다.

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "eks.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. 역할을 생성합니다.

      ```
      aws iam create-role \
        --role-name myAmazonEKSClusterRole \
        --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
      ```

   1. 필요한 Amazon EKS 관리형 IAM 정책을 역할에 연결합니다.

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
        --role-name myAmazonEKSClusterRole
      ```

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

   콘솔의 오른쪽 상단에 표시된 AWS 리전이 클러스터를 생성하려는 AWS 리전인지 확인합니다. 그렇지 않은 경우 AWS 리전 이름 옆에 있는 드롭다운을 선택하고 사용할 AWS 리전을 선택합니다.

1. **클러스터 생성**을 선택합니다. 이 옵션이 표시되지 않으면 먼저 왼쪽 검색 창에서 **클러스터**를 선택합니다.

1. **클러스터 구성** 페이지에서 다음을 수행합니다.

   1. **사용자 지정 구성**을 선택하고 **EKS 자율 모드 사용**을 비활성화하세요. (EKS 자율 모드 클러스터를 선호하는 경우 대신 [AWS Management Console을 사용하여 EKS 자동 모드 클러스터 생성](automode-get-started-console.md) 섹션을 참조하세요.)

   1. 클러스터 **이름**을 입력하세요(예: *my-cluster*). 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영숫자로 시작해야 하며 100자 이하여야 합니다. 이름은 클러스터를 생성하는 AWS 리전과 AWS 계정 내에서 고유해야 합니다.

   1. **클러스터 서비스 역할**에서 *myAmazonEKSClusterRole*을 선택합니다.

   1. 나머지 설정을 기본값으로 두고 **다음**을 선택합니다.

1. **네트워킹 지정** 페이지에서 다음을 수행합니다.

   1. **VPC** 드롭다운 목록에서 이전 단계에서 생성한 VPC의 ID를 선택합니다. VPC는 *\$1 \$1 my-eks-vpc-stack-VPC*와 같이 표시됩니다.

   1. **서브넷** 드롭다운 목록에서 이전 단계에서 생성된 서브넷을 선택합니다. 서브넷은 *\$1 \$1 my-eks-vpc-stack-\$1*와 같이 표시됩니다.

   1. **추가 보안 그룹** 드롭다운 목록에서 이전 단계에서 생성한 보안 그룹을 선택합니다. 보안 그룹은 *\$1 \$1 my-eks-vpc-stack-ControlPlaneSecurityGroup-\$1*와 같이 표시됩니다.

   1. 나머지 설정을 기본값으로 두고 **다음**을 선택합니다.

1. **관찰성 구성** 페이지에서 **다음**을 선택합니다.

1. **추가 기능 선택** 페이지에서 **다음**을 선택합니다.

   추가 기능에 대한 자세한 내용은 [Amazon EKS 추가 기능](eks-add-ons.md) 섹션을 참조하세요.

1. **선택한 추가 기능 설정 구성** 페이지에서 **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 **생성**을 선택합니다.

   클러스터 이름 오른쪽에 있는 클러스터 상태는 클러스터 프로비저닝 프로세스가 완료될 때까지 몇 분 동안 **생성 중Creating**으로 표시됩니다. 상태가 **활성**이 되면 다음 단계를 진행합니다.
**참고**  
요청의 가용 영역 중 하나에 Amazon EKS 클러스터를 생성하는 데 충분한 용량이 없다는 오류가 표시될 수 있습니다. 이 경우 오류 출력에는 새 클러스터를 지원할 수 있는 가용 영역이 포함됩니다. 사용자 계정의 지원 가용 영역에 있는 2개 이상의 서브넷을 사용하여 클러스터를 다시 생성합니다. 자세한 내용은 [용량 부족](troubleshooting.md#ice) 섹션을 참조하세요.

## 2단계: 클러스터와 통신하도록 컴퓨터 구성
<a name="eks-configure-kubectl"></a>

이 부분에서는 클러스터에 대해 `kubeconfig` 파일을 생성합니다. 이 파일의 설정을 사용하면 `kubectl` CLI를 사용하여 클러스터와 통신할 수 있습니다.

진행하기 전에 1단계에서 클러스터 생성이 성공적으로 완료되었는지 확인합니다.

1. 클러스터에 대해 `kubeconfig` 파일을 생성 또는 업데이트합니다. *region-code*를 클러스터를 생성한 AWS 리전으로 바꿉니다. *my-cluster*를 해당 클러스터의 이름으로 바꿉니다.

   ```
   aws eks update-kubeconfig --region region-code --name my-cluster
   ```

   기본적으로 `config` 파일이 `~/.kube`에 생성되거나 새 클러스터의 구성이 `~/.kube`의 기존 `config` 파일에 추가됩니다.

1. 구성을 테스트합니다.

   ```
   kubectl get svc
   ```
**참고**  
권한 부여 또는 리소스 유형 오류가 표시되는 경우 문제 해결 주제의 [권한이 없거나 액세스가 거부됨(`kubectl`)](troubleshooting.md#unauthorized) 부분을 참조하세요.

   예제 출력은 다음과 같습니다.

   ```
   NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
   svc/kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   1m
   ```

## 3단계: 노드 생성
<a name="eks-launch-workers"></a>

**중요**  
가능한 한 간단하고 빠르게 시작하기 위해 이 주제에는 대부분 기본 설정을 사용하여 노드를 생성하는 단계가 포함되어 있습니다. 프로덕션 용도로 노드를 생성하기 전에 모든 설정을 숙지하고 요구 사항을 충족하는 설정으로 노드를 배포하는 것이 좋습니다. 자세한 내용은 [노드를 사용하여 컴퓨팅 리소스 관리](eks-compute.md) 섹션을 참조하세요. 일부 설정은 노드를 생성할 때만 사용 설정할 수 있습니다.

이 절차에서는 관리형 노드 그룹을 사용하여 이전 단계에서 생성한 서브넷 및 노드 IAM 역할을 지정하여 노드를 생성하도록 클러스터를 구성합니다. 이를 통해 Amazon EC2 인스턴스에서 Amazon Linux 애플리케이션을 실행할 수 있습니다.

EKS에서 노드를 구성하는 다양한 방법에 대한 자세한 내용은 [노드를 사용하여 컴퓨팅 리소스 관리](eks-compute.md) 섹션을 참조하세요. 클러스터를 배포한 후에 다른 노드 유형을 추가할 수 있습니다. 이 가이드에서는 다루지 않지만 [Windows 자체 관리형](launch-windows-workers.md) 및 [Bottlerocket](launch-node-bottlerocket.md) 노드를 클러스터에 추가할 수도 있습니다.

 **Amazon EC2 Linux 관리형 노드 그룹 생성** 

1. 노드 IAM 역할을 생성하고 필요한 Amazon EKS IAM 관리형 정책을 연결합니다. Amazon EKS 노드 `kubelet` 대몬은 사용자를 대신하여 AWS API를 직접 호출합니다. 노드는 IAM 인스턴스 프로필 및 연결 정책을 통해 이 API 직접 호출에 대한 권한을 수신합니다.

   1. 다음 콘텐츠를 `node-role-trust-policy.json`라는 파일에 복사합니다.

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

   1. 노드 IAM 역할을 생성합니다.

      ```
      aws iam create-role \
        --role-name myAmazonEKSNodeRole \
        --assume-role-policy-document file://"node-role-trust-policy.json"
      ```

   1. 필요한 관리형 IAM 정책을 역할에 연결합니다.

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \
        --role-name myAmazonEKSNodeRole
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \
        --role-name myAmazonEKSNodeRole
      aws iam attach-role-policy \
        --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \
        --role-name myAmazonEKSNodeRole
      ```

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

   1. [1단계: Amazon EKS 클러스터 만들기](#eks-create-cluster)에서 생성한 클러스터의 이름(예: *my-cluster*)을 선택합니다.

   1. ** *my-cluster* ** 페이지에서 다음을 수행합니다.

   1. **컴퓨팅** 탭을 선택합니다.

   1. **노드 그룹 추가**를 선택합니다.

1. **노드 그룹 구성** 페이지에서 다음을 수행합니다.

   1. **이름**에 관리형 노드 그룹(예: *my-nodegroup*)의 고유한 이름을 입력합니다. 노드 그룹 이름은 63자를 초과할 수 없습니다. 문자나 숫자로 시작하되, 나머지 문자의 경우 하이픈과 밑줄을 포함할 수 있습니다.

   1. **노드 IAM 역할 이름**에서 이전 단계에서 생성한 *myAmazonEKSNodeRole* 역할을 선택합니다. 각 노드 그룹은 고유한 IAM 역할을 사용하는 것이 좋습니다.

   1. **다음**을 선택합니다.

1. **컴퓨팅 및 크기 조정 구성 설정** 페이지에서 기본값으로 두고 **다음**을 선택합니다.

1. **네트워킹 지정** 페이지에서 기본값을 수락하고 **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 관리형 노드 그룹 구성을 검토하고 **생성**을 선택합니다.

1. 몇 분 후 **노드 그룹 구성** 섹션의 **상태**가 **생성 중**에서 **활성**으로 바뀝니다. 상태가 **활성**이 되면 다음 단계를 진행합니다.

## 4단계: 리소스 보기
<a name="gs-view-resources"></a>

노드 및 Kubernetes 워크로드를 볼 수 있습니다.

1. 좌측 탐색 창에서 **클러스터**를 선택합니다. **클러스터** 목록에서 생성한 클러스터의 이름을 선택합니다(예: *my-cluster*).

1. ** *my-cluster* ** 페이지에서 다음을 선택합니다.

   1.  **컴퓨팅** 탭 - 클러스터에 대해 배포된 **노드** 목록이 표시됩니다. 노드 이름을 선택하면 노드에 대한 자세한 정보를 볼 수 있습니다.

   1.  **리소스** 탭 - Amazon EKS 클러스터에 기본적으로 배포되는 Kubernetes 리소스가 모두 표시됩니다. 자세한 내용을 알아보려면 콘솔에서 모든 리소스 유형을 선택하세요.

## 5단계: 리소스 삭제
<a name="gs-console-clean-up"></a>

이 튜토리얼용으로 생성한 클러스터와 노드의 사용을 끝낸 후에는 생성한 리소스를 삭제해야 합니다. 리소스를 삭제하기 전에 이 클러스터로 추가 작업을 수행하려면 [다음 단계](#gs-console-next-steps) 부분을 참조하세요.

1. 생성한 노드 그룹 프로파일을 삭제하세요.

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

   1. 좌측 탐색 창에서 **클러스터**를 선택합니다. 클러스터 목록에서 *my-cluster*를 선택합니다.

   1. **컴퓨팅** 탭을 선택합니다.

   1. 노드 그룹을 생성한 경우 *my-nodegroup* 노드 그룹을 선택한 다음 **삭제**를 선택합니다. *my-nodegroup*을 입력하고 **삭제**를 선택합니다.

   1. 노드 그룹 프로파일이 삭제될 때까지 계속 진행하지 마세요.

1. 클러스터를 삭제합니다.

   1. 좌측 탐색 창에서 **클러스터**를 선택합니다. 클러스터 목록에서 *my-cluster*를 선택합니다.

   1. **클러스터 삭제**를 선택합니다.

   1. *my-cluster*를 입력하고 **삭제**를 선택합니다. 클러스터가 삭제될 때까지 계속하지 마세요.

1. 생성한 VPC AWS CloudFormation 스택을 삭제합니다.

   1. https://console.aws.amazon.com/cloudformation/에서 CloudFormation 콘솔을 엽니다.

   1. *my-eks-vpc-stack* 스택을 선택하고 **삭제**를 선택합니다.

   1. ***my-eks-vpc-stack* 삭제** 확인 대화 상자에서 **스택 삭제**를 선택합니다.

1. 생성한 IAM 역할을 삭제합니다.

   1. IAM 콘솔(https://console.aws.amazon.com/iam/)을 엽니다.

   1. 왼쪽 탐색 창에서 **역할**을 선택합니다.

   1. 목록에서 생성한 각 역할(***myAmazonEKSClusterRole* ** 및 *myAmazonEKSNodeRole*)을 선택하세요. **삭제**를 선택하고 요청한 확인 텍스트를 입력한 다음 **삭제**를 선택합니다.

## 다음 단계
<a name="gs-console-next-steps"></a>

다음은 클러스터의 기능을 확장하는 데 도움이 되는 설명서 주제입니다.
+ 클러스터를 생성한 [IAM 위탁자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)는 `kubectl` 또는 AWS Management Console을 사용하여 Kubernetes API 서버를 직접적으로 직접 호출할 수 있는 유일한 위탁자입니다. 다른 IAM 보안 주체가 클러스터에 액세스할 수 있게 하려면 해당 보안 주체를 추가해야 합니다. 자세한 내용은 [IAM 사용자 및 역할에 Kubernetes API에 대한 액세스 권한 부여](grant-k8s-access.md) 및 [필수 권한](view-kubernetes-resources.md#view-kubernetes-resources-permissions) 섹션을 참조하세요.
+ 클러스터에 [샘플 애플리케이션](sample-deployment.md)을 배포합니다.
+ 프로덕션 용도로 클러스터를 배포하기 전에 [클러스터](create-cluster.md)와 [노드](eks-compute.md)에 대한 모든 설정을 숙지하는 것이 좋습니다. Amazon EC2 노드에 대한 SSH 액세스 사용 설정과 같은 일부 설정은 클러스터를 생성할 때 지정해야 합니다.
+ 클러스터의 보안을 강화하려면 [서비스 계정에 IAM 역할을 사용하도록 Amazon VPC 컨테이너 네트워킹 인터페이스 플러그 인을 구성합니다](cni-iam-role.md).