카테고리 없음

📌 EKS에서 Deployment란?

idea9329 2025. 3. 16. 20:57
반응형

 

EKS(Amazon Elastic Kubernetes Service)에서 Deployment 애플리케이션을 배포하고 관리하는 Kubernetes의 컨트롤러 객체 중 하나야.

🔹 Deployment의 역할

  1. 애플리케이션 배포 (Deploying Applications)
    • 컨테이너화된 애플리케이션(Pod)을 Kubernetes 클러스터에 배포해.
  2. 자동화된 업데이트 (Automated Updates)
    • 새로운 버전의 애플리케이션을 배포하면서, 기존 버전을 점진적으로 교체(롤링 업데이트)하거나 빠르게 롤백할 수 있어.
  3. 셀프힐링(Self-Healing)
    • 장애가 발생한 Pod을 자동으로 다시 시작해서 애플리케이션을 안정적으로 유지해.
  4. 수평 확장(Scaling)
    • 필요에 따라 Pod 개수를 늘리거나 줄일 수 있어(수동/자동 조정 가능).

🔹 Deployment 구조

Deployment는 기본적으로 ReplicaSet을 관리하면서 Pod을 배포하는 구조야.

Deployment → ReplicaSet → Pod
  • Deployment: 원하는 애플리케이션 상태를 정의하고 관리하는 최상위 객체.
  • ReplicaSet: Deployment가 생성하는 객체로, 원하는 수의 Pod을 유지.
  • Pod: 실제 애플리케이션 컨테이너가 실행되는 단위.

🔹 Deployment YAML 예제

아래는 Nginx 웹 서버를 3개의 복제본(Pod)으로 배포하는 Deployment 예제야.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  labels:
    app: nginx
spec:
  replicas: 3  # 실행할 Pod 개수
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest  # 사용할 컨테이너 이미지
          ports:
            - containerPort: 80

📌 주요 속성 설명

  • replicas: 3 → Pod을 3개 실행.
  • selector.matchLabels → 특정 라벨을 가진 Pod을 관리.
  • template.spec.containers → 실행할 컨테이너를 정의.

🔹 Deployment 배포 & 관리 명령어

EKS(Kubernetes)에서 Deployment를 생성하고 관리하는 기본적인 kubectl 명령어는 다음과 같아.

1️⃣ Deployment 생성

kubectl apply -f deployment.yaml

2️⃣ Deployment 상태 확인

kubectl get deployments

3️⃣ Pod 목록 확인

kubectl get pods

4️⃣ Deployment 수정

Deployment를 업데이트하려면 YAML을 수정한 후 다시 적용하면 돼.

kubectl apply -f deployment.yaml

5️⃣ 롤링 업데이트(버전 업데이트)

kubectl set image deployment/my-nginx nginx=nginx:1.19

6️⃣ 롤백 (이전 버전으로 되돌리기)

kubectl rollout undo deployment my-nginx

7️⃣ Deployment 삭제

kubectl delete deployment my-nginx

🔹 Deployment vs StatefulSet vs DaemonSet 차이점

유형설명사용 예제

Deployment 일반적인 배포 방식. 필요 시 Pod 개수를 조정 가능 웹 서버, API 서버
StatefulSet 상태가 중요한 애플리케이션을 위한 배포 방식 데이터베이스 (MySQL, MongoDB)
DaemonSet 모든 노드에 하나의 Pod을 배포하는 방식 로그 수집, 모니터링 에이전트

✅ 결론

EKS에서 Deployment는 컨테이너화된 애플리케이션을 배포하고, 업데이트 및 확장하는 핵심 기능이야. Kubernetes의 셀프힐링, 롤링 업데이트, 확장성을 활용해서 안정적인 애플리케이션 운영이 가능하지! 🚀

반응형