본문 바로가기
MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 31: Deployments

by 공부하는 무니 2023. 1. 4.
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests  강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


이번 강의에서는 Kubernetes Deployment에 대해 배워보겠습니다. 잠시 파드, ReplicaSet 등 쿠버네티스 개념에 대해서는 내러놓고, 프로덕션 환경에서 애플리케이션을 어떻게 배포하면 좋을지에 대해 이야기해봅시다.

Deployment

예를 들어, 배포해야 할 웹 서버가 있습니다. 웹 서버의 인스턴스가 많이 필요한 상황입니다. 그리고 애플리케이션의 새로운 버전이 나올때마다 Docker 인스턴스를 원활하게 업그레이드하고 싶습니다. 이때 모든 인스턴스를 한번에 업그레이드할 경우 유저에게 영향을 미칠 수 있기 때문에 하나씩 업그레이드하고 싶습니다. 이러한 업그레이드를 ‘롤링 업데이트’ 라고 합니다.

만약 업그레이드를 하다 오류가 발생하면, 최근 변경 사항들을 ‘롤백’해야 할 것입니다.

이러한 기능을 Kubernetes Deployment로 사용할 수 있습니다.

지금까지 배웠던 것을 한번 되짚어보겠습니다. 애플리케이션이 담긴 컨테이너는 파드에 캡슐화됩니다. 파드를 여러 개 보장해주는 역할로 ReplicaSet을 사용했습니다. 그리고 이제 배우는 Deployment는 ReplicaSet보다 한단계 더 높은 계층 구조에 있습니다. (Deployment를 생성하면 ReplicaSet이 자동으로 생성됩니다)

Deployment는 원활한 업그레이드를 위해 롤링 업데이트 사용, 롤백, 중지, 재개하는 기능을 제공합니다.

How do we create deployment?

Deployment는 어떻게 생성할까요? 이전 컴포넌트들과 마찬가지로 Definiton File을 생성합니다.

Deployment의 Definition File은 ReplicaSet Definition File에서 `kind` 부분만 다르고 동일합니다.

apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myapp-deployment
      labels:
        app: myapp
        type: front-end
    spec:
     template:
        metadata:
          name: myapp-pod
          labels:
            app: myapp
            type: front-end
        spec:
         containers:
         - name: nginx-container
           image: nginx
     replicas: 3
     selector:
       matchLabels:
        type: front-end

Definition file이 완료되면, 아래 커맨드로 Deployment를 생성합니다.

$ kubectl create -f deployment-definition.yaml

생성한 Deployment는 아래 커맨드로 확인할 수 있습니다.

$ kubectl get deployment

Deployment는 자동으로 ReplicaSet을 만듭니다. ReplicaSet을 확인하는 커맨드는 아래와 같습니다.

$ kubectl get replicaset

replicasets은 또한 파드를 만듭니다. 파드는 아래와 같이 확인할 수 있습니다.

$ kubectl get pods

모든 오브젝트를 한번에 보고 싶다면, 아래 커맨드를 입력하면 됩니다.

$ kubectl get all

반응형

댓글