일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Firelens
- LoadBalancer Controller
- 쿠버네티스
- Kubernetes
- 딥레이서
- Solution Architecture
- kubernetes 동작 원리
- 깃허브 액션
- EFS CSI Driver
- Aurora cluster
- headless service
- AWS 딥레이서
- 솔데스크
- 딥레이서 보상함수
- github action 사용법
- SAA 합격 후기
- grafana on kubernetes
- livenessPorbe
- jenkins
- 쿠버네티스 컴포넌트
- Prometheus install
- EKS 클러스터
- terraform
- Kubernets on Jenkins
- helm
- 그라파나 대시보드
- blue-green
- 로드밸런서 컨트롤러
- 그라파나 시각화
- 메탈LB
mingming
jenkins on kubernetes 본문
Jenkins

젠킨스(Jenkins) 란?
Jenkins는 지속적인 통합 ( Continuous Integration, CI ) 및 지속적인 전달 ( Continuos Delivery, CD ) 프로세스를 자동화하고 관리하기 위한 오픈소스 자동화 도구 입니다. 애플리케이션의 개발, 테스트 및 배포 과정을 효율적으로 관리하고 자동화하는 데 사용됩니다.
주요 기능
자동 빌드
코드 변경이 발생하면 Jenkins는 자동으로 소스 코드를 가져와 컴파일하고 빌드합니다.
자동 테스트
빌드 후에 Jenkins는 자동으로 테스트를 실행하여 코드의 품질과 안정성을 확인합니다.
자동 배포
테스트가 성공적으로 완료되면 Jenkins는 애플리케이션을 특정 환경으로 배포하거나 스테이징 및 프로덕션 환경으로 배포 프로세스를 자동화할 수 있습니다.
스케줄링 및 이벤트 기반 실행
Jenkins는 정기적으로 자겅ㅂ을 실행하거나 코드 저장소에 변경 사항이 발생할 때 작업을 트리거할 수 있습니다.
프로그래밍 가능한 확장성
Jenkins는 다양한 플러그인을 지원하므로 사용자 정의 빌드 및 배포 프로세스를 만들 수 있습니다.
사전 준비 사항
앞서 Vagrant로 구성한 Vanila Kubernetes Cluster 환경에서 실습을 진행했습니다. 외부에서 접근하기 위해 Metal LB 또한 설치해 두었습니다.
https://mingming-96.tistory.com/30
Vagrant로 kubernetes Cluster 구축하기
Vagrant Vagrant는 가상 개발 환경을 관리하고 구축하기 위한 오픈 소스 소프트웨어 입니다. Vagrant를 사용해 VirtualBox , VMware등 가상 개발 환경을 프로비저닝할 수 있습니다. Vagrant 장점 1. 일관성 유지
mingming-96.tistory.com
https://mingming-96.tistory.com/26
kubernets Metal LB 설치하기
Metal LB AWS, GCP , AZURE 등 Cloud 플랫폼에서 자체적인 로드밸런서를 제공해주지만 온프레미스 클러스터에선 로드밸런싱 기능을 제공하는 패키지 설치가 추가로 필요합니다. MetalLB 설치 가이드 Mode La
mingming-96.tistory.com
NFS Server
먼저 Jenkins에 사용할 Persistent Volume을 생성해 주어야 합니다 . nfs server를 구성해 PV를 생성해 줍니다.
nfs-server install
sudo apt install -y nfs-server
mount directory 생성
mkdir -p /nfs_shared/jenkins
chmod 755 /nfs_shared/jenkins
vim /etc/exports
/nfs_shared/jenkins 192.168.45.0/24(rw,sync,no_subtree_check)
jenkins-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
spec:
capacity:
storage: 100Mi ## 필요에 맞게 수정
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
server: 192.168.45.240
path: /nfs_shared/jenkins
Jenkins Install
Jenkins repo add
helm repo add jenkins https://charts.jenkins.io
helm repo update
jenkins-values.yaml
values.yaml 파일은 helm chart 패키지 설정을 정의하는데 사용됩니다. 아래의 명령어로 values.yaml 파일을 불러옵니다.
helm show values jenkins/jenkins > jenkins-values.yaml
vi jenkins-values.yaml
838 persistence:
839 enabled: true
840 ## A manually managed Persistent Volume and Claim
841 ## Requires persistence.enabled: true
842 ## If defined, PVC must be created manually before volume will be bound
843 existingClaim:
844 ## jenkins data Persistent Volume Storage Class
845 ## If defined, storageClassName: <storageClass>
846 ## If set to "-", storageClassName: "", which disables dynamic provisioning
847 ## If undefined (the default) or set to null, no storageClassName spec is
848 ## set, choosing the default provisioner. (gp2 on AWS, standard on
849 ## GKE, AWS & OpenStack)
850 ##
851 annotations: {}
852 labels: {}
853 accessMode: "ReadWriteMany"
854 volumeName: "jenkins-pv" # 수정할 부분
855 size: "100Mi"
기존엔 Storage Class를 이용해 PV를 동적으로 생성하게 되어 있지만 미리 생성해둔 PV와 PVC를 연결할 수 있도록 수정 해줍니다.
helm install
helm install jenkins jenkins/jenkins -f jenkins-values.yaml
배포한 파드와 pvc 가 정상 동작중인지 확인
kubectl get pods
kubectl get pvc

Jenkins Password
kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
Password 기록 후 로그인에 사용
Jenkins service type
Jenkins 서버를 외부로 노출하기 위해 Service Type을 LoadBalancer 로 바꿔줍니다.
kubectl patch svc jenkins -p '{"spec": {"type": "LoadBalancer"}}'
접속 테스트
kubectl get svc

EXTERNAL-IP 로 접속해 접근 가능한지 확인

위에서 기록해둔 password로 로그인 해 사용할 수 있습니다.
'DevOps' 카테고리의 다른 글
Jenkins Blue/Green Deployment (0) | 2023.09.14 |
---|---|
Jenkins 메뉴 소개 (0) | 2023.09.11 |
Github Action ArgoCD CI/CD 파이프라인 구축 (2) - Kustomize , ArgoCD (0) | 2023.08.12 |
Github Action ArgoCD CI/CD 파이프라인 구축 (1) - ECR Push (0) | 2023.08.12 |
Github Action 이란? (0) | 2023.08.11 |