본문 바로가기

DevOps/CI|CD

쿠버네티스에 젠킨스(Jenkins) 설치하기

쿠버네티스에 젠킨스(Jenkins) 설치하기

MetalLB 구성 > jenkins namespace 생성 > pv,pvc 생성 > deployment 생성 > service 생성

 

 


# MetalLB 구성

MetalLB 컨트롤러는 작동방식(Protocol)을 정의하고 EXTERNAL-IP를 부여해 관리한다. MetalLB 스피커는 정해진 작동방식에 따라 경로를 만들 수 있도록 네트워크 정보를 광고하고 수집해 각 파드의 경로를 제공한다.

 

1. 사전에 정의된 오브젝트 스펙으로 MetalLB 구성

$ kubectl apply -f  _Book_k8sInfra/ch3/3.3.4/metallb.yaml

 

 

2. 파드 확인

$ kubectl get pods -n metallb-system -o wide

 

 

 

3. MetalLB 설정 적용

$ kubectl apply -f  _Book_k8sInfra/ch3/3.3.4/metallb-l2config.yaml
$ kubectl get configmap -n metallb-system

 

 

 


# namespace 생성

$ kubectl create namespace jenkins

 

 


# PV 와 PVC 구성

$ kubectl apply -f jenkins-volume.yaml
더보기
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins
  namespace: jenkins
spec:
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.56.10
    path: /var/jenkins_home
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins
  namespace: jenkins
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 50Gi

 

 


# 젠킨스 배포

1. jenkins deployment 와 service 생성

# jenkins_deployment.yaml 배포 
$ kubectl apply -f jenkins_deployment.yaml

# jenkins_service.yaml 배포 
$ kubectl apply -f jenkins_service.yaml
더보기
# jenkins_deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-deploy
  namespace: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        ports:
        - name: http-port
          containerPort: 8080
        - name: jnlp-port
          containerPort: 50000
        volumeMounts:
        - name: jenkins
          mountPath: /var/jenkins_home
      volumes:
      - name: jenkins
        persistentVolumeClaim:
          claimName: jenkins
# jenkins_service.yaml

apiVersion: v1
kind: Service
metadata:
  name: jenkins
  namespace: jenkins
spec:
  type: LoadBalancer
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    app: jenkins

---

apiVersion: v1
kind: Service
metadata:
  name: jenkins-jnlp
  namespace: jenkins
spec:
  type: LoadBalancer
  ports:
    - port: 50000
      targetPort: 50000
  selector:
    app: jenkins

 

 

 

 

2. jenkins deployment 와 service 생성 확인

$ kubectl get all -n jenkins

 

 

 

3. jenkins pod log 조회 (admin 비밀번호 확인)

$ kubectl logs jenkins-deploy-7fbfbc56b8-vk7gx -n jenkins

 

 

 

4. jenkins 접속

접속 후 log에서 확인한 admin 비밀번호 입력

 

 

 

5. 플러그인 설치

Install suggested plugins 을 눌러 플러그인 설치

 

 

 

7. 설치 완료

 

 

 

 

 

 

 

참고 문서: 

- https://www.jenkins.io/doc/book/installing/kubernetes/(PV,PVC 구성)

- https://cleanupthedesk.tistory.com/49(Jenkins 설치)

- "컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 - 조훈,심근우,문성주 지음/길벗출판사" 책을 기반으로 실습한 내용입니다.(MetalLB 설치)