1 minute read

Deployment

  • ReplicaSet과 Pod의 배포 관리
  • Pod 및 ReplicaSet에 대한 선언적 업데이트를 제공
  • ReplicaSet의 상위 오브젝트
  • 쿠버네티스에서 공식적으로 Deployment를 사용할 것을 권장

Deployment API 확인

kubctl api-resources

Deployment Yaml 파일 작성

  • Kind 외에 ReplicaSet 과 동일한 방식으로 생성
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kuweb-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kuweb-label
  template:
    metadata:
      labels:
        app: kuweb-label
    spec:
      containers:
      - name: kuweb
        image: testweb:1.0
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 8080

Deployment 생성

kubectl apply -f <Yaml 파일 경로> [옵션]

kubectl apply -f d:\KubeTestWeb\kuweb-deployment.yaml

Deployment 목록 확인

// 유지되는 Pod 개수 확인 가능
kubectl get deployments [옵션]

// replicaset의 Pod 선택기, 컨테이너이름, 이미지이름 확인 가능
// deploy : deployments 짧은 명령어
kubectl get deploy -o wide

Deployment 상세 정보 확인

kubectl describe deploy [옵션]

kubectl describe deploy kuweb-deployments

Deployment로 생성된 ReplicaSet, Pod 정보 확인

  • Pod명은 Deployment 이름+16진수 랜덤 값으로 자동 생성
  • po : 명령어 pods
kubectl get po

// Pod 에서 사용중인 IP 주소 확인 가능
kubectl get po –o wide

접속 확인

kubectl exec -it kuserver -- bash

Deployment 업데이트

  • 애플리케이션 업데이트 시 중단 없이 업데이트 가능
  • 변경 사항을 Revision에 기록하여 필요한 경우 롤백(rollback) 가능
  • yaml 파일 수정 후 build

vsCode에서 dockerfile 우클릭 > build image > testweb:2.0
이렇게 빌드를 했다.


Deployment 이미지 업데이트

kubectl set image deploy <Deployment이름> <컨테이너이름>=<이미지이름> --record=true

kubectl set image deploy kuweb-deployment kuweb=testweb:2.0 --record=true

// --record : 변경사항을 기록하여 해당 버전의 ReplicaSet을 보존

Deployment Rollout 기록 확인

  • 변경된 사항은 Revision으로 기록
kubectl rollout history deploy [Deployment이름] [옵션]

kubectl rollout history deploy kuweb-deployment

// 세부 확인
kubectl rollout history deploy kuweb-deployment --revision=2

Deployment 롤백

  • 배포가 안정적이지 않은 경우 안정적인 이전 버전으로 롤백
kubectl rollout undo deploy <deploy이름> [--to-revision=번호]

kubectl rollout undo deploy kuweb-deployment

// --to-revision을 생략하면 바로 이전 버전으로 롤백

Deployment 삭제

  • Deployment에 의해 생성된 ReplicaSet, Pod도 같이 삭제됨
kubectl delete deploy <deploy명 | -l label | --all> [옵션]

kubectl delete deploy kuweb-deployment

Categories:

Updated: