Amazon Elastic Kubernetes Service(EKS)는 AWS에서 제공하는 완전 관리형 Kubernetes 서비스로, 사용자는 인프라 관리 부담을 줄이면서 애플리케이션을 손쉽게 배포하고 관리할 수 있습니다. 이 가이드에서는 AWS에서 EKS 클러스터를 설정하는 단계별 방법을 소개합니다.
1. 기본 요구 사항 확인
EKS 클러스터 설치를 시작하기 전에 다음 사항을 준비합니다:
- AWS 계정: AWS 관리 콘솔에 접근 가능한 계정이 필요합니다.
- IAM 권한: EKS 및 관련 리소스(VPC, EC2, IAM 등)에 대한 권한이 있는 IAM 사용자를 사용해야 합니다.
- AWS CLI 및 kubectl 설치: AWS CLI와 Kubernetes CLI(즉, kubectl)을 로컬 환경에 설치합니다.
- eksctl 설치: EKS 클러스터 생성 및 관리를 위해 eksctl 툴도 설치하는 것이 좋습니다.
2. AWS CLI 로그인
먼저 AWS CLI를 사용해 계정에 로그인합니다. 이 과정에서 AWS IAM 사용자 인증 키(Access Key ID 및 Secret Access Key)가 필요합니다.
aws configure
aws configure 명령어를 입력하고, 사용자 정보를 입력해 로그인합니다.
3. eksctl로 EKS 클러스터 생성
eksctl은 EKS 클러스터를 간편하게 설정할 수 있는 도구로, 기본 설정부터 노드 구성까지 자동으로 생성해 줍니다.
아래 명령어를 사용해 기본 EKS 클러스터를 생성합니다:
eksctl create cluster --name my-eks-cluster --region us-west-2 --nodes 2 --node-type t3.medium
- --name: 클러스터 이름을 설정합니다.
- --region: 클러스터를 생성할 AWS 리전을 지정합니다.
- --nodes: 클러스터에 생성할 노드의 수를 설정합니다.
- --node-type: 노드의 인스턴스 유형을 선택합니다.
이 명령어는 VPC, 서브넷, 보안 그룹 등을 자동으로 생성하며, 클러스터 생성에는 약간의 시간이 소요됩니다.
4. 클러스터 생성 상태 확인
클러스터 생성이 완료되면 kubectl을 통해 클러스터에 연결할 수 있습니다. 다음 명령어로 노드 상태를 확인해 클러스터가 정상적으로 구성되었는지 확인합니다:
kubectl get nodes
노드 목록과 상태가 출력되면 클러스터가 정상적으로 생성된 것입니다.
5. IAM 역할 및 보안 구성
EKS는 IAM 역할을 사용해 클러스터의 리소스 접근을 제어합니다. 필요에 따라 IAM 역할을 생성하고 EKS 클러스터에 연결하여 사용자가 지정한 보안 규칙을 적용합니다.
- eksctl을 사용한 역할 생성:
eksctl create iamidentitymapping --cluster my-eks-cluster --arn arn:aws:iam::<account-id>:role/<role-name> --group system:masters
- 보안 그룹 및 네트워크 설정: EKS에 연결된 노드 그룹을 위한 보안 그룹을 설정해, 노드 간 및 외부 네트워크 접근을 제어합니다.
6. Kubernetes 대시보드 설치 (옵션)
클러스터 관리와 리소스 모니터링을 위해 Kubernetes 대시보드를 설치할 수 있습니다.
- Kubernetes 대시보드 설치:
- kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
- 대시보드에 접근: 대시보드에 접근할 수 있도록 인증 토큰을 생성하고, 로컬에서 포트 포워딩을 설정합니다.http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 에서 대시보드에 접근할 수 있습니다.
- kubectl proxy
7. EKS 클러스터 모니터링 설정 (옵션)
AWS CloudWatch와 EKS를 연동하여 클러스터 상태와 성능을 실시간으로 모니터링할 수 있습니다. AWS Management Console에서 CloudWatch를 설정하여 로그 및 메트릭을 추적하면 클러스터의 성능과 안정성을 관리할 수 있습니다.
8. 기본 애플리케이션 배포 (예: Nginx)
설치가 완료된 EKS 클러스터에 애플리케이션을 배포해 봅니다. 여기서는 간단한 Nginx 웹 서버를 배포합니다.
kubectl create deployment nginx --image=nginx
애플리케이션 배포 후에는 kubectl get pods 명령어로 상태를 확인하고, 로드밸런서를 설정해 외부에서 접근 가능하도록 설정할 수 있습니다.
kubectl expose deployment nginx --type=LoadBalancer --port=80
9. EKS 클러스터 삭제
필요에 따라 클러스터를 삭제하여 비용을 절감할 수 있습니다. 아래 명령어로 eksctl을 사용해 클러스터를 삭제합니다.
eksctl delete cluster --name my-eks-cluster
요약
Amazon EKS는 Kubernetes 클러스터를 쉽게 설정하고 관리할 수 있는 서비스로, 컨테이너화된 애플리케이션의 자동 배포와 확장을 지원합니다. 이 가이드를 따라 EKS 클러스터를 설정하고 애플리케이션을 배포하여 AWS에서 컨테이너 기반 아키텍처를 활용해 보세요. EKS를 통해 하이브리드 클라우드와 온프레미스 환경에서도 일관성 있는 Kubernetes 관리가 가능합니다.