기록

K3s 기반 멀티 노드 클러스터 구축기 (5) - Helm을 이용한 Jenkins 설치 및 접속 테스트 본문

DevOps

K3s 기반 멀티 노드 클러스터 구축기 (5) - Helm을 이용한 Jenkins 설치 및 접속 테스트

zyin 2025. 5. 5. 12:00

쿠버네티스 환경에 CI/CD 파이프라인을 구축하기 위해 Jenkins를 설치하고자 한다. 이번 글에서는 Helm Chart를 활용해 Jenkins를 설치하는 과정을 자세히 다루고, 설치 후 접속까지 정상적으로 되는지 확인하는 흐름을 정리한다. 이 실습은 Infra 계정과 Dev 계정 간 VPC Peering을 완료한 상태에서 진행된다.

1. 설치 배경

개발/운영 파이프라인을 체계적으로 관리하기 위해 Jenkins를 기반으로 CI/CD 환경을 구성하려 한다. Jenkins는 오픈 소스 기반으로 매우 강력한 기능을 제공하는 툴이며, Helm을 이용해 빠르고 손쉽게 쿠버네티스 클러스터에 배포할 수 있다. 이번 작업은 Jenkins 설치 및 초기 설정까지를 목표로 삼는다.

2. Jenkins 설치 준비

Helm Repository를 업데이트하고 Jenkins Chart를 설치하기 위해 필요한 기본적인 준비를 진행한다.

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

그 다음 Jenkins 설치를 위한 values.yaml 파일을 작성한다. 이 파일에는 Admin 계정 설정, 퍼시스턴트 볼륨 클레임(PVC) 사용 여부, 리소스 설정 등이 포함된다.

controller:
  admin:
    username: admin
    password: admin1234

  resources:
    requests:
      cpu: 50m
      memory: 256Mi
    limits:
      cpu: 200m
      memory: 512Mi

persistence:
  enabled: true
  storageClass: "local-path"
  size: 8Gi

service:
  type: NodePort

3. Helm Chart를 통한 Jenkins 설치

Helm을 이용해 Jenkins를 설치한다. 이때 jenkins 네임스페이스를 따로 만들어 설치를 깔끔하게 분리한다.

kubectl create namespace jenkins
helm install jenkins jenkins/jenkins -n jenkins --create-namespace -f jenkins-values.yaml

설치가 완료되면 Helm은 접속 방법과 초기 Admin 패스워드를 확인하는 방법을 안내한다.

4. PVC 생성 및 Pod 상태 확인

Jenkins는 Persistent Volume Claim(PVC)을 필요로 한다. PVC를 미리 생성해주지 않으면 Pod가 Pending 상태에 머무르게 된다. 아래처럼 PVC를 생성해준다.

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins
  namespace: jenkins
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
  storageClassName: local-path
EOF

PVC가 정상적으로 Bound 상태가 되면 Jenkins Pod가 본격적으로 기동한다.

kubectl get pvc -n jenkins

Pod 상태도 확인한다.

kubectl get pods -n jenkins

Pod가 2/2 Running 상태가 되면 Jenkins가 정상적으로 올라온 것이다.

5. NodePort를 통한 외부 접속 설정

Jenkins는 기본적으로 ClusterIP 타입으로 설치되기 때문에 외부에서 접속할 수 없다. 이를 NodePort 타입으로 변경해준다.

kubectl patch svc jenkins -n jenkins -p '{"spec": {"type": "NodePort"}}'

변경 후 NodePort가 할당된 것을 확인하고, 퍼블릭 IP + NodePort 조합으로 Jenkins에 접속할 수 있다.

kubectl get svc -n jenkins

 

6. 초기 로그인

초기에는 Admin 계정(admin/admin1234)으로 로그인할 수 있다. 이후 필요한 경우 보안을 강화하거나 추가 플러그인 설치, Pipeline Job 구성 등을 진행할 수 있다.

Comments