AWS

대기업 IT현직자와 함께 클라우드 AWS 구축부터 운영까지 실무 AtoZ 리뷰 (2주차)

PD i 2024. 5. 9. 11:13

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주차 과제 실습으로 뵙겠습니다.