in DevOps with Docker

Docker를 Jenkins 슬레이브로 사용하자

jenkins 를 단독 서버로 많이 사용하지만 마스터-슬레이브로 구성할 수 있다. 이렇게 구성하면 마스터는 슬레이브를 이용해 빌드를 진행하고 빌드결과는 컨트롤러에서 확인이 가능하다. 마스터 슬레이브 구성의 장점은 무엇일까?

  • 슬레이브를 여러개 만들어 다양한 환경에서 빌드를 진행할수 있다.
  • 시간이 오래 걸리는 빌드를 슬레이브에게 위임할수 있다.
  • 마스터는 하나이기 때문에 jenkins를 여러개 두는것에 비해 관리가 쉽다.

이 슬레이브를 docker로 만들면 아래 그림과 같은 구성이 된다.

jenkins-register2(그림 출처:http://making.meetup.com/post/122890386432/steps-towards-automated-testing-with-docker-and)

도커 슬레이브를 사용하려면 마스터서버가 도커 프로비저닝이 가능해야 한다. 이 설정은 다른 포스트를 참고한다. 마스터 서버를 만들고 나면 서버에 docker 플러그인을 설치한다.

jenkins 관리 > 시스템에서 Cloud 영역 설정을 추가한다. 기본적인 설정은 플러그인 페이지를 참조한다. 주의할 점은 docker url을 적을때 ‘http://’ 를 붙여야 하며 version은 적어주면 안된다. (이 부분은 버그로 보인다.)  설정을 하고나면 ‘test connection’ 버튼으로 설정 문제가 없는지 확인한다.

도커 서버 설정이 끝나면 슬레이브로 사용할 도커 이미지를 설정한다. 슬레이브 도커 이미지는 도커허브에 있는 evanga/jenkins-slave를 참고하여 만든다.

마스터가 슬레이브와 통신할때 ssh를 사용하기 때문에 ssh 서버를 설치하고 jenkins 사용자를 추가했다. 마스터 서버에서 슬레이브 도커 이미지를 설정할때 credential이 필요한데 이 credential을 만들때 사용자 id/password를 사용한다.

이제 Job을 추가한다. Job은 Build multi-configuration project 스타일로 만들어야 한다. 설정에서 Configuration Matrix 영역 > ‘Add axis’ 에서 ‘Slave’를 선택하면 젠킨스 설정에서 추가한 슬레이브 노드를 선택할 수 있다.

설정에 문제가 없다면 Job을 실행했을때 새로운 도커 컨테이너가 만들어져 빌드가 진행되고 빌드가 끝나면 자동으로 컨테이너가 삭제된다. 설정에 따라 컨테이너를 유지하는것도 가능하다.

참고자료

Write a Comment

Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.