EKS 구축을 위한 환경 구성

엔스마트·2024년 7월 5일

Amazon EKS

목록 보기
1/4

Amazon EKS 클러스터를 효과적으로 관리하기 위해 별도의 EC2 인스턴스를 생성하여 관리 도구를 설치 및 설정합니다.
이 인스턴스는 클러스터 관리 전용으로 사용되며 관리의 편의성과 보안 강화를 위해 독립된 환경에서 운영됩니다.

환경 구성은 Amazon Linux 2023, Ubuntu 24.04, RedHat 9 기준으로 작성되었습니다.

1. EC2 인스턴스 생성

AWS 콘솔에서 EKS 클러스터에 접근하기 위한 EC2 인스턴스를 생성합니다.
생성하고자하는 OS를 선택하고 나머지는 기본 설정을 유지합니다.


2. Tool 설치

생성한 EC2 인스턴스에 접속하여 EKS 인프라를 구성하기 위해 필요한 도구를 설치 및 설정합니다.

2-1. AWS CLI 설치

AWS CLI를 설치하기 전, root 권한을 실행합니다.

sudo -i

Amazon Linux 2023

Amazon Linux 2023의 경우 기본적으로 AWS CLI가 설치되어 있습니다.
설치된 AWS CLI 버전을 확인합니다.

Ubuntu 24.04

AWS CLI 설치할 때 필요한 패키지 설치합니다.

apt install curl unzip

AWS CLI 파일 다운받습니다.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

다운받은 파일의 압축을 해제합니다.

unzip awscliv2.zip

AWS CLI 설치를 위한 스크립트 실행합니다.

./aws/install

AWS CLI가 설치되었는지 확인합니다.

aws --version 

RedHat 9

curl 명령을 사용하여 패키지를 다운받아 awscliv2.zip 으로 저장합니다.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

다운받은 패키지의 압축을 해제합니다.

unzip awscliv2.zip

unzip 패키지가 설치되어 있지 않다면 아래 명령어를 실행한 후 압축을 해제합니다.

yum install unzip -y

설치 프로그램을 실행합니다.
기본적으로 파일은 모두 /usr/local/aws-cli에 설치되고 /usr/local/bin에 심볼 링크가 생성됩니다.

./aws/install

AWS CLI가 설치되었는지 확인합니다.

aws --version 

2-2. Docker 설치

Docker는 컨테이너화된 애플리케이션을 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다.

Docker 설치 전, root 권한을 실행합니다.

sudo -i

root 권한 실행 후, OS에 맞춰 도커를 설치합니다.

Amazon Linux 2023

docker 패키지를 설치합니다.

dnf install docker

Ubuntu 24.04

패키지 목록을 최신 상태로 업데이트합니다.

apt-get update

/etc/apt/keyrings 디렉토리를 생성하여 Docker GPG 키를 저장할 준비를 합니다.

install -m 0755 -d /etc/apt/keyrings

Docker의 GPG 키를 다운로드하여 /etc/apt/keyrings/docker.asc 파일에 저장합니다.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

저장된 GPG 키 파일에 읽기 권한을 부여합니다.

chmod a+r /etc/apt/keyrings/docker.asc

Docker 저장소 정보를 /etc/apt/sources.list.d/docker.list 파일에 추가합니다.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt 패키지 목록을 다시 업데이트하여 docker 패키지를 설치할 준비를 합니다.

apt-get update

Docker CE, Docker CLI, containerd.io 등의 패키지를 설치합니다.

apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

RedHat 9

Red Hat Enterprise Linux (RHEL)은 기본적으로 Docker를 위한 공식 저장소를 제공하지 않습니다.
따라서 Docker를 설치하기 위해서는 Docker의 공식 저장소를 시스템에 추가해야 합니다.

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Docker를 설치합니다.

dnf install docker-ce docker-ce-cli containerd.io

docker 서비스 구동

OS 환경에 맞춰 docker를 설치한 후 서비스를 구동합니다.

systemctl start docker

서비스 구동 후 상태를 확인합니다.

systemctl status docker

시스템 데몬에 docker 서비스를 등록합니다.
enable 설정하면 부팅시 등록된 서비스가 자동으로 시작됩니다.

systemctl enable docker

docker 프로세스 확인합니다.

docker ps

2-3. Kubectl 설치 (version 1.30.0)

kubectl은 쿠버네티스 클러스터에 명령을 내리는 CLI입니다.
kubectl CLI를 사용하면 해당 명령어가 쿠버네티스 API를 호출해 관련 동작을 수행합니다.

kubectl을 설치하기 전, 별도의 k8s 계정을 생성합니다.

k8s 계정 생성

sudo adduser k8s

k8s 계정으로 전환

su - k8s

계정 생성과 패스워드 설정까지 완료한 후 k8s 계정으로 전환하고 kubectl를 설치합니다.

설치 방법은 Amazon Linux 2023, Ubuntu 24.04, RedHat 9 모두 동일합니다.

kubectl 바이너리를 다운로드합니다.

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.0/2024-05-12/bin/linux/amd64/kubectl

바이너리에 실행 권한을 적용합니다.

chmod +x kubectl

적용 전
적용 후
바이너리를 PATH의 폴더에 복사합니다.
kubectl 버전이 이미 설치된 경우 $HOME/bin/kubectl을 생성하고 $HOME/bin이 $PATH로 시작하도록 해야 합니다.

mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH

.bashrc 파일에 $PATH 등록

echo 'export PATH=$HOME/bin:$PATH' >> ~/.bash_profile

정상적으로 설치되었는지 확인합니다.

kubectl version --client

(선택) kubectl checksum

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.0/2024-05-12/bin/linux/amd64/kubectl.sha256
sha256sum -c kubectl.sha256

(선택) kubectl alias 등록

vi ~/.bashrc
alias k='/home/k8s/bin/kubectl'
source ~/.bashrc

2-4. eksctl 설치

eksctl은 EKS 클러스터를 쉽게 생성 및 관리하는 CLI 툴입니다.

설치 방법은 Amazon Linux 2023, Ubuntu 24.04, RedHat 9 모두 동일합니다.

eksctl 설치 전, root 권한을 실행합니다.

sudo -i

eksctl의 최신 릴리스를 다운로드하고 압축 해제합니다.

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

추출된 바이너리를 /usr/local/bin으로 이동합니다.

mv /tmp/eksctl /usr/local/bin

설치가 제대로 되었는지 확인합니다.

eksctl version


3. EC2 IAM Role

EKS 관리를 위해 생성한 EC2 인스턴스에 적용할 IAM Role을 생성해야 합니다.

AWS 콘솔 > IAM 서비스 > 역할 탭을 선택한 후 역할 생성 버튼을 클릭하면 아래와 같은 화면이 나옵니다.

1단계 - 엔터티 유형은 AWS 서비스를, 서비스는 EC2를 선택합니다.

2단계 - 필요한 권한 정책을 추가합니다.

  • AmazonEKSClusterPolicy
  • AmazonEC2ContainerRegistryFullAccess
  • AmazonEKSWorkerNodePolicy

    3단계 - Role 이름을 입력하고 선택한 엔터티 유형과 권한 정책을 확인한 후 Role을 생성합니다.
profile
클라우드 전환, MSA 서비스, DevOps 환경 구축과 기술지원 그리고 엔터프라이즈 시스템을 구축하는 최고 실력과 경험을 가진 Architect Group 입니다.

0개의 댓글