본문 바로가기
클라우드/AWS

[AWS 플젝 / K8S] EKS와 Kubernetes를 활용해서 컨테이너 배포하는 방법

by cloudgarden 2024. 12. 6.

1. EKS node로 사용되고 있는 EC2의 정보 확인

EC2 누르고 Details에서 IAM role URL 클릭하기

 

 

 

2. 컨테이너화된 애플리케이션을 K8S 클러스터에 배포

(외부에서 애플리케이션에 접근할 수 있도록 설정하기)

 

project 디렉토리 하단에 yaml 파일들을 모아놓을 yaml 디렉터리 생성


deployment와 service yaml 파일 생성

########################################################################

vi deployment.yaml

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
  labels:
    app: web-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: web-app
        image: <account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>:<tag>
        ports:
        - containerPort: 80

########################################################################

 

 

kubectl apply -f deployment.yaml

 

########################################################################

vi service.yaml

 

apiVersion: v1
kind: Service
metadata:
  name: web-app-service
spec:
  type: LoadBalancer
  selector:
    app: web-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

########################################################################

 

서비스 적용

kubectl apply -f service.yaml

=> 이로써 ECR에 저장된 이미지를 기반으로 애플리케이션을 자동으로 관리와 배포가 가능함!!

 

 

LoadBalancer의 외부 IP 확인 가능

kubectl get service web-app-service

 

 

3. ECR에 이미지를 푸시했는 지 확인하기

aws ecr describe-images --repository-name <repository_name> --region <region>

-> Kubernetes에서 latest 이미지를 정상적으로 가져갔음! 정상적으로 이미지가 푸쉬됨

 

 

4. Pod 상태 확인

kubectl get pods