개요

나는 그 전까지 아쉬웠던 프로젝트들이 몇 있었다. 그러한 프로젝트들을 끝까지 책임지고 개발시켜보기로 했다. 별거 아닌 내용까지 다 정리해보고자 한다. 그 중 특히 중요한게 있으면 내용을 따로 포스팅할 수도 있다.

Issue

1. 어떤 클라우드를 사용해야 될까…

여러가지 후보가 있었다. 최우선은 비용, 차우선은 국내 회사들이 많이 사용하는지? 였다. 국내회사들이 많이 쓰고 무료 크레딧이 있는 후보들을 뽑았다.

후보는 kt, 네이버, 카카오였다. 간단한 조건은 이렇다.

kt

  • 3개월 50만원 체험가능

네이버

  • 3개월 30만원 체험가능

카카오

  • 30만원 체험가능 (기간은 모르겠네요)

결과적으로 MSA까지 적용해보고싶었기에, 크레딧이 많이 필요할 수 있어서 kt로 결정했다.

2. kt 클라우드 서버 접속

서버를 발급받았고, ubuntu라는 이름으로 ssh를 접속해도 되지 않았다. root라는 이름과 pem키를 사용하니 정상작동했다.

그리고 서버 방화벽도 ufw 대신 kt 대시보드 내에서 하는 것 같았다. ssh, jenkins, nginx proxy manager를 사용하기 위해 우선 22, 8080, 81부터 열었다.

3. docker compose

그 전 프로젝트들과는 다르게 jenkins와 npm등을 docker compose를 이용해서 컨테이너를 제작할 것이다. 명령어를 바로 쓰는 것은 명령어를 따로 저장하는 느낌이 강하고, 컨테이너를 만드는 명령어에는 많은 매개변수를 받기 때문이다.

4. Docker/Jenkins 설정

jenkins 설정은 아래와 같이 했다. jenkins 공식 문서의 docker compose 파일 설정을 따랐고, volume 마운트 위치만 바꾸었다. 나중에 백엔드 테스트용으로 8080 포트를 사용하게 된다면 바꿀 수도 있다.

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    ports:
      - "8080:8080"
    volumes:
      - ~/volume/jenkins:/var/jenkins_home
    container_name: jenkins
  ssh-agent:
    image: jenkins/ssh-agent
    container_name: ssh-agent

위 파일을 jenkins.yml로 저장하고

docker compose -f jenkins.yml up -d

위 명령어를 통해 우선 배포했다.

5. nginx proxy manager

도메인, ssl, 리버스 프록시 등을 GUI로 할 수 있도록 도와주는 도구이다. MSA 프로젝트를 만들 때, 리버스프록시를 통해 단일 도메인으로 여러 곳에 흩어진 서버에 접근할 수 있기에 관리에 용이하다. 또, 코드보다 GUI로 한다는 점 덕분에 더욱 직관적으로 프로젝트를 관리할 수 있을 것이라는 생각이 들어 사용해보게 되었다.

NPM도 도커를 이용해 쉽게 관리할 수 있기에 아래와 같은 파일과 명령어로 서버에 올렸다.

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ~/volume/npm/data:/data
      - ~/volume/npm/letsencrypt:/etc/letsencrypt
    container_name: npm
docker compose -f npm.yml up -d

1일차 후기

간단해 보이도록 정리했지만, 쉽지 않은 작업들이었다. 특히 kt서버 접속은 ubuntu라는 계정으로 접근이 되지 않아 시간을 많이 소비했다. root로 접근하고 su로 사용자 계정을 바꿔서 작업을 할 것이지만, 추후 방법을 알아낸다면 바꿔야겠다.