본문 바로가기
Cloud/Kubenetes

kubectl version 패치

by tankwoong 2023. 10. 31.
반응형

yml파일을 작성

apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-go
  labels:
    app: http-go
spec:
  replicas: 3
  selector:
    matchLabels:
      app: http-go
  template:
    metadata:
      labels:
        app: http-go
    spec:
      containers:
      - name: http-go
        image: cloudwoong/http-go:v1
        ports:
        - containerPort: 8080
      imagePullSecrets:
        - name: test

리소스 생성 작업을 기록하기 위해 record 속성을 부여해서 yml파일을 작동시켜 준다.

root@master:~#  kubectl create -f deployment.yml --record=true
Flag --record has been deprecated, --record will be removed in the future
deployment.apps/deploy-jenkins created

작동한 후 pod를 확인해 준다.

명령어를 작성하기 전에 사전 지식을 알고 작성하자.

kubectl rollout: Kubernetes 클러스터에서 롤아웃(배포) 작업을 관리하는 명령어이다.
history: 이 옵션은 롤아웃의 이력 정보를 검색하도록 명령어에 지시합니다.
deploy http-go: 이 부분은 http-go라는 이름의 배포(Deployment)에 대한 롤아웃 이력을 확인하도록 지시한다.

kubectl rollout history deploy http-go

kubectl patch deployment http-go -p '{"spec":{"minReadySeconds":10}}':

이 명령은 http-go 배포의 설정을 수정하는 것을 의미한다.
-p 또는 --patch 플래그를 사용하여 패치(patch)를 적용하고

JSON 형식의 패치를 지정한다.

 

이 패치는 배포(Deployment)의 spec 섹션에서

minReadySeconds 필드를 10으로 변경한다.

 

minReadySeconds는 새 파드가 준비되기를 기다리는 시간을 나타내며,

이를 설정하면 새 파드가 완전히 활성화되기를 기다릴 시간을 조절할 수 있다.

 

kubectl expose deployment http-go:

이 명령은 http-go 배포를 서비스로 노출한다는 뜻이다.


이 명령을 사용하면 새로운 서비스 리소스가 생성되어

배포(Deployment)의 파드에 대한 네트워크 노출이 설정된다.

 

이를 통해 다른 클라이언트나 서비스가

http-go 배포의 파드와 통신할 수 있게 된다.

 

이제 작성하여 보자.

kubectl patch deployment http-go -p '{"spec":{"minReadySeconds":10}}'

kubectl expose deployment http-go

서버스를 확인해 보자.

wget 하였을 때 v1패치임을 확인할 수 있다.

이번엔 v2로 변경해서 입력해 준다.

kubectl set image deploy http-go http-go=cloudwoong/http-go:v2 --record=true

 명령어를 입력하여

Kubernetes 클러스터에서 실행 중인

파드(Pod)의 상태를 실시간으로 모니터링해 준다.

롤아웃한 뒤 wget으로 확인해 보면 v2로 패치가 업데이트된 것을 확인할 수 있다.

이번엔 edit 명령어로 한번 고쳐보자.

kubectl edit deploy http-go

v3버전으로 고친 뒤 esc을 누르고 wq! 을 입력해 준다.

저장하고 나간다는 뜻이다.

그리고 다시 롤아웃하면 REVISION이 3까지 올라간 것을 확인할 수 있다.

kubectl run -it --rm --image busybox -- sh

이번에 다시 busybox이미지로 들어가서 wget 해보면 v3이 패치된 것을 확인할 수 있다.

그렇다면 다시 revision을 1로 바꾸면 어떻게 될까?

kubectl rollout undo deploy http-go --to-revision=1

명령어를 작성하고 다시 쉘로 로그인해 주면 v1으로 패치단계가 바뀐 것을 확인할 수 있다.

 kubectrun -it --rm --image busybox -- sh

 

반응형