쿠버네티스 - Deployment

목차

Deployment

어플리케이션을 클러스터 내의 여러 노드에 자동으로 배포 및 롤백 할 수 있는 리소스

  • 클러스터에 인스턴스를 생성하고 배포하는 작업을 수항한다.
  • Pod 를 개체를 관리한다.
  • Deployment 를 이용해 Pod 를 생성하고 클러스터의 노드에 배포할 수 있다.
  • Deployment 를 통해 Application 의 새로운 버전을 배포하거나 이전 버전으로 롤백할 수 있다.
  • Deployment 를 생성하면 Deployment 에 해당하는 ReplicaSet 도 함께 생성된다.

Deployment 리소스를 사용하면 애플리케이션의 상태, 레플리카 수, 롤링 업데이트, 롤백 등을 관리할 수 있습니다.

여러 개의 Pod 인스턴스를 생성하여 애플리케이션을 실행하는 것이 Deployment의 주요 목적입니다. Pod는 컨테이너를 실행하는 단위이며, Deployment는 이러한 Pod 인스턴스들을 생성하고 관리합니다. Deployment는 Pod의 상태를 모니터링하고 필요에 따라 새로운 Pod를 생성하거나 종료하여 애플리케이션을 원하는 상태로 유지합니다.

Deployment는 롤링 업데이트를 통해 애플리케이션을 업데이트할 수 있는 기능도 제공합니다. 새로운 버전의 애플리케이션을 배포하면 Deployment는 점진적으로 Pod를 업데이트하고 이전 버전과 새 버전을 동시에 실행하면서 서비스의 가용성을 유지합니다. 롤링 업데이트 중에 문제가 발생하면 롤백하여 이전 버전으로 되돌릴 수도 있습니다.

Deployment 리소스는 YAML 또는 JSON 형식으로 정의되며, 쿠버네티스 클러스터에 배포되어 관리됩니다. Deployment를 생성하면 해당 애플리케이션의 레플리카셋(ReplicaSet)과 함께 생성됩니다. ReplicaSet은 Pod 인스턴스의 수를 지정하고 관리하는 역할을 수행하며, Deployment는 ReplicaSet을 업데이트하거나 롤백하는 등의 작업을 수행합니다.

쿠버네티스 Deployment는 애플리케이션의 배포와 관리를 효율적이고 안정적으로 수행할 수 있도록 지원하는 중요한 리소스입니다.

Deployment 만들기

  • kind
    • Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo-deploy
spec:
replicas: 4
selector:
matchLabels:
app: echo
tier: app
template:
metadata:
labels:
app: echo
tier: app
spec:
containers:
- name: echo
image: ghcr.io/subicura/echo:v1

Deployment 적용

이미지를 변경한다.

spec:
containers:
- name: echo
image: ghcr.io/subicura/echo:v2
kubectl apply -f [deployment 파일명]

Deployment Update

Revision - 롤백

  • Revision 버전 확인
kubectl rollout history deployment [Deployment 이름]
  • Rollback
kubectl rollout undo deployment [Deployment 이름] --to-revision=[롤백할 Revision 버전]
Share