ECR에 등록된 이미지를 기반으로 EKS를 운영하려 한다.
이를 위해 EKS의 구조를 이해하고 각 개념을 직접 생성하며 실습해보자.
클러스터, 노드 그룹, 노드, 파드, 컨테이너, 디플로이먼트, 서비스, 네임 스페이스는 EKS (Elastic Kubernetes Service)에서 컨테이너화된 애플리케이션을 관리하는 기본적인 단위로, 각 구성 요소의 개념을 예시를 통해 간략히 살펴보고 그 관계를 알아보자.
앞서 살펴본 클러스터, 노드 그룹, 노드, 파드, 컨테이너, 디플로이먼트, 서비스, 네임 스페이스의 예시와 설명을 바탕으로 이들 간의 관계를 아래와 같이 정리할 수 있다.
클러스터는 리소스를 제공하고, 노드와 파드는 컨테이너를 실행하며, 디플로이먼트와 서비스는 이를 배포하고 안정적으로 관리합니다.
각 개념을 깊이 있게 알아보고, AWS 콘솔을 통해 실습을 진행하며 EKS를 이용해 ECR에 등록된 이미지인 web과 api 컨테이너를 운영하려고 한다.
EKS(Elastic Kubernetes Service)에서 클러스터는 여러 리소스를 관리하는 가장 큰 단위로, 컨테이너화된 애플리케이션을 실행하기 위한 서버들의 집합입니다. 클러스터 안에는 여러 노드가 있어 애플리케이션을 실행하며, 클러스터는 이 노드를 효율적으로 관리합니다.
서버 환경 제공
: 애플리케이션이 실행될 서버 환경을 제공하며, 여러 노드를 관리합니다.
애플리케이션 배포
: 애플리케이션의 배포를 자동화하여, 컨테이너들이 클러스터 내에서 실행되도록 합니다.
관리 및 리소스 관리 자동화
: 리소스를 효율적으로 분배하고 관리하며, 애플리케이션의 상태를 지속적으로 관리합니다.
AWS 콘솔에서 EKS > 클러스터로 이동한 뒤, 클러스터 생성 버튼을 클릭합니다.

클러스터 생성 화면으로 이동한 후, 1단계에서 클러스터 구성을 설정합니다.
사용자 지정 구성을 선택하고, EKS 자율 모드를 비활성화합니다.
빠른 구성 (EKS 자율 모드 사용)
: 기본 설정으로 자동으로 클러스터를 생성하며, 설정이 간단하고 빠른 배포가 가능합니다. 하지만 세부 설정에 제약이 있습니다.
사용자 지정 구성
: 클러스터 생성 시 세부 설정을 자유롭게 할 수 있어, 구성 요소를 더 세밀하게 제어할 수 있습니다. EKS 자율 모드를 비활성화하고, 더 많은 옵션을 선택할 수 있습니다.

클러스터 구성을 설정하기 전에 먼저 클러스터 IAM 역할을 생성해야 합니다.
'권장 역할 생성' 버튼을 클릭하여 IAM 역할 생성 화면으로 이동합니다.
신뢰할 수 있는 엔터티 유형에서 'AWS 서비스'를 선택하고, 사용 사례에서 'EKS - Cluster'가 자동으로 설정된 상태에서 '다음' 버튼을 클릭합니다.

자동으로 설정된 AmazonEKSClusterPolicy 권한 정책을 확인한 후, '다음' 버튼을 클릭합니다.

이름 지정, 검토 및 생성 단계에서 역할 이름과 설명을 입력한 후, '역할 생성' 버튼을 클릭하여 역할을 생성합니다.

IAM 역할을 생성한 후, 클러스터 구성 화면으로 돌아가 클러스터 이름과 이전에 생성한 클러스터 IAM 역할을 선택합니다. 이후 Kubernetes 버전은 현재 최신 버전인 1.32로 선택합니다.
나머지 설정은 그대로 두고, '다음' 버튼을 클릭합니다.


4단계에서 추가 기능 선택을 설정합니다.
추가 기능이 자동으로 활성화된 상태에서 하단의 '다음' 버튼을 클릭합니다.
추가 기능
: 클러스터의 기능을 향상시키기 위해 자동으로 활성화되는 부가적인 설정 옵션들

5단계에서 선택한 추가 기능 설정 구성을 설정합니다.
선택한 추가 기능 설정에서 버전을 선택할 수 있으며, 기본 설정된 버전으로 '다음' 버튼을 클릭합니다.

6단계에서 검토 및 생성을 확인합니다.
앞서 설정한 내용을 한눈에 확인할 수 있으며, 확인 후 '생성' 버튼을 클릭합니다.

약 10분 정도 후, 클러스터가 생성된 것을 확인할 수 있습니다.


