인프라

[Jenkins] Helm으로 Jenkins 설치하기

하루이2222 2025. 6. 13. 15:40

Kubernetes 환경에 Helm으로 Jenkins 설치하기

이 문서는 Kubernetes 클러스터에 Helm 차트를 사용하여 Jenkins를 설치하고, 데이터의 영구 저장을 위해 영구 볼륨(Persistent Volume)을 설정하는 과정을 기술함.

Jenkins와 영구 볼륨(Persistent Volume)의 필요성

Kubernetes의 기본 단위인 파드(Pod)는 **비영구적(ephemeral)**이라는 특징을 가짐. 이는 파드가 재시작되거나 다른 노드로 재배치될 경우, 파드 내부에 저장된 모든 데이터가 사라지는 것을 의미함.

Jenkins는 다음과 같은 핵심 데이터를 /var/jenkins_home 디렉터리에 저장함:

  • Job 구성: 생성한 모든 빌드 및 배포 파이프라인 설정
  • 플러그인: 설치된 모든 플러그인과 그 설정
  • 빌드 이력 및 아티팩트: 각 Job의 실행 기록, 로그, 생성된 파일
  • 시스템 설정 및 보안 정보: 사용자 계정, 인증 정보(Credentials) 등

만약 이 데이터가 파드 내부에만 저장된다면, 파드가 재시작될 때마다 모든 설정과 기록이 초기화되는 심각한 문제가 발생함.

**영구 볼륨(PV, Persistent Volume)**은 이러한 문제를 해결하기 위해 사용됨. PV는 파드의 생명주기와 독립적인 별도의 네트워크 스토리지를 파드에 연결하는 기능임. Jenkins 파드에 PV를 연결하면, 모든 중요 데이터는 파드 외부의 안전한 공간에 저장되어 파드가 재시작되어도 데이터가 그대로 보존됨. 따라서 안정적인 Jenkins 운영을 위해 PV 설정은 필수적임.


1단계: 사전 준비

1. Jenkins 네임스페이스 생성

Jenkins 설치를 위한 별도의 네임스페이스를 생성했음.

kubectl create namespace jenkins

2. Jenkins Helm 저장소 추가

공식 Jenkins Helm 차트 저장소를 추가하고 최신 정보로 업데이트했음.

helm repo add jenkinsci https://charts.jenkins.io
helm repo update

3. 스토리지 클래스(StorageClass) 확인

Jenkins가 데이터를 저장할 디스크 공간(PVC)을 동적으로 할당받기 위해, 클러스터에 설정된 스토리지 클래스를 확인해야 함. 아래 명령어로 사용 가능한 스토리지 클래스의 NAME을 확인했음.

kubectl get storageclass

출력된 NAME 중 하나(예: local-path, gp2 등)를 다음 단계에서 사용해야 하므로 기억해 둠.

2단계: 설정 파일(jenkins-values.yaml) 생성

Helm 설치 시 적용할 jenkins-values.yaml 설정 파일을 생성함. 이 파일에 데이터 영구 저장을 위한 PV 관련 설정을 추가함.

# jenkins-values.yaml
controller:
  # Jenkins 데이터를 영구적으로 저장하기 위한 설정
  persistence:
    enabled: true
    # 1단계에서 확인한 스토리지 클래스 이름을 여기에 입력
    storageClassName: "local-path"
    size: "10Gi"

** 중요:** storageClassName의 값은 반드시 1단계에서 확인한 본인의 클러스터 환경에 맞는 스토리지 클래스 이름으로 수정해야 함.

3단계: 젠킨스 설치

준비된 설정 파일을 사용하여 jenkins 네임스페이스에 Jenkins를 설치했음.

helm install jenkins jenkinsci/jenkins \
  --namespace jenkins \
  -f jenkins-values.yaml

설치 확인:
잠시 후, 아래 명령어를 통해 jenkins-0 파드가 Running 상태가 될 때까지 기다림. (최초 실행 시 이미지를 내려받는 과정에서 몇 분 정도 소요될 수 있음)

kubectl get pods -n jenkins -w

4단계: 젠킨스 접속 및 초기 설정

1. 초기 관리자 비밀번호 확인

Jenkins에 처음 로그인할 때 필요한 암호화된 관리자 비밀번호를 아래 명령어로 확인하여 복사해 둠.

kubectl exec -it -n jenkins svc/jenkins -- cat /var/jenkins_home/secrets/initialAdminPassword

2. 포트 포워딩으로 젠킨스 대시보드 접속

새 터미널을 열고 아래 명령어를 실행하여 로컬 PC에서 Jenkins 대시보드로 접근할 수 있는 통로를 개방함.

kubectl port-forward -n jenkins svc/jenkins 8080:8080

이제 웹 브라우저에서 http://localhost:8080 주소로 접속하면 Jenkins 초기 설정 화면이 나타남.

3. 초기 설정 완료

  1. Administrator password 입력창에 위에서 복사한 초기 비밀번호를 붙여넣음.
  2. 다음 화면에서 Install suggested plugins를 선택하여 추천 플러그인을 설치함.
  3. 플러그인 설치가 완료되면, 사용할 관리자 계정 정보를 입력하고 전체 설정을 마무리함.