Jenkins 에이전트 — 전체 DevOps 강의

발행: (2026년 2월 7일 오전 08:22 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

Source:

우리가 해결하려는 문제는 무엇인가요?

실제 시스템에서는 빌드가 무겁고, 다양하며, 병렬로 진행됩니다. 하나의 Jenkins 인스턴스가 모든 작업을 혼자 안전하고 효율적으로 수행할 수 없습니다.

에이전트는 Jenkins가 규모를 확장하고, 격리하며, 프로덕션에서 살아남게 하는 방법입니다.

1) Jenkins 에이전트란?

Jenkins에는 두 가지 역할이 있습니다:

Controller (이전 명칭 “master”)

  • UI, 작업 정의
  • 스케줄링 및 오케스트레이션
  • 자격 증명 및 설정

Agent (worker/node)

  • 실제 작업을 실행합니다:
    • git clone
    • npm install
    • docker build
    • terraform apply
    • 테스트, 스캔, 패키징

핵심 규칙: Controller는 무엇을 실행할지 결정하고, Agent는 어디서, 어떻게 실행할지를 결정합니다.

2) DevOps가 Jenkins 에이전트를 필요로 하는 이유

이유 1 — 성능 및 확장성

모든 작업을 Controller에서 실행하면:

  • CPU 급증
  • 빌드 지연
  • Jenkins 불안정

에이전트를 사용하면:

  • 여러 빌드를 병렬로 실행
  • 하나의 대형 서버를 업그레이드하는 대신 워커를 추가

DevOps 원칙: 수직 확장보다 수평 확장.

이유 2 — 격리 및 안전성

빌드는 위험할 수 있습니다:

  • 신뢰할 수 없는 코드
  • 임의 스크립트
  • Docker 데몬 접근
  • 클라우드 자격 증명 사용

에이전트는:

  • 실패를 격리
  • 잘못된 빌드가 Jenkins를 다운시키는 것을 방지
  • 일회용 환경 제공

이유 3 — 다양한 환경

실제 파이프라인은 다음이 필요합니다:

  • Linux 에이전트
  • Windows 에이전트
  • macOS 에이전트
  • ARM vs x86
  • 서로 다른 툴체인

에이전트를 사용하면: 올바른 작업 → 올바른 머신.

이유 4 — 보안 및 규정 준수

베스트 프랙티스:

  • Controller에 Docker 없음
  • Controller에 클라우드 관리자 키 없음
  • Controller가 아티팩트를 빌드하지 않음

에이전트는:

  • 최소 권한만 부여
  • 회전하거나 파기됨
  • 최소 권한 원칙 적용

3) 고수준 아키텍처

Jenkins Architecture

Agent Types Diagram

Jenkins Flow

흐름:

  1. 개발자가 코드를 푸시
  2. Jenkins Controller가 이벤트를 수신
  3. Controller가 라벨로 에이전트를 선택
  4. 에이전트가 파이프라인 단계 실행
  5. 결과가 Controller에 반환

4) 에이전트가 사용되는 곳 (실제 DevOps 시나리오)

시나리오 1 — 마이크로서비스 CI

  • 각 서비스가 독립적으로 빌드
  • 에이전트가 유닛 테스트와 Docker 이미지 빌드 수행
  • 다수의 에이전트 = 더 빠른 CI

시나리오 2 — 인프라스트럭처 as Code (Terraform)

  • 에이전트에 Terraform, AWS CLI, IAM 역할이 설치
  • Controller는 직접 AWS에 접근하지 않음

시나리오 3 — Docker & Kubernetes

  • Docker 빌드

Source:

on Docker‑enabled agents

  • Kubernetes agents run inside the cluster
  • Ephemeral pods for every pipeline run

Scenario 4 — Security Scanning

Dedicated agents for:

  • SAST
  • Dependency scanning
  • Image scanning

Isolated from prod builds

Scenario 5 — Multi‑OS Testing

  • Windows agent → .NET build
  • Linux agent → backend services
  • macOS agent → iOS build

5) Types of Jenkins Agents (DevOps View)

1️⃣ Static / Permanent Agents

  • Long‑running VMs
  • SSH or local connection

Good for:

  • Legacy systems
  • Stable workloads

