도커 내에 젠킨스 설치하기(Jenkins in Docker)
이런 생각이 들었다.
도커 내에 개발 환경 세팅이 아니라 젠킨스까지 설치하는게 어떤 면에서 좋은거지? 라는 생각이 들었다.
(사실 도커 내에 설치한 젠킨스 설정이 너무 어려워서 현타가 와버림)
너무 초보자스러운 생각인거 같았는데 운이 좋게도 스택오버플로우에 내 생각과 같은 질문이 올라와 있었다.(내가 옳았어!!)
장점
해석하자면 이렇다.
1) 서버에 대한 대부분의 구성이 버전 관리 아래에 있는 것이 좋다.
2) 새로운 기능이나 구성을 실험할 때 내 머신에서 로컬로 빌드 서버를 실행할 수 있는 기능을 구현하기 쉽다.
3) 새로운 환경(예: 로컬 서버 또는 AWS와 같은 클라우드 환경)에서 빌드 서버를 쉽게 설정할 수 있다.
한마디로 Jenkins In Docker로 배포/설치하는 것이 플러그인이나 구성을 더 세팅하지 않아도 되니 더 빠르고 쉽다는 뜻이다. (그건 나도 안다구...)
단점
Docker에 설치된 Jenkins 내부에서 Docker를 실행(Docker in Docker - DinD)해야 할 때 복잡해진다.
첫번째 방식인 DinD 방식은 도커 안에 새로운 격리된 환경을 만들 수 있다는 장점이 있지만 보안상의 문제로 도커 진영에서 추천하지 않는 방식이다.
두번째 방식은 Docker Out of Docker(DooD)인데 컨테이너 내부에서 외부 도커 데몬을 사용하는 형태다.
어느 방식을 쓰든 보안에 취약하다는 단점과 CI/CD 사용 측면에서 굉장히 복잡해진다는 단점이 있다.
위의 내용을 자세하게 알고 싶으면 여기에
요약
결론은 젠킨스 플러그인, 구성 설정 등을 매번 설치하는게 귀찮다면(솔직히 무자비하게 큰 사이트가 아니라면 그럴 일이 있을까 싶다) 도커에 설치하고 아니면 그냥 매번 수동으로 하자.
개인 혹은 기업의 상황에 따라 어떤게 더 좋은지 선택적으로 하는게 좋다.
개인적으로 CI/CD는 알면 알수록 도움되는 지식이고 복잡한 지식이지만 개발자는 복잡함 속에서도 단순함을 더 추구해야 더 개발에 집중할 수 있는 환경이 되는 것 같다.
'🛠️ CI & CD' 카테고리의 다른 글
스프링부트 + Github + Jenkins + Docker / CI & CD 연습하기 (2) (0) | 2022.10.03 |
---|---|
스프링부트 + Github + Jenkins / CI & CD 연습하기 (1) (5) | 2022.10.03 |
Jenkins Blue Ocean 소개 및 주관적인 단점 3가지 (1) | 2022.09.26 |
Jenkins 에서 SSH 접속 시 sudo 권한 사용 (0) | 2022.09.26 |
젠킨스(Jenkins) 톰캣 연동 시 Issue (0) | 2020.01.10 |