■ Amazon EKS 란?
· Kubernetes를 쉽게 실행할 수 있는 관리형 서비스
· AWS 환경에서 Kubernetes Control-plane 또는 node를 직접 설치, 운영 및 유지할 필요가 없음
· 여러 가용 영역(AZ) 에서 Kubernetes Control-plane을 실행하여 고가용성(HA)를 보장
· 비정상 Control-plane Instance를 자동으로 감지, 교체하며 자동화 된 버전 업그레이드 및 패치를 제공
참고 : https://aws-eks-web-application.workshop.aws/ko/10-intro/200-eks.html
Amazon EKS로 웹 애플리케이션 구성하기
Amazon EKS Amazon EKS에 대하여 Amazon EKS는 Kubernetes를 쉽게 실행할 수 있는 관리형 서비스입니다. Amazon EKS를 사용하시면 AWS 환경에서 Kubernetes 컨트롤 플레인 또는 노드를 직접 설치, 운영 및 유지할 필
aws-eks-web-application.workshop.aws
■ 관리 시스템(k8s-mng-system) 구축
1. aws-cli 관리툴 aws Install
· kubectl -> AWS Instance (k8s-mng-system) 내에서 실행
· AWS 내부 전체를 관리할 수 있어야 한다.
참고 : https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html
Linux에서 AWS CLI 버전 2 설치, 업데이트 및 제거 - AWS Command Line Interface
결과에서 경고가 예상되지만 문제가 되지는 않습니다. 이 경고는 개인 PGP 키(보유한 경우)와 AWS CLI PGP 키 사이에 신뢰 체인이 없기 때문에 발생한 것입니다. 자세한 내용은 Web of trust를 참조하세
docs.aws.amazon.com
1) unzip Install
$ sudo apt-get install -y unzip
2) awscliv2.zip 가져오기
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ ls
---
awscliv2.zip
3) awscliv2.zip 풀기
$ unzip awscliv2.zip
4) aws install
$ sudo ./aws/install
---
You can now run: /usr/local/bin/aws --version
5) aws 버전 확인
$ aws --version
---
aws-cli/2.3.1 Python/3.8.8 Linux/5.4.0-1045-aws exe/x86_64.ubuntu.20 prompt/off
2. eks 툴인 eksctl Install
참고 : https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html
eksctl 명령줄 유틸리티 - Amazon EKS
GitTag 버전은 0.58.0 이상이어야 합니다. 그렇지 않은 경우 터미널 출력에서 설치 또는 업그레이드 오류가 있는지 확인하거나, 1단계의 주소를 https://github.com/weaveworks/eksctl/releases/download/0.58.0/eksctl_L
docs.aws.amazon.com
1)
$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
2)
sudo mv /tmp/eksctl /usr/local/bin
3) eksctl 버전 확인
$ eksctl version
---
0.70.0
3. k8s 관리 툴인 kubectl Install
참고 : https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html
kubectl 설치 - Amazon EKS
Amazon EKS 클러스터 제어 영역과 마이너 버전이 하나 다른 kubectl 버전을 사용해야 합니다. 예를 들어, 1.20 kubectl 클라이언트는 Kubernetes 1.19, 1.20 및 1.21 클러스터로 작업해야 합니다.
docs.aws.amazon.com
1)
$ curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
2) 실행이 가능하도록 실행 Permission 부여
$ chmod +x ./kubectl
3) kubectl을 사용할 수 있는 configuration file 이 저장될 수 있는 디렉터리 생성
$ mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
4) PATH 가 항상 인식되도록 설정
$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
5) kubectl 버전 확인
$ kubectl version --short --client
---
Client Version: v1.19.6-eks-49a6c0
■ Amazon EKS 구축
https://console.aws.amazon.com/iamv2/home#/home
https://console.aws.amazon.com/iamv2/home#/home
console.aws.amazon.com
1. IAM 계정 생성
※ kubectl 관리 시스템 (k8s-mng-system) 이 aws를 관리하려면 권한이 필요
1) dashboard -> user
2) '사용자 추가'
3)
사용자 세부 정보 설정
사용자 이름 : eks-mng-user
AWS 액세스 유형 선택 (체크)
-> 액세스 키 - 프로그래밍 방식 액세스
AWS API, CLI, SDK 및 기타 개발 도구에 대해 액세스 키 ID 및 비밀 액세스 키 을(를) 활성화합니다.
4) 기존 정책 (Attach existing policies directly)
-> administrator 선택
5) 'Create User' 클릭
6) csv 다운로드 - 액세스 ID / 액세스 키 (노출 절대 x, 매우 중요 !!)
2. 관리 시스템(eks-mng-system) 에서 aws를 관리할 수 있도록 생성한 IAM 계정 (eks-mng-user) 등록
1) aws configure
$ aws configure
---
AWS Access Key ID [None]: csv 파일에서 Access Key ID
AWS Secret Access Key [None]: csv 파일에서 Secret Access Key
Default region name [None]: ap-northeast-2
Default output format [None]:
2) 잘 연결 되었는지 확인
$ aws sts get-caller-identity
---
{
"UserId": "---------------",
"Account": "---------------",
"Arn": "---------------"
}
■ Amazon EKS 구성
※ 시간당 0.01USD 소비 !!
1) eksctl 명령어를 실행해서 Amazon EKS 클러스터 구성
$ eksctl create cluster \
--name k8s-demo \
--region ap-northeast-2 \
--with-oidc \
--ssh-access \
--ssh-public-key [EC2 Instance Key] \
--nodes 3 \
--node-type t3.medium \
--node-volume-size=20 \
--managed
- aws 페이지에서 CloudFormation 검색 후 설치 상황 자세히 확인 가능
- --node-private-networking => 워커 노드를 모두 private subnet에 배치 시킴
2) 설치 완료 후
$ kubectl get nodes
3) CLI 명령어 완성 기능 추가
$ source <(kubectl completion bash)
$ echo "source <(kubectl completion bash)" >> ~/.bashrc
※ eks, ec2 모두 요금 부과, 따라서 삭제 하지 않으면 과금될 수 있음
1) 설치한 eks 삭제
$ eksctl delete cluster --name k8s-demo
참고 영상: https://www.youtube.com/watch?v=ZpiCoUP_FB4
'DevOps > Kubernetes' 카테고리의 다른 글
[kubernetes] Argo CD Install (0) | 2021.12.22 |
---|---|
[kubernetes] Helm으로 Jenkins Deploy (1) | 2021.11.12 |
[kubernetes] EKS Cluster 내부에 AWS RDS 구축 (0) | 2021.11.10 |
[Kubernetes] AWS ALB Controller (0) | 2021.11.10 |
[k8s] kubespray 로 k8s Install (0) | 2021.10.23 |