YJWANG

Jenkins on Kubernetes (NFS Static PV) 본문

60.Cloud/80.Kubernetes

Jenkins on Kubernetes (NFS Static PV)

왕영주 2021. 1. 6. 09:44

본 포스팅에서는 Jenkins를 Kubernetes 위에 설치하는 방법에 대해 다룰 예정입니다.

PV(PersistentVolume)은 NFS를 사용할 예정이니 NFS Server설정을 사전에 하고 해당 Directory에 Other User가 RWX할 수 있도록 권한 부여가 필요합니다.

추가로 NFS PV 사용 관련한 포스팅이 별도로 있으니 참고 하시기 바랍니다.
https://yjwang.tistory.com/entry/Kubernetes-PV-NFS

refer to

Deploy

우선 namespace manifest를 생성합니다.

#00-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: jenkins

deploy 진행

# kubectl apply -f 00-namespace.yaml

# kubectl get ns jenkins
NAME      STATUS   AGE
jenkins   Active   18h

pv manifest 생성

#01-jenkins-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins
  namespace: jenkins
spec:
  capacity:
    storage: 25Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.11.90.90
    path: "/data/jenkins"

deploy 진행

# kubectl apply -f 01-jenkins-pv.yaml

pvc manifest 생성

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

deploy 진행

# kubectl apply -f 02-jenkins-pvc.yaml

deployment manifest 생성

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

deploy 진행

# kubectl apply -f 03-deployment.yaml

service manifest 생성

#04-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins
  namespace: jenkins
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    app: jenkins

deploy 진행

# kubectl apply -f 04-service.yaml

deploy 확인

아래는 scale out을 한 상태이다.

[root@master01 jenkins]# kubectl get all -n jenkins
NAME                          READY   STATUS    RESTARTS   AGE
pod/jenkins-9958f4c66-dzst6   1/1     Running   0          30m
pod/jenkins-9958f4c66-vvf7w   1/1     Running   0          17m

NAME              TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/jenkins   NodePort   10.100.203.113   <none>        8080:31645/TCP   29m

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/jenkins   2/2     2            2           32m

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/jenkins-84944445ff   0         0         0       32m
replicaset.apps/jenkins-9958f4c66    2         2         2       30m

이후 NodePort를 통해 Web 접속 후 기본적인 세팅 후에 아래와 같이 정상적으로 Jenkins가 확인됨을 볼 수 있다.

반응형