본문 바로가기
Jenkins

Jenkins 노드 추가하기: Built-in Node vs 외부 Agent

by Rainbound-IT 2025. 7. 11.
반응형

 

CI/CD 파이프라인의 중심에 있는 Jenkins는 다양한 환경에서 빌드를 실행할 수 있도록 노드(Node) 기능을 제공합니다. Jenkins Master는 기본적으로 하나의 Built-in Node(마스터 노드) 를 가지고 있으며, 확장성과 병렬 작업을 위해 외부 Agent(Node) 를 추가하는 방식으로 활용됩니다.

이번 글에서는 Jenkins에서 노드를 구성하는 방법과 함께, Built-in Node와 외부 Agent를 사용하는 차이점, 그리고 각각의 장단점을 비교해 보겠습니다.


1. Jenkins 노드란?

Jenkins에서 "노드(Node)"는 빌드 작업이 실행되는 물리적/가상 머신 또는 컨테이너를 의미합니다.

  • Built-in Node: Jenkins가 설치된 머신(마스터) 자체가 빌드를 수행.
  • 외부 Agent: 별도의 서버 또는 컨테이너에서 Jenkins Master와 통신하며 빌드를 수행.

이러한 구조를 통해 Jenkins는 빌드 작업을 분산시키고, 특정 환경에 맞는 작업을 실행할 수 있습니다.


2. Built-in Node 사용하기

Jenkins 설치 직후에는 Built-in Node만 활성화되어 있습니다. 설정은 간단합니다.

✔️ 특징

  • Jenkins 설치 서버에서 빌드를 수행.
  • 설정이 간편하며 소규모 프로젝트에 적합.

✔️ 사용 방법

  1. 노드 이름: (master) 또는 built-in.
  2. 작업 설정에서 Restrict where this project can be run 옵션에 master 또는 라벨을 입력하면 이 노드에서만 실행됩니다.
 

❗주의 사항

  • 빌드로 인해 Jenkins 자체의 자원이 부족해질 수 있습니다. - 마스터가 사용하는 자원과 빌드 및 배포 자원이 모두 소요
  • 보안상 Jenkins 서버에 직접 빌드 실행은 바람직하지 않습니다.

3. 외부 Agent(Node) 추가하기

대규모 프로젝트나 다양한 환경에서 빌드가 필요한 경우, 외부 노드를 추가하여 확장할 수 있습니다.

✔️ 종류

  • SSH 방식: SSH를 통해 외부 서버에 접근.
  • JNLP 방식: Jenkins가 Agent를 호출하는 대신 Agent가 마스터에 접속.

✔️ 설정 절차 (SSH 방식 예시)

  1. Manage Jenkins →  Nodes  → Settings
  2. 이름 입력 후 Permanent Agent 선택
  3. 다음 정보 입력
    • Remote root directory: 빌드 작업에 사용할 디렉토리
    • Labels: 노드를 식별하기 위한 라벨 (예: ubuntu, docker, gpu)
    • Launch method: Launch agents via SSH
    • SSH 정보 입력 (호스트, 사용자, 키)

 

4. Agent 방식

1. SSH 방식

  • Jenkins Master가 원격 호스트에 SSH로 접속하여 agent.jar를 자동으로 전송하고 실행합니다.
  • 설정: Manage Jenkins → Manage Nodes and Clouds → New Node → Launch agents via SSH
  • 사전 조건: SSH 키 또는 계정 인증이 설정되어 있어야 하며, 에이전트 머신에 Java가 설치되어 있어야 합니다.


 2. JNLP 방식 (Inbound Agent)

  • 에이전트 머신에서 Jenkins Master로 연결을 시도하는 구조입니다.
  • Master가 아닌 에이전트가 java -jar agent.jar -jnlpUrl ... 명령으로 직접 연결합니다.
  • OS나 네트워크 방화벽이 강력한 환경에 적합합니다.


3. Docker 기반 에이전트 (Docker Plugin)

  • Master가 Docker 호스트에서 컨테이너를 동적으로 생성해 빌드를 실행하고, 빌드 후 컨테이너를 삭제합니다.
  • Docker Remote API를 열어두고, Docker Plugin을 설치 및 설정합니다.


4. Kubernetes 기반 에이전트 (Kubernetes Plugin)

  • Jenkins Plugin이 Kubernetes에 Pod 형태로 에이전트를 띄우고, 빌드를 수행한 뒤 종료하는 방식입니다.
  • 확장성 우수, 자원 관리 유연 → 빌드 환경 코드를 통한 관리 가능.

5. Command Launcher 플러그인

  • Master에서 특정 명령어(예: SSH, RSH 등)로 에이전트 실행 가능.
  • Master가 원격지에서 직접 커맨드를 실행할 수 있을 때 유용합니다.

6. Swarm Plugin 방식

  • 여러 에이전트 머신에서 Swarm Agent를 실행해 Master에 연결합니다.
  • Kubernetes나 AWS 같은 클라우드 환경에서 에이전트를 복수 복제할 수 있습니다.
 

5. 비교: Built-in Node vs 외부 Agent

 

항목 Built-in Node 외부 Agent
실행 위치 Jenkins 설치 서버 별도의 서버, 컨테이너
관리 편의성 설정 간단 초기 설정 필요
확장성 낮음 높음
자원 격리 없음 가능
보안 낮음 (Jenkins와 동일한 시스템 자원 공유) 높음 (권한 분리 가능)
사용 용도 소규모 프로젝트, 테스트 병렬 빌드, 다양한 환경, 리소스 분산
 

6. 어떤 선택이 적절할까?

  • Built-in Node는 빠르게 Jenkins를 시작하고 싶을 때 유용합니다. 단, 트래픽이 늘어나거나 다양한 빌드 환경이 필요할 경우에는 외부 Agent로 전환하는 것이 좋습니다.
  • 외부 Agent는 유지보수와 리소스 분산 측면에서 탁월합니다. 특히 Docker, GPU, iOS/Android 빌드 등 다양한 환경을 병렬로 처리하려면 반드시 필요합니다.
반응형

댓글