Deployment

Watermelon·2026년 1월 5일

CKA 학습 과정

목록 보기
20/35

Deployment

  • 프로덕션 환경에서 애플리케이션을 배포하는 방법을 생각해보자

예를 들어 프로덕션 환경에 배포해야하는 웹 서버가 있다고 가정
웹 서버가 실행되는 인스턴스가 한 개가 아니라 여러 개 필요

Docker 레지스트리에서 최신 버전의 애플리케이션 빌드를 사용할 수 있게 될 때마다 Docker 인스턴스를 원활하게 업그레이드하고 싶을 것

애플리케이션을 한꺼번에 업그레이드하는 것은 위험 부담이 크므로
애플리케이션을 차례로 업그레이드 하는 것이 좋음

  • 이러한 업그레이드를 롤링 업데이트라고 함

업데이트 중 오류 발생으로 최근 변경사항 롤백을 해야하는 상황 가정
또한 환경을 여러번 변경 후 모든 변경 사항 롤아웃 해야하는 상황 가정

replicaset 위에는 deployment(배포) 존재

  • 이는 롤링 업데이트를 사용하여 인스턴스를 원활하게 관리 가능
  • 변경사항 실행 취소 및 변경사항 일시 중지, 재시작 가능

배포 yml 파일 생성

  • 복제 yml 파일과 유사
apiVersion: apps/v1
kind: Deployment //해당 부분이 복제 yml 파일과 다름, 복제는 ReplicaSet
metadata:
  name: myapp-deployment
  label:
    app: myapp
    type: front-end
spec:
  template:
    metadata:
      name: myapp-pod
      type: front-end
    spec:
      containers:
      - name: nginx-container
        image: nginx
replicas: 3
selector:
  matchLabels:
    type: front-end
kubectl create -f deployment-definition.yml //배포 생성
kubectl get deployments //생성된 deployment 확인

kubectl get replicaset //복제도 확인 가능
kubectl get pods //pod name으로 잘 생성된 pod 확인 가능

kubectl get all //배포 생성 all 확인 가능

유용한 팁

https://kubernetes.io/docs/reference/kubectl/conventions/

NGINX Pod 만들기

kubectl run nginx --image=nginx

POD 매니페스트 YAML 파일 생성(-o yaml). 시뮬레이션만: --dry-run

kubectl run nginx --image=nginx --dry-run=client -o yaml

배포 만들기

kubectl create deployment --image=nginx nginx

배포 YAML 파일 생성(-o yaml). 시뮬레이션만: --dry-run

kubectl create deployment --image=nginx nginx --dry-run=client -o yaml

배포 YAML 파일 생성(-o yaml). 시뮬레이션만: --dry-run하고 파일에 저장하세요.

kubectl create deployment --image=nginx nginx --dry-run=client -o yaml > nginx-deployment.yaml

파일에 필요한 변경 사항(예를 들어 더 많은 복제본 추가)을 수행한 다음 배포를 만듭니다.

kubectl create -f nginx-deployment.yaml

k8s 버전 1.19+에서는 --replicas 옵션을 지정하여 4개의 복제본으로 배포를 생성할 수 있습니다.

kubectl create deployment --image=nginx nginx --replicas=4 --dry-run=client -o yaml > nginx-deployment.yaml
profile
많은 경험을 해보고자 하는

0개의 댓글