LabHub
배우기 러닝패스 코스

Helm 배포와 롤백 시나리오 · 릴리스와 리비전 · 실습

릴리스를 열어 본다 — 저장 자리·보관 창·되살리기

LabHub 에서 이어서 보기

목표

Helm 릴리스가 클러스터의 어디에 무엇으로 저장되는지를 직접 풀어 보고, 보관
창이 얼마나 좁은지, 지운 릴리스를 어떻게 되살리는지까지 한 바퀴 돕니다.

왜 중요한가

helm rollback 이 무엇을 되돌리고 무엇을 못 되돌리는지는 전부 저장 구조에서
나옵니다. 릴리스는 네임스페이스 안의 시크릿 한 장이고, 그 안에 렌더링된
매니페스트가 통째로 눌려 들어 있습니다. 그래서 매니페스트에 적혀 있던 것은
되돌아오고 바깥에서 벌어진 일은 되돌아오지 않습니다.

같은 구조에서 따라 나오는 것이 둘 더 있습니다. 릴리스 이름이 **네임스페이스
안에서만** 유일하다는 것, 그리고 보관되는 리비전 개수에 상한이 있다는 것입니다.
"반년 전으로 롤백" 이 대개 불가능한 이유가 여기 있습니다. 사고가 났을 때
helm get values 로 "무슨 값으로 떴는가" 를 먼저 확인하는 습관도 이 구조를
알아야 몸에 붙습니다.

환경

이 파드는 kwok 으로 진짜 kube-apiserver 를 띄웁니다. 파드가 실제로 실행되지는
않지만 릴리스 시크릿과 리비전, 오브젝트 변경은 전부 진짜입니다. 그래서 채점도
파일이 아니라 helm 과 apiserver 에 다시 물어서 합니다. 작업 디렉터리는
/root/hs-rel 이고 산출물은 /root/hs-rel/out 아래에 둡니다.

단계

1. /root/hs-rel 에서 차트를 만들고 rel-ashop 으로 설치합니다.
2. 리비전 1의 릴리스 시크릿을 풀어 /root/hs-rel/out/release-v1.json 에 저장합니다.
3. 같은 이름 shoprel-b 에도 설치합니다.
4. --history-max 3 으로 네 번 업그레이드해 옛 리비전이 사라지는 것을 봅니다.
5. helm get valueshelm get manifest 결과를 /root/hs-rel/out 에 저장합니다.
6. rel-b 의 릴리스를 --keep-history 로 지우고 기록을 저장합니다.
7. 지운 릴리스를 롤백으로 되살립니다.
8. /root/hs-rel/out/report.txt 에 일곱 줄로 정리합니다.

참고

단계 8개

  1. 차트를 만들고 이름을 붙여 배포한다
  2. 릴리스가 저장된 시크릿을 풀어 본다
  3. 같은 이름의 릴리스를 다른 네임스페이스에 하나 더
  4. 보관 창을 줄여 옛 리비전이 사라지는 것을 본다
  5. 이 릴리스에 실제로 들어간 값과 매니페스트를 꺼낸다
  6. 기록을 남기고 지운다
  7. 지운 릴리스를 되살린다
  8. 일곱 단계를 숫자로 정리한다