brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 17. 2021

EKS 1탄-1. Cloud9 환경  설정

실습 1탄 = 1/7

공부법

시간 절약하기 위해 이론을 보고 난 후 실습하자.

이론 내용을 실습1 전체를 한번 쭉 본다. = 어떤 내용을 얼마나 공부해야 하는지 알수 있다.

두 번째 보며 이해한다. = 내용을 이해 한다.

몰아서 한번 실습한다.  = 실습 비용이 나오므로 몰아서 하는 것을 추천한다.




목표

AWS EKS  설치를 위한 aws cloud9 환경  설정법을 알아보자.

(선택) 일반  EC2에서도 툴을 설치해  EKS 클러스터 생성환경을 구축할 수 있다.



개발 환경 구성


구성 1

개발자 -------cloud9 (도커설치, 도커 파일)----------(올리기)------ECR



구성 2

개발자 -------cloud9 (도커설치, 도커 파일)----------(올리기)--------Git------(올리기)--------ECR---EKS


출처 https://aws.amazon.com/ko/blogs/devops/build-and-deploy-to-amazon-eks-with-amazon-codecatalyst/



<1>  EKS 설치를 위한 Cloud9 생성 (선택)

<2> 툴 설치 (필수)

<3>  Cloud9 대신  EC2 만들어 사용하기 (선택)- 수동

<4>  다음 = 실습 2. 컨테이너 생성

<10> (EKS 실습 1탄)  - 애플리케이션




<1>  EKS 설치를 위한 Cloud9 생성 (선택)


명령 서버 Cloud9를 1대 생성하자.

해당 서버에 Admin-role을 부여하여  EKS 클러스터를 만들자.

Cloud9에서 기존 크래디셔널은 제거해야 한다.

Cloud9를 편의상 Public Subnet에 생성한다.

eksctl을 설치해 클러스터를 생성한다.

kubectl을 설치해 pod 등을 생성한다.


명령서버를 만들고, 명령서버에 EKS 생성권한을 주자.

role을 만들어 명령서버에 권한을 주는 방법이 있다.

또는 access-key와 Secret-key를 생성해 해당 권한을 사용하는 방법이 있다.

여기서는 role을 만들어 명령서버에 권한을 주는 방법을 사용해 보자.



1

AWS 콘솔 로그인

https://console.aws.amazon.com/console/home


리전은 서울리전으로 하자.

또는 us-west-2 오래곤으로 함



2

role 생성

iam  > create role  > AWS 서비스 > EC2 >   AdministratorAccess > 다음 > 역할 이름

eks-admin



3

Cloud9  만들어 보자!!

Cloud9 연결


seo-mariogame-dev-c9

// seo사용자의 마리오게임 개발 cloud9

t3.medium (변경) = Cloud9에서 테스트시 사양이 좋아야 빠름

아마존 리눅스 2  (디폴트)

AWS  System Manager로 생성 (디폴트)

생성


public subnet에 설치



4

웹콘솔 

EC2에 eks-admin  role  부여

aws-cloud9-seo-mariogame-dev

EC2 > 오른마우스 보안 > iam 역할수정 > eks-admin   > iam 역할 업데이트



5

Cloud9 실행.

 

콘솔 > 오른쪽 위 톱니모양  >  AWS Settings > Credentials  > AWS managed temporary credentials  비활성화로 변경

// 기존 권한을 제거하고  새로 부여한 role권한을 사용하도록 한다.



6

현재 자격증명 확인하자.

role을 사용하는가?


aws sts get-caller-identity --query Arn | grep eks-admin

assumed-role/eks-admin/i-00fec51ff756



7

기존 자격증명도 제거 (선택) - 위에 자격 증명 변경이 안되었을 경우 실행

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




<2> 툴 설치 (필수)


1

한 번에 설치하자


#!/bin/bash

hostnamectl --static set-hostname eksctl-host



sudo su -


# Install tools

yum -y install git tree tmux jq lynx htop


# Install aws cli v2

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

complete -C '/usr/local/bin/aws_completer' aws



# Install eksctl

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

mv /tmp/eksctl /usr/local/bin

eksctl version



# Install kubectl v1.25

curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.25.7/2023-03-17/bin/linux/amd64/kubectl


