EKS Anywhere (2/3) - EKS Anywhere Local Cluster 설치

2022. 1. 17. 17:46Cloud Computing/AWS

지난 포스트에서는 AWS EKS Anywhere에 대해 간략하게 소개하였습니다. 이번 포스트에서는 개발 및 테스트의 목적으로 단일 VM위에 EKS Anywhere Local Cluster를 배포하는 방법에 대하여 설명합니다. (테스트는 플랫폼 Architect 그룹에서 제공하는 Private Cloud인 DigitalX에서 수행하였습니다.)

 


사전 VM 준비


Local Cluster 배포를 위한 VM 사양

  • 도커 20.xx
  • 우분투(20.04.2 LTS)
  • 4 CPU 코어
  • 16GB 메모리
  • 30GB의 디스크 여유 공간

 

해당 사양에 맞게 VM을 생성하고 이후 Docker, eksctl, EKS Anywhere, kubectl 순으로 설치를 진행하였습니다.


EKS Anywhere 설치 과정



Docker 설치

sudo apt-get update

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io
#오류 발생시 아래 처럼 특정 버전을 지정
#sudo apt-get install docker-ce=5:20.10.11~3-0~ubuntu-focal docker-ce-cli=5:20.10.11~3-0~ubuntu-focal containerd.io

 


EKSCTL 설치

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

#move to /usr/local/bin
sudo mv /tmp/eksctl /usr/local/bin

#check eksctl version
eksctl version

#eks-anywhere plugin install
export EKSA_RELEASE="0.6.0" OS="$(uname -s | tr A-Z a-z)" RELEASE_NUMBER=2
curl "https://anywhere-assets.eks.amazonaws.com/releases/eks-a/${RELEASE_NUMBER}/artifacts/eks-a/v${EKSA_RELEASE}/${OS}/eksctl-anywhere-v${EKSA_RELEASE}-${OS}-amd64.tar.gz" \
    --silent --location \
    | tar xz ./eksctl-anywhere
sudo mv ./eksctl-anywhere /usr/local/bin/

#check eksctl anywhere version
eksctl anywhere version

 


EKS Anywhere 설치

#생성될 Cluster Name 지정
CLUSTER_NAME=digitalx-cluster

#Cluster 배포 yaml 생성
eksctl anywhere generate clusterconfig $CLUSTER_NAME \
   --provider docker > $CLUSTER_NAME.yaml

#Cluster 생성
eksctl anywhere create cluster -f $CLUSTER_NAME.yaml

 


Kubectl 설치 및 Cluster 정보 등록

#kubectl 설치
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list

apt-get update -y
apt-get install kubeadm kubectl -y

#kubeconfig 설정
export KUBECONFIG=${PWD}/${CLUSTER_NAME}/${CLUSTER_NAME}-eks-a-cluster.kubeconfig

설치 확인

kubectl get ns

EKS Anywhere로 설치한 Cluster의 Namespace 상태


배포 테스트

# 테스트 Pod 배포
kubectl apply -f "https://anywhere.eks.amazonaws.com/manifests/hello-eks-a.yaml"

# 테스트를 위한 Port-forwarding
kubectl port-forward deploy/hello-eks-a 8000:80

 

배포된 테스트 Pod
배포된 테스트 Pod Curl 테스트

 

EKS Anywhere Local Cluster 배포는 CLI 몇 줄로 편리하게 배포가 가능했습니다. 아쉽게도 현재 테스트 목적으로는 단일 VM에 Local Cluster를 배포하는 것이 한계이지만 AWS는 22년에 EKS Anywhere가 베어메탈에 설치 가능하도록 지원할 계획이 있기 때문에 향후에는 다수의 Worknode를 기반으로 테스트 및 운영 환경 구축이 가능해질 것으로 생각됩니다.

 


다음 포스트에서는 EKS Connector를 사용하여 이번 포스트에서 배포된 Local Cluster와 GKE, Kubeadm으로 배포된 Cluster를 AWS Console에서 통합 조회하는 방법에 대하여 알아보겠습니다.