일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- pacman
- nfs-provisioner
- archlinux
- golang
- HTML
- KVM
- Ansible
- yum
- repository
- ubuntu
- libvirt
- k8s
- terraform
- kolla
- Arch
- ceph-ansible
- Kubernetes
- awx
- i3
- Kubeflow
- cephadm
- kolla-ansible
- ceph
- cloud-init
- Docker
- port open
- Octavia
- grafana-loki
- OpenStack
- Linux
Archives
- Today
- Total
YJWANG
Jenkins on Kubernetes (NFS Static PV) 본문
본 포스팅에서는 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가 확인됨을 볼 수 있다.
반응형