Kubernetes 환경에서 Jenkins 구축하기

Jenkins 설치를 위한 Kubernetes 네임스페이스 생성

kubectl create namespace k8s-jenkins

영구 볼륨 생성

# pv-config.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-main-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 10.128.20.150
    path: /storage/data

kubectl apply -f pv-config.yaml 실행

영구 볼륨 클레임 설정

# pvc-config.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-storage-pvc
  namespace: k8s-jenkins
spec:
  resources:
    requests:
      storage: 10Gi
  accessModes:
    - ReadWriteMany

kubectl apply -f pvc-config.yaml 실행

서비스 계정 설정

kubectl create sa system-jenkins -n k8s-jenkins

RBAC 권한 부여

kubectl create clusterrolebinding sys-jenkins-crb \
--clusterrole=cluster-admin \
--serviceaccount=k8s-jenkins:system-jenkins

Jenkins 배포 구성

# jenkins-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-master
  namespace: k8s-jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins-core
  template:
    metadata:
      labels:
        app: jenkins-core
    spec:
      serviceAccountName: system-jenkins
      containers:
        - name: jenkins
          image: jenkins/jenkins:lts-jdk17
          ports:
            - containerPort: 8080
              name: web-interface
            - containerPort: 50000
              name: agent-communication
          volumeMounts:
            - name: jenkins-data
              mountPath: /var/jenkins_home
            - name: docker-binary
              mountPath: /usr/bin/docker
      volumes:
        - name: jenkins-data
          persistentVolumeClaim:
            claimName: jenkins-storage-pvc
        - name: docker-binary
          hostPath:
            path: /usr/bin/docker

kubectl apply -f jenkins-deploy.yaml 실행

서비스 노출

# jenkins-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins-external
  namespace: k8s-jenkins
spec:
  type: NodePort
  selector:
    app: jenkins-core
  ports:
    - port: 8080
      targetPort: web-interface
      nodePort: 31000
    - port: 50000
      targetPort: agent-communication

kubectl apply -f jenkins-svc.yaml 실행

주요 팟 실행 문제

  • kubectl get pods -n k8s-jenkins 상태 확인
  • 팟 로그 검사: kubectl logs [pod-name] -n k8s-jenkins
  • 팟 상세 정보: kubectl describe pod [pod-name] -n k8s-jenkins

설치 후 설정

브라우저 접속 주소: http://[노드_IP]:31000
미러 설정 URL: https://mirror.example.com/jenkins/update-center.json

태그: kubernetes Jenkins persistentvolume ServiceAccount RBAC

8월 6일 04:25에 게시됨