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