[Jenkins] Docker 기반으로 설치하기

Soover·2021년 6월 9일
0

CI/CD 이야기

목록 보기
1/2
post-thumbnail

📌들어가기

Local 환경에서 열심히 삽질하며 개발을 해나가다 보니 운영 환경으로 배포할 시기가 오게 되었습니다.
직접 배포하는 일은 여간 번거로운 일이 아니었고, 실수가 종종 일어나 시간을 지체하는 경우가 허다했습니다. 불필요한 시간이 소모되고 있었던 것이죠.
그래서 별안간 신경이 쓰이는 배포 작업을 Jenkins에게 맡기기로 결정하고 사용하기 시작하면서...
배포 자동화의 아름다움을 알게 되었습니다🤩
이번 글에서는 Docker 기반으로 Jenkins를 설치하는 내용을 다루고자 합니다.


🚀시작하기

Docker 컨테이너 생성하기

Jenkins를 컨테이너로 올리기에 앞서 앞으로 AWS의 서비스를 배포 과정에 사용해야 한다면 Jenkins에 사용 가능한 환경을 만들어주어야 합니다.

AWS IAM 사용자 생성

먼저 Jenkins에서 사용하기 위한 IAM 사용자를 만들어 봅시다.
AWS IAM 서비스 콘솔로 들어가서 사용자 메뉴로 이동하여 사용자 추가 버튼을 클립학니다.

사용자 이름을 입력하고 엑세스 유형 중 프로그래밍 방식 액세스를 선택하고 다음으로 이동합니다.

AWS Management Console 액세스의 경우 web 콘솔로 접근하는 방식을 말합니다.
여기에선 해당이 안되는 사항이니 생략하고 넘어가도록 하겠습니다.

다음으로 기존 정책 중 필요한 정책들을 체크하여 사용자 만들게 되면 마지막 단계에서 해당 사용자의 액세스 키 ID비밀 액세스 키를 생성해줍니다.

.csv 다운로드하여 보관할 것을 권장드리지만, 중요한 정보이기에 보안에 유의하셔야 합니다.

awscli가 포함된 Jenkins 도커 이미지 생성

awscli가 설치되어야 Jenkins에서 AWS 서비스에 접근할 수 있으므로 awscli가 설치된 jenkins 도커 이미지를 만들어야 합니다.

아래와 같이 Dockerfile을 만들어 주고,

OS 환경은 Ubuntu 입니다.

$ cd jenkins

$ vi Dockerfile

FROM jenkins/jenkins:lts

USER root

RUN apt-get update
RUN apt-get -y install zip vim jq
RUN apt-get -y install python3-pip
RUN pip3 install awscli --upgrade

RUN apt-get update
RUN apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common
RUN curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey
RUN add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable"

RUN apt-get update
RUN apt-get -y install docker-ce

마지막으로 이미지를 빌드해줍니다.

$ docker build --tag jenkins_awscli:0.1 .
$ docker images
REPOSITORY                    TAG          IMAGE ID       CREATED         SIZE
jenkins_awscli                0.1          4e651c9f9b3b   4 months ago    1.73GB
jenkins/jenkins               lts          2302e5864777   4 months ago    717MB

컨테이너 실행

docker로 Jenkins를 실행하기 위해 먼저 binding 할 폴더와 파일을 생성합니다.

$ mkdir -p jenkins/jenkins_home
$ mkdir -p jenkins/.aws

jenkins에서 AWS 서비스를 사용하기 위해 jenkins/.aws 경로 아래에 credentials 파일을 만들어 앞서 생성한 IAM 사용자의 액세스 키 ID시크릿 액세스 키aws_access_key_idaws_secret_access_key에 각각 입력합니다.

$ vi jenkins/.aws/credentials

[default]
aws_access_key_id=[액세스 키 ID]
aws_secret_access_key=[시크릿 액세스 키]

자, 이제 컨테이너를 띄워봅시다.

$ docker run -d \
-p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/jenkins/jenkins_home:/var/jenkins_home \
-v /srv/jenkins/.aws:/root/.aws \
-e TZ=Asia/Seoul \
-u root \
--name jenkins \
--restart always \
jenkins_awscli:0.1

확인

soosoo@soosoo:~/Dev/jenkins$ docker ps -a
CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                               NAMES
03acb2b687ac   jenkins_awscli:0.1   "/sbin/tini -- /usr/…"   5 minutes ago   Up 5 minutes   0.0.0.0:8080->8080/tcp, 50000/tcp   jenkins

Jenkins 초기 설정하기

Jenkins를 실행했으니 초기 설정을 해보도록 할까요?
컨테이너를 실행할 때 포트포워딩한 host의 8080 포트로 진입하면 초기화면이 아래와 같이 나오게 됩니다.

/var/jenkins_home/secrets/initialAdminPassword는 컨테이너 내부의 경로 및 파일을 나타냅니다.
아래와 같이 명령어를 실행하면 Administrator password 정보를 확인할 수 있습니다.

$ docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Administrator password 정보를 입력한 뒤 다음으로 넘어가면 플러그인 설치 화면이 나옵니다.
초기 설정에서는 기본 설치를 진행하고, 추후에 필요한 플러그인들을 설치하도록 합시다.

기본 설치를 클릭하면 아래와 같이 설치가 진행되는 화면이 보이게 됩니다.

모든 설치가 완료되고 Admin 계정 정보까지 입력을 하여 default로 단계를 이어가면...
(언제 끝나는건지..)

대시보드 화면을 보실 수 있습니다.
이제 Jenkins를 사용할 모든 준비가 완료되었습니다!


👏마무리

설치가 완료된 Jenkins에서 앞으로 다양한 배포 상황을 다루어 보려고 합니다.
다음 글에서는 개발 서버를 위한 배포 환경 만들기에 대한 내용을 알아보겠습니다.


누군가에게 도움이 되는 글이길 바랍니다.

감사합니다.

profile
자동화가 우리를 자유케 하리라

1개의 댓글

comment-user-thumbnail
2021년 6월 15일

👍

답글 달기