2️⃣ Docker Agents

  • Agent = container
  • Created per build
  • Destroyed after job

Docker Agent

Docker Benefits

Why DevOps loves this:

  • Clean environment
  • No dependency conflicts
  • Easy version control

3️⃣ Cloud VM Agents (EC2, GCE, Azure)

  • Auto‑scale based on demand
  • Shut down when idle
  • Cost‑efficient

4️⃣ Kubernetes Agents (Modern Standard)

  • Agent = Kubernetes pod
  • Dynamically provisioned per build
  • Leverages cluster scheduling & resource isolation

에이전트 유형

  • 완전 일시적 – 마이크로‑서비스에 최적
  • 대규모 조직을 위한 산업 표준

일시적 에이전트 GIF

에이전트 유형 다이어그램

Jenkins가 에이전트를 선택하는 방법

라벨 (가장 중요)

에이전트는 다음과 같은 라벨을 가집니다:

linux
docker
terraform
k8s
mac

파이프라인 예시

pipeline {
  agent { label 'docker' }
  stages {
    stage('Build') {
      steps {
        sh 'docker build -t app .'
      }
    }
  }
}

번역: “Docker 빌드를 수행할 수 있는 에이전트에서만 이 작업을 실행합니다.”

에이전트가 Jenkins에 연결되는 방법

옵션 A — WebSocket (추천)

  • 아웃바운드 연결만
  • 인바운드 포트 없음 → 방화벽 친화적
  • 최신 기본값

사용 상황: 기업 네트워크, 로컬 데모, NAT 뒤에 있는 클라우드 에이전트.

옵션 B — SSH

  • Jenkins가 에이전트에 연결을 시작함
  • EC2 인스턴스에서 일반적

사용 상황: 안정적인 VM, 전통적인 인프라.

옵션 C — Kubernetes 플러그인

  • Jenkins가 포드를 요청하고, 포드가 에이전트로 등록됨
  • 작업이 끝난 후 포드가 종료됨

사용 상황: 클라우드 네이티브 파이프라인, GitOps 환경.

에이전트 수명 주기 (DevOps 사고)

유형수명 주기
Static VM항상 실행
Docker agent작업당
Kubernetes pod작업당
Cloud VM자동 확장

추세: 일시적 > 영구적

DevOps가 따라야 할 모범 사례

  • 컨트롤러에서 빌드를 실행하지 마세요
  • 라벨을 올바르게 사용하세요
  • 일시적인 에이전트를 선호하세요 (Docker, Kubernetes)
  • 빌드, 테스트, 배포 에이전트를 분리하세요
  • 사용 후 에이전트를 교체하거나 파기하세요
  • 에이전트당 최소 권한만 부여하세요
  • 에이전트 상태를 모니터링하세요

일반적인 실수 (면접 함정)

  • “Everything runs on Jenkins master” ❌
  • “Agents are optional” ❌
  • “One agent is enough” ❌
  • “Controller can run Docker builds” ❌

올바른 사고방식: 에이전트가 없는 Jenkins는 프로덕션에 적합하지 않다.

Interview‑Ready Summary (Memorize)

“Jenkins 에이전트는 파이프라인 단계를 실행하는 워커 노드입니다. 우리는 이를 CI/CD를 확장하고, 빌드를 격리하며, 여러 환경을 지원하고, 보안을 향상시키기 위해 사용합니다. 현대 DevOps에서는 에이전트가 ephemeral—대개 Docker 또는 Kubernetes 기반이며—Jenkinsfile에서 labels를 통해 선택됩니다.”

Back to Blog

관련 글

더 보기 »

Multibranch Pipeline 랩

!Aisalkyn Aidarovahttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fupl...

개발 팀이 성장함에 따라 CI/CD 최적화

문제의 첫 번째 징후는 보통 빌드 큐입니다. 몇 명의 개발자가 팀에 합류하고 커밋 빈도가 증가하면, 이전에 원활하게 돌아가던 CI/CD 파이프라인이 갑자기…

Jenkins가 명령을 실행해 줍니다

Jenkins 이전 - 엔지니어가 명령을 수동으로 실행 - 단계들을 잊음 - 실수를 함 - 신뢰성 있게 반복할 수 없음 Jenkins 사용 시 - 명령을 한 번만 작성 - Jenkins가 …