EKS

EKS 클러스터 생성부터 서비스 배포까지 2. EKS 환경 세팅하기

Hyeon Cloud 2023. 11. 22. 21:09

목차

EKS 클러스터 생성부터 서비스 배포까지 1. 쿠버네티스, EKS 기초

EKS 클러스터 생성부터 서비스 배포까지 2. EKS 환경 세팅하기

EKS 클러스터 생성부터 서비스 배포까지 3. eksctl을 사용하여 EKS실행하기, 노드그룹 설정하기

EKS 클러스터 생성부터 서비스 배포까지 4. K8s 대시보드 배포

EKS 클러스터 생성부터 서비스 배포까지 5. 마이크로서비스 배포

EKS 클러스터 생성부터 서비스 배포까지 6. HELM

Cloud9 실행하기

Cloud9 콘솔로 이동하여 환경을 생성합니다.

이름과 유형을 설정합니다.

네트워크를 설정합니다. EKS 워커노드가 위치할 VPC와 동일한 Public Subnet에 생성합니다.

IDE에 접속합니다.

VSCode와 비슷한 UI의 웹 IDE가 표시됩니다

SSH 키 생성하기

워커노드 인스턴스에서 ssh 액세스하는데 필요한 키를 생성합니다.

ec2콘솔 - 네트워크 및 보안 - 키페어로 이동합니다.

키페어를 생성합니다.

이름을 설정하고 생성을 선택합니다.

다운받아진 .pem키는 소중히 보관합니다. 분실시 복구가 불가능합니다.

쿠버네티스 도구(kubectl) 설치

kubectl 설정을 위해 ~/.kube 디렉토리를 생성합니다

mkdir -p ~/.kube

kubectl을 설치합니다.

curl -LO "<https://dl.k8s.io/release/$>(curl -L -s <https://dl.k8s.io/release/stable.txt>)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client

jq를 설치합니다.

sudo curl -L <https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64> -o /usr/local/bin/jq
sudo chmod a+x /usr/local/bin/jq
jq -V

실습 서비스 레포지토리 클론

cd ~/environment
git clone <https://github.com/brentley/ecsdemo-frontend.git>
git clone <https://github.com/brentley/ecsdemo-nodejs.git>
git clone <https://github.com/brentley/ecsdemo-crystal.git>

IAM Role 생성

AWS서비스로 EC2를 선택하고 AdministratorAccess 가 부여된 롤을 생성합니다.

IAM콘솔로 이동하여 역할 선택후 역할 만들기를 선택합니다.

AWS 서비스 - EC2 - EC2 선택하여 다음으로 넘어갑니다.

권한 정책으로 AdministartorAccess, AmazonSSMManagedInstanceCore, AWSCloud9SSMInstanceProfile를 선택합니다.

이름 지정 후 생성합니다.

EC2 인스턴스로 이동 - Cloud9 인스턴스에 대해 작업 - 보안 - IAM역할 수정 으로 이동합니다.

생성한 IAM Role로 변경합니다.

워크스페이스에 IAM 업데이트

설정으로 들어가 AWS Settings를 선택한 후에 AWS managed temporary credentials 설정을 끕니다.

혹시모를 임시 자격증명파일도 제거합니다.

rm -vf ${HOME}/.aws/credentials

현재 리전을 기준으로 aws-cli를 구성합니다.

export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
echo "export AWS_REGION=${AWS_REGION}" >> ~/.bash_profile
aws configure set default.region ${AWS_REGION}
aws configure get default.region

aws-cli로 iam role을 가져옵니다.

INSTANCE_PROFILE_NAME=`basename $(aws ec2 describe-instances --filters Name=tag:Name,Values=aws-cloud9-${C9_PROJECT}-${C9_PID} | jq -r '.Reservations[0].Instances[0].IamInstanceProfile.Arn' | awk -F "/" "{print $2}")`
aws iam get-instance-profile --instance-profile-name $INSTANCE_PROFILE_NAME --query "InstanceProfile.Roles[0].RoleName" --output text

get-caller-identity로 출력한 결과와 같은지 비교합니다.

aws sts get-caller-identity

ROLE_NAME 변수를 설정합니다.

echo "export ROLE_NAME=hmkim-eks-role" >> ~/.bash_profile
source ~/.bash_profile