01 AWS Cloud9을 통한 실습 환경 구축

shin·2023년 6월 13일
0

Kubernetes

목록 보기
4/12
post-thumbnail

Amazon EKS로 웹 애플리케이션 구축하기

1. AWS Cloud9으로 실습 환경 구축

  • 실습은 클라우드 기반 IDEAWS Cloud9을 통해 진행함
  • 브라우저만으로도 코드를 작성, 실행 및 디버깅할 수 있는 IDE

실습 환경 구축 순서

  1. AWS Cloud9으로 IDE 구성
  2. IAM Role 생성
  3. IDE(AWS Cloud9 인스턴스)에 IAM Role 부여
  4. IDE에서 IAM 설정 업데이트

1) AWS Cloud9으로 IDE 구성

  • AWS Cloud9 환경 생성

2) IAM Role 생성

  • IAM Role : 특정 권한을 가진 IAM 자격 증명
  • Administrator access 정책을 가진 IAM Role을 생성하여 AWS Cloud9에 붙임

3) IDE(AWS Cloud9 인스턴스)에 IAM Role 부여

  • AWS Cloud9 환경은 EC2 인스턴스로 구동되기 때문에, EC2 콘솔에서 AWS Cloud9 인스턴스에 방금 생성한 IAM Role을 부여함

4) IDE에서 IAM 설정 업데이트

  • AWS Cloud9의 경우 IAM credentials를 동적으로 관리하기 때문에 해당 credentials는 EKS IAM authentication과 호환되지 않아서 이를 비활성화한 후에 IAM Role을 붙여야 함
  • Credentials 항목에서 AWS managed temporary credentials 설정을 비활성화
  • 기존 자격 증명 파일 제거 및 IAM Role 확인

2. AWS CLI

1) AWS CLI 업데이트

  • AWS Command Line Interfacecommand-line shell의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 툴
  • AWS Cloud9는 기본적으로 AWS CLI가 설치되어 있음
  • AWS CLI 버전을 2.x로 업그레이드
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
export PATH=/usr/local/bin:$PATH
source ~/.bash_profile
  • 버전 확인 완료

3. kubectl 설치

1) kubectl 설치하기

  • kubectl은 쿠버네티스 클러스터에 명령을 내리는 CLI

  • 쿠버네티스는 오브젝트 생성, 수정 혹은 삭제와 관련된 동작을 수행하기 위해 쿠버네티스 API를 사용함

    • 이때 kubectl CLI를 사용하면 해당 명령어가 쿠버네티스 API를 호출해 관련 동작을 수행함
  • 배포할 Amazon EKS 버전과 상응하는 kuberctl 설치

sudo curl -o /usr/local/bin/kubectl  \
   https://s3.us-west-2.amazonaws.com/amazon-eks/1.23.13/2022-10-31/bin/linux/amd64/kubectl
sudo chmod +x /usr/local/bin/kubectl
  • 최신 버전 설치 확인 완료

4. jq, Git, Python, PIP 설치

1) jq 설치

  • jqJSON 형식의 데이터를 다루는 커맨드라인 유틸리티
  • jq 설치 명령어
sudo yum install -y jq

2) bash-completion 설치

  • Bash 쉘에서 kubectl completion scriptkubectl completion bash 명령어를 통해 생성할 수 있음
  • 쉘에 completion script를 소싱하면 kubectl 명령어의 자동 완성을 가능하게 만들 수 있는데, completion script는 bash-completion에 의존하기 때문에 설치가 필요함
sudo yum install -y bash-completion

3) Git 설치

https://git-scm.com/downloads

4) Python 설치

  • CDK for Python을 이용하기 때문에 설치가 필요하지만 cloud9 환경에는 기본적으로 설치가 되어 있기 때문에 버전 확인만 진행함

5) PIP 설치

  • Python의 패키지들을 설치하고 관리하는 매니저
  • 일정 버전 이상의 Python에 기본적으로 설치되어 있기 때문에 확인만 진행함
  • CodeCommit을 이용하기 위해 9.0.3 버전 이상의 pip가 필요하기 때문에 업데이트 진행
curl -O https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py --user

5. eksctl 설치

  • eksctl : EKS cluster를 쉽게 생성 및 관리하는 CLI tool
    • Go 언어로 쓰여 있으며 CloudFormation 형태로 배포됨
  • 최신의 eksctl 바이너리 다운로드 후 바이너리를 /usr/local/bin으로 이동
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv -v /tmp/eksctl /usr/local/bin
  • 설치 여부 확인 완료

6. cdk 설치

  • CI/CD 파트에서 사용될 자원을 배포하기 위해 CDK를 설치
  • CDK 설치
npm install -g aws-cdk
  • 정상 설치 여부 확인 완료

7. AWS Cloud9 추가 세팅

  • 현재 실습이 진행되고 있는 리전을 기본 값으로 하도록 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}" | tee -a ~/.bash_profile
    
aws configure set default.region ${AWS_REGION}
  • 설정한 리전 값 확인
  • 현재 실습을 진행하는 계정 ID를 환경 변수로 등록
export ACCOUNT_ID=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.accountId')

echo "export ACCOUNT_ID=${ACCOUNT_ID}" | tee -a ~/.bash_profile
  • 도커 이미지를 빌드하는 동안 용량 부족 이슈가 발생할 수 있기 때문에 디스크 사이즈를 증설
wget https://gist.githubusercontent.com/joozero/b48ee68e2174a4f1ead93aaf2b582090/raw/2dda79390a10328df66e5f6162846017c682bef5/resize.sh
sh resize.sh
  • 파일 시스템에 늘어난 볼륨 크기가 반영되었는지 확인
profile
Backend development

0개의 댓글