티스토리 뷰

0. 시작하며

맥북 로컬 환경에서 Docker로 Jenkins를 띄우고, Job을 만들어 빌드까지 수행해보는 것은 크게 어렵지 않았다. 기본적인 Job 구성과 빌드 흐름을 이해하는 데에는 충분한 경험이었다.

하지만 돌아보니, 그 구조는 Controller와 실행 노드가 하나로 붙어 있는 built-in 방식이었다. 말 그대로 “Jenkins를 실행해본 것”에 가까웠지, 실제 운영과 비슷한 환경에서의 Jenkins를 경험했다고 보기는 한참 부족했다.

현업에서는 보통 Controller와 Agent를 분리하고, 빌드는 별도의 노드(Agent 서버)에서 수행한다. 리소스를 분리하고, 확장성과 안정성을 고려한 구조다. 로컬 단일 노드 환경에서는 이런 부분을 체감하기 힘들었다.

그래서 이번에는 AWS EC2 위에 Jenkins를 직접 구축해보려 한다. 단순히 설치해보는 수준이 아니라, Controller와 Agent를 분리하고 실제 운영 환경과 유사한 구조로 구성해보는 것이 목표를 잡고 시작하게 되었다.

작업 환경은 Mac 으로, 인스턴스 접속을 위한 명령어는 윈도우일 경우 명령어가 다른 경우가 있으므로 Git Bash 사용을 추천합니다. (Git Bash 사용하면 동일하게 가능)

 

1. AWS 인스턴스 생성

이 인스턴스는 Jenkins의 Controller 역할을 할 인스턴스이다.

인스턴스 생성은 chatGPT의 도움을 받았다. 왜냐하면 Jenkins 서버의 최소 스펙을 알아야 했다. 다만, 처음으로 구축하는 것이기 때문에 큰 스펙은 바라지 않았고, 거의 최소한의 스펙으로 진행하기로 했다.

애플리케이션 및 OS 이미지(Amazon Machine Image)

애플리케이션 및 OS 이미지 선택하는 AWS 화면

- Queick Start 선택
- Amazon Machine image(AMI) 선택

  • Amazon Linux 선택
  • AMI : Amazon Linux 2023 kernel-6.1 AMI
  • 아키텍처 : 64비트

EC2에서 가장 AWS 친화적인 리눅스 버전이다.

인스턴스 유형

인스턴스 유형 선택

- t3.small

  • t3.small

키 페어

AWS 인스턴스 생성 - 키 페어(로그인) 섹션

- 키 페어 생성

접속할 때 이용할 키 페어로, 하나 생성했다.

네트워크 설정

별도로 설정한 것은 없다.

스토리지 구성

AWS 인스턴스 생성 - 스토리지 구성 섹션

- 30GB 설정
- 볼륨 타입 : gp3

빌드 데이터도 가지고 있으려면 다소 넉넉한 용량이 필요하다.

2. 인스턴스에 접속

가지고 있는 키 페어나, 1번에서 키 페어를 생성했다면 자동 다운로드 된 *.pem 파일을 가지고 로그인을 시도한다.

우선 해당 파일을 권한 설정을 해준다.

chmod 400 my-key.pem

이후 접속을 시도한다.

ssh -i my-key.pem {user_account}@{public_ip}

 

다만, AMI 별 기본 사용자 계정이 상이하니, 잘 모른다면 아래 표를 참고하면 된다.

AMI 종류 사용자
Amazon Linux ec2-user
Ubuntu ubuntu
CentOS centos
Debian admin
RHEL ec2-user

3. Jenkins Controller 설치

Jenkins 의 Controller 서버는 Docker 없이 진행했다.

Java 설치

sudo dnf install java-17-amazon-corretto -y

설치하고 java -version 까지 하면 잘 나오는 것을 볼 수 있다.

java -version 하면 나오는 콘솔 문구

openjdk version "17.0.18" 2026-01-20 LTS
OpenJDK Runtime Environment Corretto-17.0.18.9.1 (build 17.0.18+9-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.18.9.1 (build 17.0.18+9-LTS, mixed mode, sharing)

Jenkisn Repository 등록

Jenkins 공식 RPM 저장소를 서버에 등록하고, 해당 저장소의 패키지를 신뢰하도록 GPG 키를 등록한다.

sudo wget -O /etc/yum.repos.d/jenkins.repo \
  https://pkg.jenkins.io/redhat-stable/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

Jenkins 설치 및 실행

# 설치
sudo dnf install jenkins -y

# 실행
sudo systemctl enable jenkins
sudo systemctl start jenkins

# 상태 확인
sudo systemctl status jenkins

보안 그룹 설정

조금 전에 만든 인스턴스에 할당된 보안 그룹으로 가서 인바운드 규칙 편집을 진행한다. 젠킨스 웹 UI에 붙어야 하므로 8080을 열어준다. 소스는 본인 IP가 보안상 좋겠지만, 집에서 맥북으로 하다보니 고정 IP를 지정할 수 없었다.

보안 그룹 규칙 설정

- 유형 : 사용자 지정 TCP
- 포트범위 : 8080
- 소스 유형 : 사용자 지정
- 소스 : 0.0.0.0/0
- 설명 - 선택 사항 : Jenkins Web UI Connect

접속 및 초기 설정

초기 비밀번호를 설정한다. 아래 이미지처럼 해당 경로에 초기 비밀번호가 할당되어 있으니, 명령어를 이용해 가져와서 붙여넣으면 된다.

Jenkins 접속 시 초기 화면

- 타이틀 : Unlock Jenkins
- 내용 : 
To ensure Jenkins is securely set up by the administrator, a password has been written to the log (not sure where to find it?) and this file on the server: /var/lib/jenkins/secrets/initialAdminPassword

Please copy the password from either location and paste it below.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

무난하게 Install suggested plugins 선택했다.

Jenkins 접속 비밀번호 이후 화면

- 타이틀 : Customize Jenkins
- 내용 : 
Plugins extend Jenkins with additional features to support many different needs.

- 선택지
1. Install suggested plugins
2. Select plugins to install

이후 최초 어드민 계정까지 생성하면 끝이다.

4. 마무리 하며

이렇게 성공적으로 인스턴스에 Jenkins를 설치했고, 별 어려움이 없었다. 이 뒤에는 Jenkins Agent 용 인스턴스를 생성하고, Agent 로 설치하고 Controller 와 연결할 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함