티스토리 뷰
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)

- Amazon Linux 선택
- AMI : Amazon Linux 2023 kernel-6.1 AMI
- 아키텍처 : 64비트
EC2에서 가장 AWS 친화적인 리눅스 버전이다.
인스턴스 유형

- t3.small
키 페어

접속할 때 이용할 키 페어로, 하나 생성했다.
네트워크 설정
별도로 설정한 것은 없다.
스토리지 구성

빌드 데이터도 가지고 있으려면 다소 넉넉한 용량이 필요하다.
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 까지 하면 잘 나오는 것을 볼 수 있다.

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를 지정할 수 없었다.

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

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
무난하게 Install suggested plugins 선택했다.

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

4. 마무리 하며
이렇게 성공적으로 인스턴스에 Jenkins를 설치했고, 별 어려움이 없었다. 이 뒤에는 Jenkins Agent 용 인스턴스를 생성하고, Agent 로 설치하고 Controller 와 연결할 것이다.
- Total
- Today
- Yesterday
- 오라클
- Spring
- mariadb
- MySQL
- AWS
- docker
- JavaScript
- kubernetes
- java
- 젠킨스
- springboot
- 쿠버네티스
- 자바스크립트
- 크롤링
- 스프링시큐리티
- Minikube
- k8s
- 마리아디비
- jenkins
- 도커
- oracle
- springsecurity
- BeautifulSoup
- 파이썬
- 스프링
- 톰캣
- MongoDB
- nodejs
- 쿼리
- 스프링부트
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |