Ops-Beginner
article thumbnail
Published 2023. 8. 23. 12:41
CI - Jenkins (1) CICD
반응형

안녕하세요.

 

오늘은 CI Tool인 Jenkins에 대해서 다뤄보겠습니다.
먼저 CI/CD (Continuous Integration/Continuous Delivery)이란?
간단하게, 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법입니다.
기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포입니다.
새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션입니다.

구성도

앞으로 천천히 작성하려고하는 구성도입니다.

앞으로 구성해볼 구성도

 

Jenkins 무엇인가?

  • Jenkins는 소프트웨어 구축, 테스트, 제공 또는 배포와 관련된 모든 종류의 작업을 자동화하는 데 사용할 수 있는 독립형 오픈 소스 자동화 서버입니다.
  • 기본 시스템 패키지, Docker를 통해 설치하거나 JRE(Java Runtime Environment)가 설치된 모든 시스템에서 독립형으로 실행할 수도 있습니다.
  • Plugin(Git, Credentials, Pipeline, ... 등)을 사용하여 CI/CD Pipeline을 구축할 수 있습니다.
 

Jenkins 설치

Kubernetes Native 하게 구성진행하였고, 여기에서 구성한 환경을 사용했습니다.

 

Values.yaml 준비

설치 시 Helm을 이용했습니다. (values.yaml)

  • resources 부분
  • affinity 부분
  • storageClass 부분

values.yaml에서 3곳을 수정하여 사용했습니다.

 

Persistent Volume 설정

On-premise 클러스터이기때문에 storageClass는 'local-path'를 이용했습니다.

먼저 Jenkins가 사용할 Persistent Volume을 생성합니다.

그리고 k8s-w2 노드에 '/jenkins' 디렉터리를 사용할 수 있도록 생성해줍니다.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
spec:
  capacity:
    storage: 30Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-path
  local:
    path: /jenkins
  claimRef:
    namespace: jenkins
    name: jenkins
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - k8s-w2

 

Helm Install Command

아래의 명령어로 Jenkins를 설치합니다.

# Helm repo add
helm repo add jenkinsci https://charts.jenkins.io

# Jenkins Install
helm install jenkins -n jenkins -f jenkins-values.yaml jenkinsci/jenkins

# Install Verify
helm list -n jenkins
 

Ingress 설정

접속 시 port-forward를 사용해도 되고, 사용하는 도메인이 있다면 서버주소를 미리 등록하여 Ingress로 접근합니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: jenkins-ingress
  namespace: jenkins
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: jenkins.{DOMAIN}
      http:
        paths:
          - path: /
            pathType: Prefix
            backend: 
              service:
                name: jenkins
                port: 
                  number: 8080

 

마무리

Jenkins 기본 설치를 다뤄보는 시간이었습니다.

다음 시간에는 Jenkins를 디테일하게 설정하고, Plugin을 설치하는 내용으로 오겠습니다.

감사합니다.

 

반응형

'CICD' 카테고리의 다른 글

CD - ArgoCD  (0) 2023.08.24
CI - Jenkins (2)  (0) 2023.08.23
profile

Ops-Beginner

@asher_r

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!