코알못

[Docker] Docker 빌드를 위한 Jenkins 활용 - Jenkins 설치 본문

ETC

[Docker] Docker 빌드를 위한 Jenkins 활용 - Jenkins 설치

코린이s 2023. 3. 18. 15:54
728x90

이번 시간에는 젠킨스를 설치하고 필요한 플러그인을 설치, 인증 설치하는 실습을 진행하도록 하자!

Jenkins 의 경우 아래 스펙이 최소로 있어야 돌아갈 수 있으며 EC2 기준 t3.medium을 사용하면 된다.

cpu mem disk
2Core 4GB 8GB

그리고 방화벽의 경우 아래와 같이 Inbound 를 열면 된다.

포트 설명
22 서버 접속
8080 Jenkins UI

Ubuntu OS, t3.medium EC2를 생성 한다!

AWS Console > EC2 에 들어가서 인스턴스 시작을 클릭한다.

Ubuntu, m3.medium(해당 스펙 이상도 가능), 볼륨 8GB(이상도 가능)는 필수로 선택하고 보안 그룹의 경우 위에 언급한 22, 8080을 열어준다.

나머지는 각자 상황에 맞게 선택 하며 인스턴스 시작 버튼을 눌러 인스턴스를 생성한다.

이제 도커를 설치 하자!

$ sudo apt update
$ sudo apt install -y docker.io

이제 일반 유저에게 docker 실행 권한을 부여한다.

$ sudo chmod 666 /var/run/docker.sock

루트 권한(sudo) 없이 정상적으로 실행 되는지 확인한다.

$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

이제 Jenkins 볼륨을 마운트할 디렉토리를 생성한다.

$ mkdir jenkins

이제 아래 명령어를 통해 젠킨스를 실행한다.

root 로 실행하는 이유는 실습과정중 docker container 안에서 /usr/local/bin 부분에 실행 파일 옮기는 부분이 있는데 이떄 root 권한이 필요하다.

보통 root 권한을 위해 사용하는 sudo 라는 실행 파일이 container에는 없기에 컨테이너 자체를 root 권한으로 실행한다.

$ docker run --name jenkins -d -p 8080:8080 -v ~/jenkins:/var/jenkins_home -u root jenkins/jenkins:latest

이제 로컬 PC 에서 'http://[EC2 IP]:8080' 을 입력하여 Jenkins에 접속해보자!

Admin Password 를 확인하여 입력한다.

$ docker exec -it jenkins bash -c "cat /var/jenkins_home/secrets/initialAdminPassword"

우리는 제안하는 플러그인을 설치하도록 하며 모두 설치 될 때까지 대기한다.

모두 설치가 되었다면 이제 관리자 계정을 등록한다.

로그아웃하여 관리자 계정으로 정상적으로 로그인 되는지 확인하면 정상적으로 로그인 된다.

타임존이 기존 UTC 이기에 상단 아이디 부분 클릭 > 설정 부분에 들어가서 Asia/Seoul을 클릭하여 Timezone 을 수정한다.

이제 플러그인을 설치해보자!

Jenkins 관리 > Pugins > Availalble plugins 에 들어가서 설치할 플러그인을 검색 한다.

아래 플러그인 설치 필요하며 사전에 설치 해도 되며 저자는 하나씩 진행하면서 필요할때마다 설치 하도록 한다. 

이제 Jenkins 에서 원하는 Git 저장소를 컨트롤 하기 위해서 ssh 키를 생성하여 Jenkins(개인키등록), Git(공개키등록)에 등록하도록 한다.

Jenkins 서버에 접속하여 ssh Key 를 생성해보자!

그 전에 키를 저장할 경로를 생성하고 해당 디렉토리로 이동하며 -f 옵션으로 ssh-key 라는 파일명으로 키를 만든다.

생성된 키를 보면 ssh-key 라는 개인키와 .pub 가 붙은 공개키가 생성된것을 볼 수 있다.

 $ mkdir -p pems/jenkins
 $ cd  pems/jenkins
 $ ssh-keygen -f ssh-key
 $ ll
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 18 03:49 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 18 03:46 ../
-rw------- 1 ubuntu ubuntu 2610 Mar 18 03:49 ssh-key
-rw-r--r-- 1 ubuntu ubuntu  577 Mar 18 03:49 ssh-key.pub

이제 소스코드가 있는 github에 들어가서 해당 공개키를 등록해보자!

Settings > Deploy Keys > Add deploy key 를 누른뒤 Title 은 원하는 이름을 넣고 Key 부분에 서버에서 생성한 공개키를 복사하여 넣고 Allow wriet access 를 눌러 쓰기 허용 하도록 한뒤 Add key 를 눌러 추가한다.

공개키가 정상적으로 등록 된것을 볼 수 있다.

이제 Jenkins 에 개인키를 등록하면 Jenkins 에서 Git 해당 소스 접근 가능하게 된다.

Jenkins 관리에서 Credential 을 클릭하고 System > Global credential > Add Credentials 를 클릭한다. 

Private Key > add 를 누르면 비밀키를 입력창이 활성화 되며 여기에 비밀키를 넣고 Create 를 누르면 완료!

이제 Jenkins 가 AWS 에 접근하기 위한 aws-key 를 등록한다.

우선 AWS Key 를 생성하기 위해 AWS Console > 우측 상단 계정 ID > 보안 자격증명 클릭한다.

만들면 accesskey, secret key가 나오며 해당키를 저장해두고 Jenkins 등록해보자!

이를 위해 아래 플러그인을 설치한다.

기존에 AWS 관련 설정 기능이 없었으나(왼쪽이미지) 플러그인 설치후에 AWS 라는 부분이 생성 된것(오른쪽이미지)을 볼 수 있다.

누르면 AWS Credential 설정 부분이 나오는데 이미지와 같이 누른다.

아래와 같이 노란 부분을 채우며 Key 부분은 이전에 저장한 키를 입력하면 된다.

Add 버튼을 클릭하고 나면 오른쪽 이미지와 같이 생성한 Key 를 선택하고 Save 를 누르면 완료!

최종적으로 아래와 같이 Key 두개가 저장 되어 있음을 볼 수 있다.

끝!

728x90
Comments