반응형

참고: 아래 yaml들은 kubernetes 1.23.5 환경에서 진행하였다

 

 

# Namespace 생성 

- 앞으로 devops라는 namespace에 각종 서비스를 올릴 예정이다. 

kubectl create namespace devops

 

# PV 생성

- synology의 NFS를 사용하기 위해 아래와 같이 pv를 선언

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
spec:
  storageClassName: nfs-sc
  capacity:
    storage: 50Gi
  persistentVolumeReclaimPolicy: Retain
  accessModes:
    - ReadWriteMany
  nfs:
    server: 12.34.56.78
    path: '/volume1/nfs_root/jenkins'
    readOnly: false

# PVC 생성

-

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
  namespace: devops
spec:
  storageClassName: nfs-sc
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 50Gi

# Deployment 생성

- jenkins lts 이미지를 사용하게 적용하였다

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: devops
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      securityContext:
        fsGroup: 1000
        runAsUser: 0
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        ports:
          - name: http-port
            containerPort: 8080
          - name: jnlp-port
            containerPort: 50000
        volumeMounts:
          - name: jenkins-volume
            mountPath: /var/jenkins_home
      volumes:
        - name: jenkins-volume
          persistentVolumeClaim:
            claimName: jenkins-pvc

 

# Service 생성

- 8080포트와 50000 포트를 서비스 포트로 등록

apiVersion: v1
kind: Service
metadata:
  name: jenkins-svc
  namespace: devops
spec:
  ports:
    - port: 8080
      targetPort: 8080
      protocol: TCP
      name: http
  selector:
    app: jenkins

---

apiVersion: v1
kind: Service
metadata:
  name: jenkins-jnlp-svc
  namespace: devops
spec:
  ports:
    - port: 50000
      targetPort: 50000
      protocol: TCP
      name: jnlp
  selector:
    app: jenkins

 

# Ingress 생성

- jenkins.devops.svc 라는 도메인으로 접속을 하기 위해 ingress 설정을 아래와 같이 하였다

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: jenkins-ingress
  namespace: devops
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: jenkins.devops.svc
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: jenkins-svc
            port:
              number: 8080

 

여기까지 모든 구성이 완료되면 /etc/hosts에 master node의 ip를 등록하자

 

그리고 브라우저에서 해당 주소로 접속을 하면 정상적으로 jenkins가 뜬것을 확인할 수 있다.

http://jenkins.devops.svc:31039 

(31039는 앞에 post에서 ingress 서비스를 조회하였을때 알아뒀던 node port이다)

 

반응형

+ Recent posts