현재 github action으로 하나의 서버에 ci/cd를 하고 있는데요,
ncloud 에서 제공하는 auto scailing을 적용해보려 합니다.
그런데 만약 auto scailing을 한다면, 그때그때 서버의 수나 ip가 달라질 텐데, 만약 개발중이라면 어떻게 현재 존재하는 서버를 파악해서 그 서버에 github action으로 배포를 해 줄 수 있을까요?
검색해보니 aws 의 경우 cold deploy같을 걸 많이 사용하는 것 같은데 순수 github action만으로 할 수 있는 방법이 궁금합니다.
→ 이런식으로 해본적이 없어서 잘 모르겠어요
로드 밸런서 ( nginx ) → 여러 서버들을 묶어줌
정적 IP
배포 → Private 공간
로드 밸런서 → Public
로드 밸런서 → Private을 묶어서 관리해줌
현재 nginx로 묶여 있는 서버들의 IP를 조회하는 API → 리더 서버
→ 현재 묶여잇는 모든 IP를 반환
→ 해당 IP들의 갯수만큼 github actions의 job? 등을 실행 해서 처리하기
그럼 보통은 auto scailing을 하더라도 원래 있는 서버를 그냥 추가하고 빼고 이런 건가요?
오토 스케일링에 도커 스웜 같이 껴서 쓰고 있습니다
자동 추가되는 서버의 init script에 리더 서버(오토스케일링 X, 고정적 유지)로 join하는 메세지를 보내는 내용으로 동작해요
깃헙 액션은 리더 서버에만 deploy 메세지를 보내고 리더 서버가 연결된 워커 서버들한테 전파하는 식입니다
ncloud 에서 로드 밸런서를 제공해서 오토스케일링 설정에 붙일 수 있는걸로 알고 있습니다
- 클라우드(aws, ncloud, gcp, azure)에서 제공하는 가이드를 찾아보기
- 사내에서 쓰는 플랫폼 가이드
요즘에 auto scailing을 한다고 치면, 보통 k8s → k8s를 실행해서 scale up/out
conatiner → container를 필요한 갯수만큼 만들어서(pod) → 묶어주기
내가 jenkins를 만든다고 치면?
→ 웹 서버
→ 사용자가 정의한 pipeline 같은것들을 받아서(request)에 대해서 처리하는 API
→ API를 실행하면, 서버에서 여러가지 commad line tool 등을 이용해서 request에 대한 것들을 실행
→ 실행하면서 나오는 output를 바로 response로 반환
→ response를 실시간으로 사용자에게 보여주기
→ 완료되면 완료 API
→ 실패하면 실패 API
내가 github actions라는 시스템 자체를 만든다고 치면?