Always-Try(정보보안 및 일상)

EKS Starter - 1. eksctl을 이용한 AWS EKS 클러스터 설치 본문

AWS

EKS Starter - 1. eksctl을 이용한 AWS EKS 클러스터 설치

Always-Try 2021. 9. 1. 23:23
https://www.udemy.com/course/amazon-eks-starter-kubernetes-on-aws/ 참고

 

 

1. EKS 아키텍쳐 오버뷰

먼저 AWS EKS Architecture의 관리 주체는 다음과 같이 나눌 수 있다. 

https://www.udemy.com/course/amazon-eks-starter-kubernetes-on-aws/ 참고
https://www.udemy.com/course/amazon-eks-starter-kubernetes-on-aws/ 참고

Master Node와 Etcd의 관리(ex. 오토스케일링)는 AWS에서 하고 사용자는 워커노드에 대해서만 관리하면 된다.

 

 

2. AWS EKS 요금

생성한 각 Amazon EKS 클러스터에 대해 시간당 0.10 USD를 지불해야 한다. 그리고 EKS 클러스터 이외에 인스턴스, EBS, Load Balance 등등 추가 비용이 나갈 수 있다. (자세한 건 공식 홈페이지 참고 https://aws.amazon.com/ko/eks/pricing/ )

 

 

3. IAM 권한

실습을 위해 아래 권한 추가하면 되는데 필자는 개인 테스트 계정에서 진행하니까 그냥 Administrator 계정으로 진행 하겠다. 당연하겠지만 실제 환경에서는 별도의 IAM 계정 및 권한을 부여하는 것이 좋다.

  - AmazonEC2FullAccess

  - IAMFullAccess

  - AmazonVPCFullAccess

  - CloudFormation-Admin-policy (CloudFormation all 권한으로 별도 생성)

  - EKS-Admin-policy (EKS  all 권한으로 별도 생성)

 

 

4. 키 페이 생성

앞으로 생성할 인스턴스 접속을 위한 키페어를 생성한다. 

 

 

5. IAM 사용자 Access 생성

테스트에 사용할 IAM 사용자들 생성하고 액세스키를 생성한다. 참고로 액세스키 생성 시에 확인할 수 있는 Secret Access Key는 분실 시 절대 복구가 불가능하므로 잘 보관하자.

 

 

6. Command Line CLI 툴 설치

EKS를 이용하기 위해 아래와 같이 3가지 Commandline cli tools을 설치한다. 

필자는 프리티어 우분투 18 버전의 인스턴스를 하나 생성해서 거기에 설치해줬다.

- aws cli (AWS 자체 CLI)

 . pip3 install --user awscli (사용자 환경에 따라 바로 설치가 안될수 있음)

 . 사용자홈폴더/aws/credentials 에 Access Key Secret Key 세팅

 . 이후 ssh 재접속 후 aws --version 명령어로 확인

 

 - eksctl (AWS EKS 운영)

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

 . sudo mv /tmp/eksctl /usr/local/bin

 . eksctl version 로 설치 확인

 

 - kubectl(k8s API와 통신하기 위함)

 . apt-get install -y apt-transport-https

 . curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - 

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

 . sudo apt-get update

 . snap install kubectl --classic (이 부분은 강의에 있는 명령어가 실패해서 변경함)

 . kubectl version --short --client 로 확인

 

 

7. eksctl로 EKS 클러스터 생성하기

eksctl를 참고한다. 그리고 기본적인 정보는 아래와 같으며, Cloudformation으로 생성하기 위해 eks-course.yaml을 생성한다. yaml 파일을 통해 생성되는 기본 정보는 다음과 같다.

- initial cluster

 . region: ap-northeast-2 

 . one nodegroup

 . 3 worker nodes, type t3.micro

 . ssh access

여기서 매우 강조하는 부분은 eksctl이 자동으로 1개의 VPC를 만들고 2개의 가용 영역에 2개의 서브넷을 만든다는 것이다. yaml에는 VPC 생성이나 서브넷 생성 관련 된 코드가 없는데, 자동으로 만들어지는 것일까? 그렇다고 한다.  참고로 별도로 가용영역과 VPC에 대한 파라미터를 지정하지 않으면 랜덤하게 가용영역과 VPC를 선택한다고 한다. 파라미터 정보는 eksctl.io/usage/cpv-networking/을 참고해라. 일단 한번 진행해보자. (-> 결과. 3개의 가용영역에 각각 2개의 서브넷이 생성된다. 총 6개)

 

 . time eksctl create cluster -f eksctl/eks-course.yaml (명령어 입력 시 IAM 권한이 잘못되었다고 하여 일단 aws configure 명령어로 다시 설정해주고 aws configure list로 확인 후 다시 명령어를 실행하니 성공했다. 필자는 25분 소요 됨. eksctl 앞에 time 명령어를 주면 실행이 완료된 이후에 소요 시간을 측정할 수 있는 것 같다.)

 

위 명령어를 실행하면 다양한 OUTPUT들이 쉘에 표시된다. 기다리는 동안 한번씩 읽어보자.

 

그리고 아래 명령어로 생성된 노드에 대한 기본적인 확인이 가능하다.

. kubectl get nodes

 

생성된 클러스터 관련 더욱 자세한 내용을 보려면 AWS 콘솔에서 EKS, Cloudformation, 인스턴스, VPC, 서브넷 등등의 서비스들을 확인해보면 된다.

 

 

여기까지하면 기본 클러스터 생성 실습은 완료된 것이다. 

 

이후에 테스트 겸 Cloudformation 스택 삭제가 잘 되는지 테스트 해봤는데 삭제가 잘 된다.

 

이후 다시 다시 클러스터 생성용 yaml을 실행시키고 본 실습은 끝낸다.

Comments