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
- https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs
- https://www.jenkins.io/doc/book/installing/kubernetes/
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가 확인됨을 볼 수 있다.
반응형