크게 4단계로 나눌 수 있다.
1. EKS Workshop 시작하기
1) Cloud9 Environment (EKS workshop) 생성
2) Kubernetes Tools 설치
3) IAM Role 생성
4) IAM Role 적용
5) IAM 설정 업데이트
2. Eksctl을 이용해 cluster 시작하기
1) eksctl 설치
2) EKS cluster 생성
3) EKS cluster 테스트
3. Helm CLI 설치
1) Helm CLI 설치 전
2) Helm CLI 설치
4. WordPress 설치
1) WordPress 설치
2) WordPress 접속
AWS 가이드가 제일 자세하고 정확하기 때문에 글의 하단에 참고 사이트를 확인하자.
1장. EKS Workshop 시작하기
1. Cloud9 Environment (EKS workshop) 생성
1) Cloud9 시작
가까운 region에서 생성하면 된다.
필자는 us-west-2
에서 생성할 것이다.
Oregon : https://us-west-2.console.aws.amazon.com/cloud9/home?region=us-west-2
Ireland : https://eu-west-1.console.aws.amazon.com/cloud9/home?region=eu-west-1
Ohio : https://us-east-2.console.aws.amazon.com/cloud9/home?region=us-east-2
Singapore : https://ap-southeast-1.console.aws.amazon.com/cloud9/home?region=ap-southeast-1
2) Create environment
[Name environment] -> Next Step
Name : eksworkshop
[Configure settings] -> Next Step -> Create environment
Instance type : t3.small (프리티어면 t2.micro)
언급한 것 외 모두 기본 설정값으로 생성한다.
3) New Terminal
초기에 2분할 되어 터미널이 띄어지는데, 모두 닫고 새로운 터미널을 생성한다.
이렇게 세팅해놓고 시작하자.
2. Kubernetes Tools 설치
1) kubectl 설치
sudo curl --silent --location -o /usr/local/bin/kubectl \
https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/kubectl
sudo chmod +x /usr/local/bin/kubectl
2) awscli 업데이트
sudo pip install --upgrade awscli && hash -r
3) jq, envsubst (GNU gettext utilities), bash-completion 설치
sudo yum -y install jq gettext bash-completion moreutils
4) yaml 프로세싱을 위한 yq 설치
echo 'yq() {
docker run --rm -i -v "${PWD}":/workdir mikefarah/yq yq "$@"
}' | tee -a ~/.bashrc && source ~/.bashrc
* yq : command-line YAML processor, yaml 파일의 jq 또는 sed가 되는 것이 목적
jq : command-line JSON processor
sed : ed 명령어와 grep 명령어 기능의 일부를 합친 명령어
5) 바이너리가 경로와 실행파일에 있는지 확인
for command in kubectl jq envsubst aws
do
which $command &>/dev/null && echo "$command in path" || echo "$command NOT FOUND"
done
설치가 되어있다면,
6) kubectl의 bash 쉘 자동 완성 활성화
kubectl completion bash >> ~/.bash_completion
. /etc/profile.d/bash_completion.sh
. ~/.bash_completion
kubectl completion bash
: bash의 kubectl 완성 스크립트 출력
참고 : https://kubernetes.io/ko/docs/tasks/tools/install-kubectl/
7) AWS ALB Ingress Controller 버전 설정
echo 'export ALB_INGRESS_VERSION="v1.1.8"' >> ~/.bash_profile
. ~/.bash_profile
3. Workspace를 위한 IAM Role 생성
1) 링크 클릭
2) 개체 선택 -> 다음:권한
AWS 서비스
, EC2
를 선택한다.
3) 권한 정책 연결 -> 다음:태그
AdministratorAccess
를 선택한다.
4) 태그 설정(선택) -> 다음:검토
Name : eksworkshop-admin
태그를 추가한다.
4) 검토 -> 역할 만들기
역할 이름 : eksworkshop-admin
설정한다.
4. IAM Role 적용
1) EC2 > 인스턴스
[인스턴스 설정] > [IAM 역할 연결/바꾸기] 를 선택한다.
2) IAM 역할 연결/바꾸기 -> 적용
3번에서 생성한 IAM을 선택한다.
4. IAM 설정 업데이트
1) workspace > 기어 버튼 > AWS Settings > Credentials 비활성화
2) 기존 creadentials 파일 삭제
임시 credentials 파일이 이미 존재할 수도 있기 때문에,
기존 credentials 파일을 삭제한다.
rm -vf ${HOME}/.aws/credentials
3) aws cli 구성
현재 region을 default로 하여 aws cli를 설정해야한다.
export ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
4) AWS_REGION 설정 확인
AWS_REGION이 원하는 region으로 되었는지 확인한다.
test -n "$AWS_REGION" && echo AWS_REGION is "$AWS_REGION" || echo AWS_REGION is not set
되어 있으면, AWS_RESION is [설정한 region]
형식으로 출력된다.
5) 설정값 bash_profile 저장
설정한 ACCOUNT_ID, AWS_REGION을 bash_profile에 저장한다.
echo "export ACCOUNT_ID=${ACCOUNT_ID}" | tee -a ~/.bash_profile
echo "export AWS_REGION=${AWS_REGION}" | tee -a ~/.bash_profile
aws configure set default.region ${AWS_REGION}
aws configure get default.region
6) IAM Role 확인
GetCallerIdentity CLI command를 사용하여 Cloud9 IDE가 올바른 IAM Role을 사용하고 있는지 확인한다.
aws sts get-caller-identity --query Arn | grep eksworkshop-admin -q && echo "IAM role valid" || echo "IAM role NOT valid"
IAM Role이 유효하면,
이 과정에서 NOT valid라고 출력되면, 이후의 과정을 절대 진행하지 말고 돌아가서 이 과정을 다시 확인하자.
이로써 거의 반이 끝났다.
자세한 사항은 AWS 공식 가이드를 참고하면 된다.
참고
AWS : https://www.eksworkshop.com/intermediate/250_cloudwatch_container_insights/
'개발 > AWS' 카테고리의 다른 글
WordPress on Amazon EKS - 시작하기 (2) (1) | 2020.08.07 |
---|---|
EC2, RDS 배포시 주의사항 총정리 (0) | 2020.07.30 |
AWS EC2/RDS Spring Boot 배포 + DNS 포워딩 (4) (0) | 2020.07.30 |
AWS EC2/RDS Spring Boot 배포 + DNS 포워딩 (3) (0) | 2020.07.29 |
AWS EC2/RDS Spring Boot 배포 + DNS 포워딩 (2) (0) | 2020.07.18 |