리셋 되지 말자

[Jenkins] publish over SSH를 이용한 Docker 서비스 배포(1) 본문

CI CD

[Jenkins] publish over SSH를 이용한 Docker 서비스 배포(1)

kyeongjun-dev 2021. 5. 26. 21:46

준비사항

  1. public IP 주소로 접속이 가능한 Jenkins 서버
  2. Jenkins 서버에서 접속이 가능하고, Docker가 설치된 서버

 

구성도

  1. github에 수정된 소스코드를 push 한다
  2. github는 push 이벤트가 발생하면 Jenkins로 webhook을 전송한다
  3. Jenkins는 webhook을 받으면, 'publish over SSH' 플러그인을 이용해 원격 서버에서 shell 명령을 수행한다
    1. 이를 위해서 Jenkins 서버에서 원격 서버에 ssh 접속이 가능해야 한다. Jenkins에서 설정할 수 있으며, ssh를 이용한 통신이 잘되는지 테스트 또한 자체적으로 가능하다.
  4. Jenkins가 원격 서버에 shell 명령어를 이용하여 github의 소스코드를 clone해 받아온다.
  5. clone해온 소스코드로 새롭게 Docker 이미지를 빌드하고, 컨테이너를 실행한다.
    1. 예제 서버는 nodejs이다.

 

설명

  • 테스트는 Naver Cloud Platform에서 진행했으며 사용된 서버 갯수는 총 두개이다.
  • 첫 번째 서버는 우분투 서버에 Docker가 설치되어 있고,  Jenkins가 컨테이너로 실행되어 있다. (여기서는 컨테이너로 Jenkins를 올렸지만, 서버의 로컬에 직접 Jenkins를 설치해도 상관없다. 요약하자면 어떤 형태로든 Jenkins를 설치하고 웹 브라우저를 통해 접속이 가능하면 된다.)
  • 두 번째 서버도 첫 번째 서버와 마찬가지로 Docker가 설치되어 있다. 실제 테스트용으로 Docker 컨테이너 서비스인 nodejs가 사용된다.

 

publish over SSH 플러그인 설치

Jenkins에 접속한 뒤, 대시보드 메뉴에서 'Jenkins 관리' 선택

 

플러그인 관리 선택

 

1. '설치 가능' 탭을 선택
2. 검색창에 'ssh' 입력
3. 'Publish Over SSH' 체크
4. 'Install without restart' 선택하여 플러그인 설치

 

설치 완료 확인 후, '메인 페이지로 돌아가기'를 선택하여 이동

Comments