install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl




# Source bash-completion for kubectl

source <(kubectl completion bash)

echo 'source <(kubectl completion bash)' >>~/.bashrc 

echo 'alias k=kubectl' >> ~/.bashrc

echo 'complete -F __start_kubectl k' >>~/.bashrc



# Install kubens kubectx

git clone https://github.com/ahmetb/kubectx /opt/kubectx

ln -s /opt/kubectx/kubens /usr/local/bin/kubens

ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx



# Config convenience

echo 'alias vi=vim' >> /etc/profile

echo "sudo su -" >> /home/ec2-user/.bashrc



# Change localtime

sed -i "s/UTC/Asia\/Seoul/g" /etc/sysconfig/clock

ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime



# bash

sudo yum install -y bash-completion





또는  


아래 내용은 하나씩 설치하는 법


1.

aws cli 설치

sudo pip install --upgrade awscli

aws --version


2

kubectl 설치

sudo curl -o /usr/local/bin/kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/kubectl


sudo chmod +x /usr/local/bin/kubectl

kubectl version --client=true --short=true



3

jq 설치

json형식을 다루는 util

sudo yum install -y jq



4

bash관련 유틸 설치

sudo yum install -y bash-completion



5

eksctl 설치


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


eksctl version




참고

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html




6

동작 확인


s3 버킷 만들어보기~  (권한 테스트)  (선택)


aws s3 mb s3://sdadad2121

make_bucket: sdadad2121


aws s3 ls  |grep sda*

2021-06-17 12:55:27 sdadad2121


s3 삭제하기

aws s3 rm s3://sdadad2121




7

기타 리전등 변수로 등록하기 =  추후 작업을 쉽게 하기 위해


현재 리전을 디폴트로 설정


// IDMS 가 디폴트로 disable 되면서 조회 안됨.

export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')



// Console 화면 오른쪽에서 Account id 확인


export ACCOUNT_ID=476286675138

echo "export ACCOUNT_ID=${ACCOUNT_ID}" | tee -a ~/.bash_profile   


export AWS_REGION=ap-northeast-2

echo "export AWS_REGION=${AWS_REGION}" | tee -a ~/.bash_profile   

aws configure set default.region ${AWS_REGION}

aws configure get default.region

echo ${AWS_REGION}


// 리전 정보 확인



8

리전 변경 필요시

export AWS_REGION=us-west-1

export AWS_REGION=us-west-2


US West (N. California)us-west-1

US West (Oregon)us-west-2






10

aws configure로  환경 설정  (선택)

aws configure

access-key나 secret key가 없어도 된다.

이미 ec2에 admin role이 부여되어 있기 때문이다.





<3>  Cloud9 대신  EC2 만들어 사용하기 (선택)- 수동


AWS clolud9를 사용하기 싫다면 , 그냥 만든 EC2에서 사용하자.

동일하게 Role을 만들어, EC2에 부여하고 사용하면 된다.

설정법은  Cloud9 과 동일하다.



1

role생성

IAM > role  >  eks-admin-role   admin권한



2

EC2 생성?

아마존 리눅스로 설치한다.  기본 AWS 유틸이 설치되어 있다.

Auto-assign Public iP  Enable

IAM role  =  1번에서 생성한 role을 지정한다.



3

EC2 로그인?


sudo su -

유틸 설치


or



하나씩 설치해 보기


4

# tree 보는 유틸, json지원 유틸 등

yum -y install tree tmux jq



kops로 쿠버네티스 설치하는 경우 필요한 유틸


curl -Lo kops https://github.com/kubernetes/kops/releases/download/v1.20.0/kops-linux-amd64

chmod +x kops

mv kops /usr/local/bin/kops

kops version

Version 1.20.0






<4>  다음 = 실습 2. 컨테이너 생성


다음 컨테이너 이미지 연습해 보자

https://brunch.co.kr/@topasvga/1651




<10>  (EKS 실습 1탄)  - 애플리케이션


https://brunch.co.kr/@topasvga/1883


참고 사이트

https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR


https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/en-US



https://brunch.co.kr/@topasvga/1679



감사합니다.



                    

매거진의 이전글 (몰아보기) 1탄-EKS 실습1탄-애플리케이션
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari