Jenkins - 시스템 관리 > Jenkins 자료실

본문 바로가기

사이트 내 전체검색

뒤로가기 Jenkins 자료실

Jenkins - 시스템 관리

페이지 정보

작성자 snow 작성일 25-04-11 10:03 조회 1,101 댓글 0

본문

이 게시글에서는 Jenkins 관리 중 시스템 구성에 대한 문서를 살펴보고, 예시만 안내드리는 글입니다.


1. Jenkins 시스템 구성 개요

Jenkins의 전반적인 구성 방식과 주요 설정 지점이 얼마나 중요한지 잘 아실 것입니다. Jenkins는 전 세계적으로 널리 사용되는 자동화 서버 중 하나이며, 특히 개발 환경에서 빌드와 배포를 자동화하는 핵심 역할을 담당합니다. 이때 시스템 구성은 Jenkins를 안정적으로 운영하기 위해 매우 중요한 요소입니다. 운영 체제와 미들웨어, 그리고 다양한 소프트웨어 개발 환경 속에서 Jenkins를 최적화하려면 글로벌 설정 파일과 관련된 구성을 정확히 파악해야 하며, 이를 위해 Jenkins에서는 여러 가지 시스템 구성 옵션을 제공합니다.

Jenkins의 전역 구성을 살펴보면, 실제로 컨트롤러(서버)에 중요한 정보와 설정값들이 저장되어 있음을 확인할 수 있습니다. 이러한 설정들은 Jenkins 웹 인터페이스의 관리 페이지에서 쉽게 확인하고 수정할 수 있으며, 특히 고급 운영 환경에서는 수많은 플러그인과 에이전트를 다루기 때문에 더욱 정교한 설정이 필요합니다. 아래에서는 대표적으로 많이 사용하는 기능들과 설정 방법, 그리고 디렉터리 구조에 대해 살펴보겠습니다.


1.1. Jenkins 홈 디렉터리

Jenkins 환경에서 가장 중요한 디렉터리 중 하나는 바로 홈 디렉터리입니다. 보통은 컨트롤러 시스템에서 사용되는 루트 디렉터리로서, 빌드 정보를 비롯해 다양한 설정 및 아카이브 파일이 보관됩니다. 기본적으로 Windows 운영체제에서는 C:ProgramDataJenkins.jenkins 경로를, Ubuntu 계열에서는 사용자 홈 디렉터리 밑에 .jenkins 폴더가 기본 경로로 설정됩니다. 하지만 실제 운영 환경에서는 Jenkins 홈 디렉터리를 별도의 경로로 옮겨서 사용하기도 합니다.

홈 디렉터리를 변경하려면 아래 단계를 거쳐야 합니다. 먼저 Jenkins를 완전히 중지한 후, 기존 홈 디렉터리에 있던 모든 내용을 새 위치로 이동합니다. 그리고 새로운 경로를 가리키도록 환경 변수인 JENKINS_HOME 값을 재설정하고, Jenkins를 재시작하면 됩니다. 이를 통해서도 안전하게 디렉터리 구조를 변경할 수 있습니다.

예시로, 실제 서버에서 Jenkins 홈 디렉터리를 옮기기 위한 터미널 명령은 아래와 같이 작성할 수 있습니다. 만약 아래 명령을 실행하면 Jenkins 프로세스를 중지하고 기존 홈 디렉터리의 내용을 이동하며, 환경 변수를 갱신하여 재시작하는 효과를 얻습니다.

```bash

sudo systemctl stop jenkins

sudo mv /var/lib/jenkins /data/custom_jenkins

export JENKINS_HOME=/data/custom_jenkins

sudo systemctl start jenkins

```

홈 디렉터리 안에는 다양한 폴더가 존재합니다. 예를 들어 builds 폴더에는 빌드 기록이 저장되고, jobs 폴더에는 각 잡(job)별 설정 파일이 들어 있습니다. plugins 폴더에는 현재 Jenkins에 설치된 플러그인들이 위치해 있습니다. 또한 secrets 폴더에는 Credential 정보 등을 복호화하기 위한 주요 키가 보관됩니다. 이러한 구조를 잘 이해해두면 Jenkins를 백업하거나 이관할 때 큰 도움이 됩니다.


1.2. 시스템 구성 페이지

Jenkins 관리 페이지에서 가장 눈에 띄는 메뉴 중 하나가 바로 Configure System입니다. 여기서는 Jenkins 컨트롤러 수준에서 적용되는 전역 설정들을 다룰 수 있습니다. 시스템 메시지, executor 개수, 라벨(Labels), Quiet period, Jenkins의 위치(URL) 설정, 통계 수집 여부 등 다양한 항목을 설정하게 됩니다.

특히, 운영자분들이 선호하는 방식으로 환경을 최적화하려면 에이전트(노드)에 대한 라벨 구성과 executor 개수를 세부적으로 조정해주는 것이 좋습니다. Jenkins 컨트롤러의 executor 수를 0으로 설정하면, 컨트롤러 자체가 빌드를 수행하지 않고 빌드 관리와 조율 역할만 수행합니다. 이렇게 되면 빌드 작업은 에이전트로만 분산되어 시스템 전체 안정성과 성능이 향상됩니다.


1.2.1. 시스템 메시지

시스템 메시지는 Jenkins 화면 상단에 표시되며, 유지 보수 일정을 공지하거나 전체 사용자에게 중요한 알림을 전달할 때 자주 활용됩니다. 예를 들어, 특정일에 시스템 점검이 있을 예정이라면 아래와 같은 메시지를 설정해둘 수 있습니다.

"곧 점검이 진행될 예정이니 작업에 유의해 주시기 바랍니다."


1.2.2. executor 개수

executor 개수는 동시 빌드 수용 능력을 의미합니다. 일반적으로 컨트롤러에 대해서는 executor를 0으로 두고, 에이전트(노드)에 여러 개의 executor를 할당하여 효율적으로 병렬 빌드를 처리하는 것이 좋습니다. 이렇게 해야 컨트롤러가 빌드 수행 대신 전체 에이전트 관리에 집중할 수 있습니다.

만약 에이전트별로 메모리가 풍부하거나 CPU 코어가 많은 환경이라면 executor를 늘려 여러 빌드를 동시에 수행하도록 구성할 수도 있습니다.


1.2.3. 라벨

라벨은 노드를 특성에 따라 분류할 수 있도록 하는 중요한 기능입니다. 예를 들어, 리눅스 기반 노드는 linux, 윈도우 기반 노드는 windows, 도커 환경 전용 노드는 docker 같은 식으로 라벨을 지정해두면 해당 라벨과 매칭된 작업만 해당 노드로 전달되도록 설정할 수 있습니다.

대규모 환경에서 라벨을 올바르게 관리하면 특정 운영 체제나 하드웨어 스펙이 필요한 잡을 손쉽게 분류하고 실행할 수 있어 매우 유용합니다.


1.2.4. Quiet period

Quiet period는 특정 변경 사항 감지 후 실제 빌드가 시작되기까지 대기 시간을 의미합니다. 커밋이 연달아 발생하는 상황에서 다수의 빌드를 모아서 한 번에 처리하거나, 임시 커밋이 들어갈 때를 대비하여 빌드 트리거를 늦추는 데 유용합니다. 예를 들어 5초 정도로 설정하면, 5초 동안 다른 커밋이 들어올 경우 한꺼번에 빌드를 진행하게 됩니다.


1.2.5. Jenkins 위치

Jenkins의 URL을 어떻게 설정하느냐도 중요한 부분입니다. 만약 프록시 서버 뒤에 Jenkins를 배치했다면 해당 프록시 환경에 맞춰 정확한 URL을 설정해야 합니다. 예를 들어 외부 접근 경로가 실제로 다른 포트나 다른 주소를 사용한다면 이 설정이 올바르지 않을 경우 에이전트가 컨트롤러를 찾지 못하거나 웹훅 등이 정상 동작하지 않을 수 있습니다.

프록시 설정은 운영 환경에 따라 달라질 수 있으므로, 반드시 운영 중인 웹 서버나 리버스 프록시 설정 파일과 연동해 테스트를 진행해야 합니다.


1.2.6. 통계 수집 여부

Jenkins에서는 사용자 경험 향상을 위해 익명 통계를 수집할 수 있는 옵션이 있습니다. 이를 비활성화하면 외부로 어떠한 통계도 전송되지 않고, 활성화하면 Jenkins 개선을 위한 집계 데이터에 기여할 수 있습니다. 내부 네트워크 정책이 엄격한 곳이라면 이 옵션을 꺼두는 편이 안전하며, 공용 데이터를 제공해도 무방하다면 활성화해두어도 됩니다.


1.2.7. 플러그인별 구성

매우 다양한 플러그인들이 Jenkins 기능을 확장하며, 각 플러그인마다 전역 설정이 시스템 구성 페이지에 나타납니다. 예를 들어 특정 인증 플러그인, 빌드 파이프라인 플러그인, 또는 알림 플러그인 등이 전역 설정을 추가하여 사용자가 상세 옵션을 조정할 수 있게 합니다.

사용하는 플러그인이 많아질수록 관리 포인트가 늘어나므로, 운영자분들은 플러그인 호환성과 성능에 주의하면서 필요한 설정을 꼼꼼히 해주는 것이 좋습니다. 플러그인 충돌을 방지하기 위해 Jenkins 버전을 주기적으로 업데이트하고, 불필요한 플러그인은 제거하는 것을 권장합니다.


2. Jenkins 홈 디렉터리 구조의 이해

