클라우드/AWS

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

cloudgarden 2024. 12. 6. 20:57

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