CI/CD Pipeline 구성을 위해 굉장히 많이 쓰이는 Jenkins를 AWS에다 구축해보자.
(CI/CD에 대한 자세한 내용은 나중에 포스팅 하겠다.)
나는 AWS EC2에 인스턴스를 올려 구축하겠지만, Docker를 이용하여 구축할 것이므로 Linux 종류는 어떤것을 써도 무방하다.
(Docker 설치가 되어있다는 전제하에!)
우선 Jenkins 공식 홈페이지에 가면 jenkins/jenkins 이미지를 사용할 것을 권장한다. 이는 LTS버전의 이미지이며 이미 Docker Hub에 repository가 존재하고 있어, 구축이 용이하다.
하지만 아래에 보면 Jenkins의 모든 기능을 다 사용하고 싶다면, 아래에 있는 설명대로 설치를 진행하라고 되어있다.
응~ 안해
우리는 Jenkins의 숨겨진 기능, 파워풀한 기능을 사용하지는 않을것이다. 쉽게쉽게 가자
LTS 버전으로 설치를 할 것이고, Docker를 사용하여 Jenkins Container를 실행시킬 것이다.
Docker Hub에 있는 Jenkins 공식 설명을 보면 Jenkins Home 디렉토리를 Host 디렉토리에 마운트 할 것을 추천한다.
또한 명령어에 보면 포트를 8080, 50000 두개를 사용함을 알 수 있는데, 이것에 대한 설명은 조금 아래에 되어있다.
우리가 구성하는 Jenkins의 역할은 Master이기때문에 혹시 Slave를 만들것이라면, 연결을 위해 50000번도 써야한다는 것이다.
(8080은 Master Jenkins 관리자 웹 페이지용 포트)
응~ 둘 다 안해~~
우리가 지금 Jenkins를 구축하는 이유는 Jenkins가 무엇인지 알아보는 등 학습을 위해서이다.
굳이 Jenkins Home을 Host에 연결할 이유도, Slave 연결용 포트인 50000번을 포트포워딩 할 필요도 없다.
최대한 간단하게 학습용으로 Master만 구성해보자.
docker run 명령어를 이용하여 Jenkins Container를 구동해보자
- -d : detached mode로 백그라운드 모드이다. 계속 포그라운드에서 container 로그만 보고있을 수는 없으니 설정했다.
- -p : 포트포워딩 옵션이다. Host Server의 9999번 포트를 container의 8080으로 포워딩 해준다.
- --name : container의 이름을 설정한다.
- jenkins/jenkins:lts : Docker Hub에 존재하는 Official Jenkins 이미지를 사용하겠다는 것이다.
그러면 이렇게 Jenkins Container가 정상적으로 실행됨을 확인할 수 있다.
이제 브라우저를 통해 Server IP의 9999번 포트로 접근해보자.
Jenkins가 잘 실행되긴 했는데... 잠겨있다!
잠금 해제를 위해서는 /var/jenkins_home/secrets/initialAdminPassword 를 읽어서 입력하면 된다.
실행중인 docker container에 /bin/bash를 실행시켜 접근하여 확인해도 되지만
번거롭게 그럴 필요 없이 cat 명령어를 통해 바로 읽어오는 방식을 택했다.
위 스크린샷처럼 docker exec를 이용하여 cat 명령어를 실행시키면, 16진수 난수형태로 되어있는 initialAdminPassword를 확인할 수 있다.
이걸 그대로 Administrator password에 넣고 continue를 누르면 잠금이 해제된다.
※ 참고 : 혹시나 위에서 detached mode로 실행하지 않고 포그라운드로 실행시켰다면 아래 스크린샷처럼 로그에서 initialAdminPassword를 확인할 수 있다.
잠금이 해제되면 Jenkins를 시작하기 전, Plugin을 설치할 수 있는 페이지가 나타나는데
실제로 운영을 위해서 구축한 Jenkins라면 하나하나 따져가며 설치할지 말지 결정해야겠지만...
우리는 학습용 환경이니까 그냥 'Install suggested plugins'를 이용하자.
이어서 관리자 계정을 만들라고 한다.
여기서 관리자 계정을 만들게 되면, 앞으로 Jenkins 관리자페이지로 접근할때 쓰이게 된다.
만드는것이 어렵지 않으니, 만들어보자.
하지만... 어짜피 학습용이고 지우고 다시만들거야! 시간아까워!
라고 생각한다면... 하단에 'Skip and continue as admin'이라고 있다. 이걸 눌러서 스킵하면 된다.
(그게 나야~ 둡바 둡바 두비두바)
이어서 Jenkins URL을 확정하는 화면이 나오는데, Jenkins의 root URL을 확정함으로써 Jenkins 기능을 사용할때 그 확정된 URL을 이용하게 된다.
변경없이 진행해주면 된다.
모든 과정이 끝났다.
아까 나의 경우엔 계정을 만들지 않아, '로그아웃 후 다시 로그인 할때는 id는 admin으로, pw는 설정해서 사용'하라고 안내해주고 있다.
'Start using Jenkins'를 이용해 Jenkins를 시작해보자
완성!
하지만 이렇게 만든 Jenkins에는 생각보다 많은 보안적인 문제점들이 있다.
이 부분은 다른 포스팅에서 다루도록 하겠다.
'ETC > 기타 정보' 카테고리의 다른 글
[T0M4TO] 개발과 보안의 괴리 1탄 (Authentication) (4) | 2022.03.20 |
---|---|
[T0M4TO] Jenkins의 보안적 문제점 - 1탄 (0) | 2021.09.18 |
[T0M4TO] 공개되지 않는 안전한 Email 주소 만들기 (0) | 2021.09.05 |
[T0M4TO] Slack Webhook 설정하기 (Slack 봇 만들기) (0) | 2021.08.13 |
[T0M4TO] Google Image Proxy가 뭐여...? (0) | 2021.04.08 |