대기업 IT현직자와 함께 클라우드 AWS 구축부터 운영까지 실무 AtoZ 리뷰 (2주차)
2주차 실습과정을 크게 3분류로 나누면
1. EKS 환경구성
2. EKS cluster 생성
3. Nginx 서비스 배포
으로 진행하였습니다.
1주차 프리티어 계정 생성 및 보안 설정
VPC 설정과 ec2 를 이용한 NAT 인스턴스를 생성하였는데요.
2주차 에서는 1주차 세션에서 이어서 진행합니다.
들어가기 앞서 쿠버네티스 관련 공식문서 설명입니다.
강의에 나온대로 쉽게 설명하자면
1. 컨테이너 오케스트레이션 툴
2. 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼 = 컨테이너 관리 툴!
3. Docker가 컨테이너 기반의 가상화를 실현한 플랫폼이라면 Docker Container를 관리하는 것이 Kubernetes
이 멘토님의 설명이였습니다.
여담으로 k8s = ( Kubernetes 첫 K 와 마지막 s 사이의 글자가 8글자라 k8s 라고 알고있습니다)
과제에서는 AWS 에서의 EKS 클러스터 구성을 하여 실습을 진행하였습니다.
EKS 클러스터 구성에 앞서
1주차 과제에서 생성한 NAT 인스턴스 에 EC2 Role 생성 후 부여를 해줍니다.
AdministratorAccess 정책을 연결후 bastion ec2에 연결하였습니다.
EKS 환경 구성을 위해
yum update 확인과
aws cli version 확인을 해줍니다.
Amazon EKS란 무엇입니까? - Amazon EKS
Amazon EKS란 무엇입니까? - Amazon EKS
Amazon EKS란 무엇입니까? Amazon Elastic Kubernetes Service(Amazon EKS)는 Amazon Web Services(AWS)에 Kubernetes 컨트롤 플레인을 설치, 운영 및 유지 관리할 필요가 없는 관리형 서비스입니다. Kubernetes는 컨테이너
docs.aws.amazon.com
공식사이트 입니다.
문서에 나온 대로 eksctl 설치를 진행합니다.
설치가 잘 되었다면
WorkerNode용 Key를 생성해 줍니다.
region 설정 후
.ssh 폴더에서 키 생성해주시면 됩니다.
생성된 공개키를 사용중인 EC2 리전으로 업로드해줍니다
ec2 keypairs 에서 키 업로드를 확인해 줍니다.
이제
eksctl 명령어 이용하여 eks cluster와 workerNode 생성해 주시면 됩니다.
eksctl create cluster --name() \ 클러스터 이름
--version () \ 버전
--region (ap-northeast-2) \ 지역
--nodegroup-name () \ 노드그룹 이름
--node type (t3.medium)\ 노드타입 (무료인 t3)
--nodes 1\
--nodes-min 1 \
--nodes-max 1 \
--ssh-access\
--ssh-public-key ()\ 워크노드 접속에 사용할 키
--managed
aws EKS kubeconfig 업데이트도 진행하여 줍니다.
aws eks update-kubeconfig --region (지역)--name (이름)
생성된 node 확인해줍니다.
kubectl get node
Nginx 서비스 배포를 위해
Nginx deployment 배포합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
공식 사이트의 nginx:1.14.2 도커 이미지를 실행하는 디플로이먼트 명세 .yaml 생성입니다.
kubectl apply –f nginx-deployment.yaml/ 배포
kubectl get pod /
배포후 생성된 파드를 확인하는 명령어 입니다.
이후 서비스 배포를 위해
Nginx -Service.yaml 생성하여 줍니다 (type : loadbalancer)
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 2
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- containerPort: 80
공식 사이트에 기술된 파드를 클러스터에 노출하게 해주는 yaml 파일 명령어입니다.
(실습 과제에서는 과제에 맞게 스펙과 타입등을 조절 하였습니다.)
kubectl apply –f nginx-service.yaml / 배포
kubectl get service /배포된 서비스 확인하는 명령어 입니다.
Nginx Pod 배포된 화면과 생성된 파드를 확인하였습니다.
EKS 클러스터는 시간당 비용이 청구 됩니다. 실습이 끝나고 삭제하시길 권합니다.
kubectl delete –f nginx-service.yaml //nginx-service 삭제
kubectl delete –f nginx-deployment.yaml //nginx-deployment 삭제
콘솔에서 CLB 삭제 확인
EKS cluster와 Node Group 삭제
eksctl delete cluster --region ap-northeast-2 (지역)
--name= (이름)
콘솔에서 EKS cluster와 Node Group 삭제 확인
이상으로 2주차 과제 실습이 종료되었습니다.
3주차 과제 실습으로 뵙겠습니다.