NCP 서버 이사 작업 복기
서버 구매
- 서버 3개월 운영 비용 계산하여 적당한 스펙의 서버 구매했음
- Ncp 는 server 가 클래식, vcp 버전으로 나뉘어져 있었슴..
- 삽질 : 호기롭게 구매부터 했는데 잘못 사서 반납했다.. Ncloud 문서를 가볍게 스키밍하고 했었으면 만원 안날렸다...
방화벽 설정
- AWS 보안 그룹 인바운드, 아웃바운드 규칙 셋팅 작업과 동일
- NCP 는 ACG 라는 명칭을 사용
- 난관 : 배포를 SSH 접속하여 커맨드로 하거나 깃헙 서버에서 테스트를 수행하려면 임시로 깃헙 서버 IP 인바운드 규칙을 추가해야 한다. API 로 인바운드 규칙 추가가 가능함.
그런데 NCP 는 API로 ACG 규칙 변경을 VPC 서버만 제공함..
- Class 서버 반납하고 VPC 서버로 구매... VPC 서버는 시작가가 더 비싸다..
서버 셋팅
- VPC 서버는 네트워크를 VPC 를 구성해야한다.. 다행히 복잡한 설정이 필요 없었어서 VPC, 서브넷 2개 추가 구매만 하고 별다른 설정을 하지 않았다.
- 공인 IP 2개 구매하고 서버와 연결
- Scouter agent 설치.
- 그룹 생성하고 유저 추가. 워킹 디렉토리 만들고 권한 유저에게 추가.
- 도커 설치
- Github 서버 인증 추가. 깃헙 액션 워크플로우에서 SSH 로 디플로이 하기 때문에 유저가 sudo 명령어 쓰면 비밀번호 입력 뜨는거 설정으로 제거함. (올바른 행동인가? 알아보자)
github action 워크플로우 작성
- 2개의 서버로 배포해야되서 같은 내용의 워크플로우 파일을 2개 만들었음..
- NCP ACG API 요상하다.. 방화벽에 임시로 깃헙액션 서버 ip 추가와 삭제, 총 2번의 변경 요청을 해야하는데 동시에 날릴 수 없다고 에러 응답온다... 이거 해결해야함..
- 깃헙 액션 환경별 시크릿 추가 기능 이용함
- 대박 난관 : AWS와 달리 NCP 는 API 요청하려면 엑세스키와 시크릿키로 시그니처를 생성해서 헤더에 포함해야된다....이 로직을 깃헙 워크플로우에 넣어야 해서 API 문서에서 쉘 스크립트 샘플 코드를 활용함...
문제는 깃헙액션 변수를 쉘 스크립트 파일에서 써야했음... 공식문서 찾아가며 연습용 레포지토리에서 몇시간 테스트 해보고 쉘스크립트 샘플 코드를 내 환경에 맞게 완성했음.
- NCP 정말 헷갈리는게 API URL 안내가 친절하지 않다. NCP는 국산이라 그런지 정부기관용 NCP도 있고 핀테크 기업용 NCP도 있다. 다 API URL이 다른데 문서 생김새는 똑같았음;; 정부기관용 NCP 문서에서 URL 을 가져온 것을 모르고 왜 내 인증이 자꾸 까이나 원인 찾아보겠다고 이것 저것 바꿔보는 삽질을 했다.
배포
- SSH 로 명령어 날려서 Docker 이미지 다운받는데 docker 명령어 실행 권한이 없어서 모든 명령어에 sudo가 필요했다. docker 그룹에 내가 만든 유저도 추가하여 권한 부여하는 것으로 해결
API 요청 테스트
- Scouter에 agent.java 지표는 잘 뜨는데 agent.host 가 안뜬다... 이것도 해결해야 한다.
- DB, vault 통신 잘 되었음.