노드그룹은 클러스터 내에서 컨테이너를 실행할 물리적 또는 가상 서버들의 그룹입니다. 각 노드그룹은 동일한 설정을 가진 EC2 인스턴스로 구성되어, 애플리케이션을 실행하고 관리하는 역할을 합니다. 노드그룹은 클러스터의 리소스를 제공하며, 필요에 따라 자동으로 확장하거나 축소할 수 있습니다.
애플리케이션 실행
: 노드 그룹은 실제로 컨테이너를 실행하는 EC2 인스턴스들을 포함하고, 클러스터 내에서 파드가 실행되도록 지원합니다.
리소스 제공
: 애플리케이션이 원활하게 실행될 수 있도록 CPU, 메모리 등 필요한 리소스를 제공합니다.
자동 확장
: 노드 그룹은 클러스터의 리소스 사용량에 따라 자동으로 확장하거나 축소할 수 있습니다.
일관된 환경 제공
: 동일한 설정을 가진 EC2 인스턴스로 구성되어 있어, 일관된 실행 환경을 제공합니다.
노드 그룹은 동일한 설정을 가진 EC2 인스턴스들로 구성되며, 컨테이너를 실행하는 실제 서버 역할을 합니다. EKS는 이 노드 그룹을 자동으로 관리하여, 인스턴스를 필요에 따라 자동으로 추가하거나 제거할 수 있으며, 스케일링 기능을 통해 리소스를 효율적으로 조절합니다.
AWS 콘솔에서 EKS를 선택한 후, 하단에서 노드 그룹을 생성할 클러스터를 선택합니다. 그런 다음 클러스터 > 컴퓨팅 > '노드 그룹 추가' 버튼을 클릭합니다.

1단계에서 노드 그룹 구성을 설정합니다. 우선, 노드 그룹의 이름을 지정합니다.

노드 그룹 구성을 계속 설정하기 전에 노드 IAM 역할을 생성해야 합니다. '권장 역할 생성' 버튼을 선택합니다.
신뢰할 수 있는 엔터티 유형에서 'AWS 서비스'를 선택하고, 사용 사례에서 ‘EC2’가 자동으로 설정된 상태에서 '다음' 버튼을 클릭합니다.

권한 추가에서 자동으로 설정된 상태로 그대로 두고, '다음' 버튼을 클릭합니다.
이름 지정, 검토 및 생성 단계에서 역할 이름과 설명을 입력한 후, '역할 생성' 버튼을 클릭하여 역할을 생성합니다.

IAM 역할을 생성한 후, 노드 그룹 구성 화면으로 돌아가 이전에 생성한 노드 IAM 역할을 선택합니다. 나머지 자동 설정은 그대로 유지하고, '다음' 버튼을 클릭합니다.

2단계에서 컴퓨팅 및 조정 구성 설정을 통해 노드 그룹의 컴퓨팅 구성을 설정합니다.
AMI(Amazon Machine Image) 유형 = 운영체제
인스턴스 유형 = EC2 성능과 기능 (RAM, CPU, 스토리지 용량 등)
용량 유형 On-Demand
: 필요할 때 즉시 실행하고, 사용한 만큼만 요금 내는 일반 방식

노드 그룹 조정 구성에서는 하나의 EC2 인스턴스에 web 컨테이너와 api 컨테이너를 실행할 계획이므로, 원하는 크기와 최소 크기는 1, 최대 크기는 2로 설정합니다.

나머지 설정은 그대로 두고 '다음' 버튼을 누릅니다.
3단계에서는 네트워크 지정을 설정합니다.
클러스터 설정에서 이미 지정한 서브넷이 자동으로 선택됩니다. 확인 후 '다음' 버튼을 클릭합니다.

4단계에서는 검토 및 생성을 확인합니다. 이전에 설정한 내용을 한눈에 확인한 후, '생성' 버튼을 클릭합니다.

약 5분 정도 후, 노드 그룹이 생성된 것을 확인할 수 있습니다.

EC2에서 노드 그룹에서 설정한 AMI와 인스턴스 유형에 맞춰, 지정된 크기인 1개의 인스턴스가 생성된 것을 확인할 수 있습니다.

동일한 VPC에 존재하는 EC2를 통해 EKS 설정을 진행하려 한다.
EKS 클러스터 설정 및 EC2 인스턴스와 EKS 간의 통신은 AWS API와의 상호작용을 위해 HTTPS(443) 프로토콜을 사용하며, 이를 통해 데이터는 암호화되어 안전하게 전송되어 도중에 변조되거나 도청되지 않도록 보장됩니다.
접속하려는 EC2 인스턴스의 아웃바운드 규칙 설정
해당 EC2의 아웃바운드 규칙에서 '아웃바운드 규칙 편집' 버튼을 클릭한다.

HTTPS 443 규칙을 추가하고, '규칙 저장' 버튼을 클릭한다.

아웃바운드 규칙이 추가된 것을 확인할 수 있다.

EKS 클러스터 보안 그룹에 인바운드 규칙을 설정
클러스터 > 네트워킹 > 클러스터 보안 그룹을 선택합니다.

해당 보안 그룹에서 '인바운드 규칙 편집' 버튼을 클릭한다.

HTTPS 443 규칙을 추가하고, '규칙 저장' 버튼을 클릭한다.

인바운드 규칙이 추가된 것을 확인할 수 있다.

[AWS] ECR 이미지를 활용한 EKS 운영 (2)에서 계속 알아보겠습니다.