0Pricing
Kubernetes Basics · 강의

배포 이해하기

배포가 상태 비저장 애플리케이션을 위해 파드와 ReplicaSets 관리를 자동화하는 방법을 배우세요.

배포 이해하기은(는) CoddyKit의 무료 Kubernetes Basics 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kubernetes Basics 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

Deployment란 무엇인가요?

환영합니다! Kubernetes에서 애플리케이션을 관리한다는 것은 해당 애플리케이션의 Pod를 관리한다는 의미입니다. 하지만 개별 Pod나 ReplicaSet을 직접 관리하면 복잡해질 수 있습니다.

Deployment는 상태 비저장 애플리케이션을 쉽게 관리할 수 있도록 해 주는 상위 수준의 객체입니다. 애플리케이션의 관리자라고 생각하시면 됩니다.

  • 애플리케이션의 원하는 상태를 정의합니다.
  • Pod에 문제가 발생해도 해당 상태가 유지되도록 합니다.
  • 업데이트와 롤백을 자동화합니다.

Deployment를 사용하는 이유

Deployment는 Kubernetes에서 애플리케이션을 안정적으로 실행할 때 다음과 같은 중요한 이점을 제공합니다.

  • 자동 관리: Pod의 생성, 확장 및 삭제를 처리합니다.
  • 자동 복구: Pod가 충돌하면 원하는 복제본 수를 유지하도록 Deployment가 자동으로 Pod를 교체합니다.
  • 선언적 업데이트: 원하는 새로운 상태를 설명하면 Deployment가 해당 상태에 도달하는 방법을 결정합니다(예: 새 버전의 점진적 배포).

상태 비저장 애플리케이션을 관리하는 데 권장되는 방법입니다.

Deployment의 핵심 역할

Deployment는 기본적으로 ReplicaSets를 관리합니다. ReplicaSet의 역할은 지정된 수의 Pod 복제본이 항상 실행되도록 하는 것입니다.

따라서 Deployment는 ReplicaSets를 사용해 목표를 달성합니다. 즉, 정의에 따라 애플리케이션에 올바른 수의 정상적인 Pod가 실행되도록 합니다.

이 추상화 덕분에 애플리케이션의 수명 주기를 훨씬 쉽게 정의하고 유지할 수 있습니다.

Deployment YAML 구조

대부분의 Kubernetes 객체와 마찬가지로 Deployment도 YAML을 사용해 정의합니다. 일반적으로 다음과 같은 주요 섹션을 볼 수 있습니다.

  • apiVersion 및 kind: 객체 유형(Deployment)을 식별합니다.
  • metadata: Deployment 자체의 이름, 레이블 등을 지정합니다.
  • spec: 다음을 포함하는 핵심 정의입니다.
    • replicas: 원하는 Pod 수입니다.
    • selector: Deployment가 관리할 Pod를 찾는 방법입니다.
    • template: 생성할 Pod의 청사진입니다.

Pod 템플릿

Deployment의 spec 안에 있는 template 필드는 매우 중요합니다. 본질적으로 완전한 Pod 정의입니다.

이 Deployment가 생성하는 모든 Pod는 이 템플릿을 사용합니다. 즉, 다음 항목을 정의합니다.

  • 사용할 컨테이너 이미지
  • 노출할 포트
  • 환경 변수
  • 리소스 요청 및 제한
  • 그 밖의 항목

이 템플릿을 변경하면 애플리케이션 업데이트가 시작됩니다.

간단한 Deployment 생성

간단한 Nginx 웹 서버를 위한 Deployment를 정의해 보겠습니다. 복제본은 3개로 설정합니다.

selector.matchLabels가 template.metadata.labels와 일치해야 한다는 점에 유의하세요. 이를 통해 Deployment가 어떤 Pod를 소유하는지 알 수 있습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Deployment 적용

Kubernetes 클러스터(예: Minikube)에 이 Deployment를 생성하려면 kubectl apply 명령을 사용합니다. 위의 YAML을 nginx-deployment.yaml로 저장하세요.

kubectl이 Deployment 객체를 생성합니다. 그러면 Deployment 컨트롤러가 이 객체를 확인하고 동작을 수행해 ReplicaSet을 생성하며, ReplicaSet이 Nginx Pod 3개를 생성합니다.

kubectl apply -f nginx-deployment.yaml

Deployment 검사

적용한 후에는 Deployment와 Deployment가 관리하는 Pod의 상태를 확인할 수 있습니다.

  • kubectl get deployments: Deployment를 표시합니다.
  • kubectl get replicasets: Deployment가 생성한 ReplicaSet을 표시합니다.
  • kubectl get pods -l app=nginx: Deployment가 관리하는 Pod를 표시합니다(레이블 선택기를 통해 표시).
  • kubectl describe deployment my-nginx-deployment: 이벤트를 포함한 Deployment의 자세한 정보를 제공합니다.
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment

원하는 상태 유지

Deployment의 가장 강력한 기능 중 하나는 원하는 상태를 유지하는 능력입니다. replicas: 3으로 정의하면 Deployment가 항상 Pod 3개를 실행하도록 합니다.

Nginx Pod 중 하나를 수동으로 삭제해 보세요(kubectl delete pod <pod-name>). Deployment가 이를 교체하기 위해 새 Pod를 신속하게 생성하는 것을 확인할 수 있습니다! 이것이 자동 복구가 작동하는 모습입니다.

빠른 확인

Deployment는 주로 어떤 유형의 애플리케이션을 관리하는 데 사용되나요?

요약: Deployment 이해하기

잘하셨습니다! Kubernetes Deployment를 처음으로 다뤄 보았습니다.

  • Deployment는 상태 비저장 애플리케이션을 관리하기 위한 상위 수준의 객체입니다.
  • ReplicaSet을 관리하여 Pod의 생성, 확장 및 자동 복구를 자동화합니다.
  • YAML 매니페스트를 사용해 Deployment를 정의하며, 원하는 replicas 수와 Pod를 위한 template을 지정합니다.
  • kubectl apply는 Deployment를 생성하고, kubectl get/describe는 Deployment를 모니터링하는 데 도움을 줍니다.

다음으로 ReplicaSet과 ReplicaSet이 원하는 Pod 수를 어떻게 보장하는지 자세히 알아보겠습니다!

자주 묻는 질문

“배포 이해하기” 강의는 무료인가요?

네 — “배포 이해하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kubernetes Basics 강의 전체를 잠금 해제할 수 있습니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

“배포 이해하기”에서 뭘 배우나요?

배포가 상태 비저장 애플리케이션을 위해 파드와 ReplicaSets 관리를 자동화하는 방법을 배우세요. 브라우저에서 직접 실행하는 실습 코드로 Kubernetes Basics을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kubernetes Basics을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kubernetes Basics은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“배포 이해하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kubernetes Basics 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kubernetes Basics 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 배포 이해하기
  2. ReplicaSets를 활용한 애플리케이션 확장
  3. 롤링 업데이트 및 롤백
  4. 배포 전략: 블루-그린과 카나리
← Kubernetes Basics(으)로 돌아가기