앞서 언급한 것처럼 Jenkins 홈 디렉터리는 시스템 운영에서 매우 핵심이 되는 위치입니다. 여기서 jobs 디렉터리는 실제 프로젝트 설정과 히스토리를 담고 있고, builds 폴더에는 빌드 정보가 기록됩니다. 또한 plugins 폴더에는 플러그인들이 물리적으로 존재합니다. secret 관련 폴더에는 주요 키 정보가 들어 있어 보안에 특별히 주의를 기울여야 합니다.

아래는 홈 디렉터리 구조를 직접 확인하기 위한 터미널 명령 예시입니다. 만약 아래 명령을 실행하면 디렉터리 구조를 트리 형태로 파악할 수 있어, 현재 Jenkins가 어떻게 파일을 배치하고 있는지 직관적으로 확인하는 효과를 얻습니다.

```bash

tree -L 2 /var/lib/jenkins

```

위 명령으로 출력되는 내용은 예시이지만, 실제 운영 환경에서 plugins나 jobs 폴더에 잡(job) 이름 혹은 플러그인 파일들이 있는 것을 확인할 수 있습니다. 운영자분들은 빌드 기록이 쌓일수록 디스크 용량이 부족해질 수 있으니, 주기적으로 빌드 이력을 정리하거나 아카이빙하는 작업도 병행하는 것이 좋습니다.


3. 운영 팁과 추가 고려 사항

Jenkins 운영자분들은 이미 여러 가지 상황을 경험해보셨겠지만, 가끔 예상치 못한 이슈에 직면할 수 있습니다. 예컨대 수많은 플러그인이 한꺼번에 업데이트되어 호환성 문제가 발생하거나, 빌드 작업이 갑자기 몰려서 디스크 공간이 급격히 소진되는 상황이 있을 수 있습니다. 이런 문제들을 예방하기 위해서는 다음과 같은 팁을 고려해볼 수 있습니다.

1. 홈 디렉터리 백업 주기화
2. 디스크 모니터링 및 빌드 로그 주기적 정리
3. 에이전트 라벨 체계적 관리
4. 불필요한 플러그인의 제거와 버전 호환성 점검
5. 시스템 메시지를 통해 사용자 공지 철저

이 중에서도 디스크 사용량이 많은 빌드가 있을 경우 별도의 보관 정책을 세우는 것이 중요합니다. 예를 들어 10회 이상의 빌드는 자동으로 삭제하거나, 혹은 빌드 아티팩트만 별도의 아카이브 서버로 이전하는 방안을 세울 수 있습니다.

또한 Jenkins를 안전하게 운영하려면 보안 설정도 철저해야 합니다. 특히 인증(Authorization) 옵션과 권한(Role) 기반 접근 제어를 잘 구성해두면 운영자가 아닌 일반 사용자들이 불필요한 시스템 설정에 접근하지 못하도록 제어할 수 있습니다.


4. 마무리 및 요약

지금까지 Jenkins 관리 중 시스템 구성에 대한 핵심적인 사항을 살펴보았습니다. Jenkins 홈 디렉터리 관리와 전역 설정(Configure System) 페이지에서의 세부 옵션 조정은 안정적인 운영을 위해 절대 간과해서는 안 됩니다. 대규모 프로젝트를 운영하다 보면, 작은 설정 하나가 전체 빌드 프로세스 성능과 안정성에 지대한 영향을 미치는 경우가 많습니다.

특히, 컨트롤러와 에이전트 간의 역할 분리를 명확히 하고, 라벨을 통해 빌드를 목적에 맞게 분배하며, 홈 디렉터리의 용량 및 보안을 철저히 모니터링하는 것이 중요합니다. 추가로, 플러그인을 선택할 때에는 현재 Jenkins 버전과 호환성이 높은지 꼼꼼히 확인하고, 주기적으로 업데이트하여 잠재적인 보안 취약점을 방지해야 합니다.

마지막으로, 운영 중 문제가 발생했을 때는 Jenkins 로그를 살펴보거나 관련 로그와 디렉터리 상태를 함께 점검해야 합니다. 로그 분석과 홈 디렉터리 구조 파악을 병행하면 문제 원인을 빨리 추적할 수 있으며, 장애 대응 시간을 크게 단축할 수 있습니다. 시니어 운영자에게는 이러한 성숙한 운영 방법이 특히 중요하며, 이를 통해 Jenkins 환경을 더욱 견고하게 유지할 수 있습니다.

이상으로 시스템 구성과 관련된 주요 정보와 운영 노하우에 대해 간략히 소개해보았습니다. 실제 현장에서 다루는 Jenkins 환경은 플러그인과 인프라 아키텍처에 따라 매우 다양해질 수 있으므로, 필요에 따라 추가 자료를 참고하시면 더욱 완성도 높은 운영을 하실 수 있을 것입니다.

출처: [Jenkins] https://www.jenkins.io/doc/book/installing/docker (CC BY-SA 4.0)

댓글목록 0

등록된 댓글이 없습니다.

Copyright © 소유하신 도메인. All rights reserved.

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

PC 버전으로 보기