본문 바로가기

DevOps/쿠버네티스

쿠버네티스 Deployment를 통한 배포 및 롤백



쿠버네티스 롤백

$ k rollout status deployment kubia

## deployment 확인하여 error가 있는지 확인


$ k rollout undo deployment kubia

## 이전 버젼으로 deploynment 배포(롤백)


특정버젼으로 롤백하기

$ k rollout undo deployment kubia --to-revision=1
## revision 숫자로 돌아감.



배포관련 옵션 설정

<span class="pln">spec</span><span class="pun">:</span><span class="pln">
  strategy</span><span class="pun">:</span><span class="pln">
    maxSurge</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="com">## 최대 신규 버젼 배포추가 가능건</span><span class="pln">
    maxUnavailable</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> 
  type</span><span class="pun">:</span><span class="pln"> </span><span class="typ">RollingUpdate</span>



## rolling update에 있어서 새버젼을 먼저 배포하고 기존 배포건을 지울 것인지, 혹은 기존배포건을 지우고 새버젼을 배포할 것인지 설정이 가능하다.
## 삭제를 먼저하는 것을 권장하지 않는다. 기존 버젼을 날리고 시작해버리니깐..


배포 일시 중지 및 재생

$ k rollout pause deployment kubia
## 배포중에 멈추기 몇개가 새로운 버젼이 되어있고, 몇개가 기존 버젼으로 배포되어 있음

$ k rollout resume deployment kubia
## 멈춘 배포를 계속함.


배포하면서 헬스체크도 같이 하기

<span class="pln">apiVersion</span><span class="pun">:</span><span class="pln"> apps</span><span class="pun">/</span><span class="pln">v1beta1
kind</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Deployment</span><span class="pln">
metadata</span><span class="pun">:</span><span class="pln">
  name</span><span class="pun">:</span><span class="pln"> kubia
spec</span><span class="pun">:</span><span class="pln">
  replicas</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pln">
  minReadySeconds</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10</span><span class="pln">
  strategy</span><span class="pun">:</span><span class="pln">
    rollingUpdate</span><span class="pun">:</span><span class="pln">
      maxSurge</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
      maxUnavailable</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
    type</span><span class="pun">:</span><span class="pln"> rollingUpdate
  </span><span class="kwd">template</span><span class="pun">:</span><span class="pln">
    metadata</span><span class="pun">:</span><span class="pln">
      labels</span><span class="pun">:</span><span class="pln">
        app</span><span class="pun">:</span><span class="pln"> kubia
    spec</span><span class="pun">:</span><span class="pln">
      containers</span><span class="pun">:</span><span class="pln">
      </span><span class="pun">-</span><span class="pln"> name</span><span class="pun">:</span><span class="pln"> kubia
        image</span><span class="pun">:</span><span class="pln"> reg</span><span class="pun">.</span><span class="pln">cloud</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">kubia</span><span class="pun">:</span><span class="pln">v3 </span><span class="com">## 오류가나는 놈</span><span class="pln">
        readinessProbe</span><span class="pun">:</span><span class="pln">
          periodSeconds</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
          httpGet</span><span class="pun">:</span><span class="pln">
            path</span><span class="pun">:</span><span class="pln"> </span><span class="pun">/</span><span class="pln">
            port</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8080</span><span class="pln">
        ports</span><span class="pun">:</span><span class="pln">
        </span><span class="pun">-</span><span class="pln"> containerPort</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8080</span>

## 배포시에 헬스체크를 어떻게 할것인지 적용.
## 헬스체크 내용에 따라 배포를 못하게 할 수 있음.


$ k apply -f test-deploy.yml

## 신규 적용시키기

## v3가 readinessProbe에 의해서 문제가 있음을 확인하였기 때문에, 배포를 계속 진행시키지 않는다.


반응형