설치를 위해, 사전에 작성해 둔 YAML 파일들을 가져옵니다.
git clone https://github.com/rudasoft/pipeline.git
cd pipeline
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
namespace: pipeline
spec:
storageClassName: jenkins-pv
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /host_mnt/d/data/jenkins/
Kubernetes 에서 실제 물리적 디스크를 PersistentVolumeClaim 과 PersistentVolume 을 통해 사용합니다. 이전 수정한 설정 파일로 PersistentVolume 을 생성하고 확인합니다.
kubectl create -f jenkins-pv.yaml
kubectl get pv --namespace=pipeline
kubectl describe pv jenkins-pv --namespace=pipeline
Jenkins 용 가상 도메인을 부여하여 Host 머신을 가르킬 수 있도록 host 파일을 수정해야 합니다.
host 파일에 본인의 실제 IP를 맵핑하여 호스트 머신을 찾을 수 있도록 하였습니다.
192.168.43.183 jenkins.pipeline.internal
persistence:
storageClass: "jenkins-pv"
master:
adminUser: "admin"
adminPassword: "admin"
Jenkins 를 설치 후 확인합니다.
helm install jenkins stable/jenkins -f jenkins-values.yaml --namespace=pipeline
kubectl get pods --namespace=pipeline
정상적으로 설치가 되었다면 docker-registry pod 이 Running 상태가 됩니다.
이전 생성한 pipeline-ns Namespace 에 jenkins-values.yaml설정을 적용하여 Helm 으로 Jenkins 를 설치합니다.
helm install jenkins stable/jenkins -f jenkins-values.yaml --namespace=pipeline-ns
kubectl get pods --namespace=pipeline-
정상적으로 설치가 되었다면 jenkins pod 가 Running 상태가 됩니다.
Kubernetes 에서는 pod 들에 접근하기 위한 정책을 정의한 추상적 개념을 Service 를 통해 관리합니다. Running 상태가 된 Jenkins pod에 접근하기 위해서 Service 를 생성합니다.
kubectl expose deployment jenkins --type=LoadBalancer --name=jenkins-svc --namespace=pipeline
kubectl get svc --namespace=pipeline
정상적으로 Service 가 생성되었다면,
http://jenkins.pipeline.internal:8080 로 접속합니다.