릴리스 때마다
서버마다 SSH로 접속해 릴리스를 가져오고, 서비스를 재시작하고, 헬스 체크를 curl로 확인합니다. 한 번에 한 대씩.
지금은 이렇게 합니다
ssh web-1.git pull.sudo systemctl restart app.curl /healthz.기다림. 다시 한 번.exit.ssh web-2.
릴리스 때마다, 서버마다.
Kitewell에 한 번만 말하기
제 웹 서버 그룹을 대상으로 하는 chain 워크플로를 만들어 주세요. git으로 /srv/app을 가져오고, 제 승인을 기다린 뒤 app 서비스를 재시작하고, 각 머신에서 http://127.0.0.1:8080/healthz를 확인한 다음 다음 머신으로 넘어갑니다.
설정은 이것으로 끝입니다. Kitewell이 모든 단계를 펼쳐 보여 주니 확인하세요. 적용하기 전에는 아무것도 저장되지 않습니다.
내 업무에 맞게 쓰려면 이 문장을 복사해 빈칸을 채우세요.
[제 서버 그룹]을 대상으로, 한 번에 한 대씩 git으로 [앱 폴더]를 가져오고, 제 승인을 기다린 뒤 [앱 서비스]를 재시작하고, [헬스 체크 주소]를 확인한 다음 다음 머신으로 넘어가는 워크플로를 만들어 주세요.
그다음은 저절로 실행됩니다
롤아웃 · web 그룹이 컴퓨터에서 실행 중
- 릴리스 가져오기머신에서 fast-forward pull을 실행합니다.완료
- 승인 기다리기재시작은 머신마다 승인을 기다립니다.확인 대기
- 서비스 재시작승인한 뒤에 실행됩니다.완료
- 응답 확인5초 간격으로 6번 시도합니다. 끝내 응답하지 않는 머신이 있으면 롤아웃이 멈춥니다.완료
대신 받게 되는 것
롤아웃 · web 그룹
web-3: 헬스 체크 실패. 롤아웃을 멈췄습니다.
- web-1정상
- web-2정상
- web-3/healthz 응답 없음
- web-4손대지 않음
알아 두면 좋은 점
- 그룹은 첫 실패에서 멈추므로, 확인에 실패한 머신이 있으면 나머지는 손대지 않은 채 롤아웃이 멈춥니다.
- 호스트 키는 프로젝트에서 승인되고, 비밀번호는 모두 시크릿에서 가져오므로 워크플로에는 둘 다 들어 있지 않습니다.
필요한 것
- 그룹으로 등록한 서버: 한 번에 한 대씩, 실패하면 중지