MSA 설계 구현부터 AWS 배포까지 - 4. AWS 환경설정
로컬 환경에서 테스트가 끝났다면, AWS에 배포할 준비를 시작한다.
액세스 키 만들기
AWS 리소스(EKS, ECR 등)에 접근하려면 AWS의 IAM 서비스에서 액세스키를 생성해야 한다.
AWS 접속 및 로그인 후

[서비스] 탭에서 IAM을 검색한다.

IAM 화면 좌측에서 [사용자]를 클릭한 후
사용자가 없을 경우 [사용자 추가] 후
[사용자 이름]을 클릭한다.

[보안 자격 증명] 탭에서, [액세스 키 만들기] 버튼을 통해 액세스 키를 생성한다.

추후 aws 설정을 위해 [리전 코드], [액세스 키 ID], [비밀 액세스 키] 세 가지 정보를 따로 저장해놓는다.
AWS CLIENT 설치
로컬 PC에서 aws 서비스를 제어하기 위해서 AWS Client를 설치한다.
docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-windows.html
위 주소로 접속하여

내 PC환경에 맞는 파일을 다운로드한다.

다운로드된 파일을 설치한다.


cmd에서 aws 명령어가 정상 작동하는지 확인한다.

AWS CONFIGURE

aws configure 명령어를 통해 로컬에 액세스키 정보를 등록한다.

위에서 따로 저장한 액세스 키 정보를 입력한다.
AWS Access Key ID [None]: 액세스 키 입력
AWS Secret Access Key [None]: 비밀 액세스 키 입력
Default region name [None]: 리전 코드 입력
Default output format [None]: json 입력
EKSCTL 설치
EKS(Elastic Kubernetes Service)를 로컬에서 제어하기 위해서는 EKSCTL을 설치해야 한다.
EKSCTL을 설치하기 위해서는 chocolatey라는 소프트웨어 설치 툴을 먼저 설치한다.
Windows PowerShelll을 관리자 권한으로 실행하여

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
위 명령어를 수행한다.
choco -v
명령어로 버전이 조회된다면 정상 설치된 것이다.

이제 cmd에서
chocolatey install -y eksctl
명령어로 eksctl을 설치한다.
EKS 클러스터 생성
드디어 EKSCTL을 통해서 Cluster를 생성할 수 있게 됐다.
Cluster를 생성하는 명령어는 다음과 같다.
eksctl create cluster --name [클러스터명] --version [EKS 버전] --nodegroup-name standard-workers --node-type [노드의 티어명] --nodes [생성할 노드 개수] --nodes-min [최소 노드 개수] --nodes-max [최대 노드 개수] |
ex) eksctl create cluster --name kdh-cluster01 --version 1.15 --nodegroup-name standard-workers --node-type t3.medium --nodes 1 --nodes-min 1 --nodes-max 3
--name kdh-cluster01 => kdh-cluster01라는 이름으로 클러스터가 생성된다.
--version 1.15 => eks의 버전을 1.15로 설정한다. (2020. 07월 현재 1.14 / 1.15 / 1.16 버전 지원)
--node-type t3.medium => 물리적인 자원을 t3.medium 타입으로 지정한다.
--nodes 1 --nodes-min 1 --nodes-max 3 => 생성 시 노드 개수는 1개, 최소 1개, 최대 3개를 사용하도록 설정한다.

cmd에서 위 명령어를 수행한다.
cluster 생성까지는 약 20분 정도의 시간이 소요된다

cluster가 실제로 생성됐는지 확인을 하기 위해서
AWS 서비스에서 eks를 검색하여 접속한다.

설정한 이름으로 클러스터 생성이 완료됐다.
KUBECTL 설치
EKS(Elastic Kubernetes Service)를 컨트롤하기 위해서는 로컬에 kubectl을 설치해야 한다.
kubernetes.io/ko/docs/tasks/tools/install-kubectl/
위 주소에 접속하여

[이 링크]를 클릭하면 다운로드가 진행된다.

압축을 풀면 exe파일이 생성된다.

cmd에서 kubectl.exe 파일이 설치된 경로로 이동한 후

kubectl.exe를 실행하면 정상 작동한다.
하지만 kubectl 명령어 실행 시 마다 이 경로를 참조하기는 힘드므로
[환경 변수]에 kubectl.exe 파일 경로를 등록한다.

변수 이름은 [KUBECTL_HOME]
변수 값은 kubectl.exe 파일이 있는 [폴더 경로]를 입력한다.
변수 이름: KUBECTL_HOME
변수 값: C:\msa\kubectl

시스템 변수 Path를 편집한다.
%KUBECTL_HOME% 경로를 추가한다.

cmd에서 kubectl version --short --client 명령어를 수행해 본다.
설치된 버전이 표시되는지 확인한다.
EKS 클러스터 접속정보 설정
위에서 생성한 클러스터에 접속할 정보를 설정한다.

로컬에 eks 토큰을 생성한다.
aws eks --region [리전 코드] update-kubeconfig --name [클러스터명]
ex) aws eks --region ap-northeast-2 update-kubeconfig --name kdh-cluster01
위 명령어를 수행하면 로컬에 토큰 정보가 저장된다.
로컬에는 여러 개의 eks 토큰 정보를 저장할 수 있다.
하지만 한 번에 한 개의 eks에만 접속할 수 있다.

kubectl config current-context
위 명령어로, 현재 접속한 eks 정보를 확인할 수 있다.

kubectl get all
정상적으로 접속이 됐는지 확인해보기 위해
위 명령어를 수행해 보자.
위 이미지와 같이 service 하나가 조회된다면, 정상적으로 연결이 된 것이다.