지금까지 진행한 쿠버네티스 실습은 모두 "빌드된 이미지를 사용"하여
쿠버네티스 클러스터의 동작을 이해하기 위한 목적이었다.
이제는 직접 애플리케이션을 빌드하고, Docker 이미지를 만들고,
쿠버네티스에 배포하는 전체 자동화 파이프라인(CI/CD)을 구축할 것이다.
이번 환경은 Jenkins를 중심으로 구성하며, 추후 Helm, Kustomize, ArgoCD 등의
툴들을 붙여가며 구성한다.
- [VM 생성 및 OS 설치]
- [JDK & Gradle 설치]
- [Docker 설치 및 권한]
- [Jenkins 설치]
- [Master Node 인증서 복사]
- [Jenkins CI/CD 파이프라인 구성]
- [애플리케이션 빌드]
- [Docker 이미지 빌드]
- [쿠버네티스 배포]
1. Jenkins용 VM 생성
VM 구성
- Name: cicd-server
- OS: Linux (Rocky Linux ISO)
- Memory: 2048MB
- CPU Cores: 2
- Disk Size: 32GB
- Network: 수동 IP 설정 (192.168.56.20)
Rocky 설치 설정
- 언어: 한국어(대한민국)
- root 비밀번호 설정
- SSH 로그인 허용 설정 (root)
- 설치 목적지: 자동 설정
- 네트워크 설정: enp0s1 수동 IP 설정 (주소: 192.168.56.20 / 게이트웨이: 192.168.56.1)
2. 시스템 세팅
JDK & Gradle 설정
- JDK, Gradle 설치 후 환경 변수 등록
- /etc/profile에 JAVA_HOME, GRADLE_HOME 등 설정
Docker 설치 및 Jenkins 권한 설정
chmod 666 /var/run/docker.sock
usermod -aG docker jenkins
su - jenkins -s /bin/bash
docker login # Jenkins 계정에서 DockerHub 로그인
3. 쿠버네티스 인증 설정
Master Node로부터 인증서 복사
mkdir ~/.kube
scp root@192.168.56.30:/root/.kube/config ~/.kube/
kubectl get pods -A # 연결 확인
오류 발생 시:
OpenSSL version mismatch => sudo yum update openssl openssh-server -y
4. Jenkins 빌드/배포 파이프라인
Jenkins에서 파이프라인 실행 흐름
- GitHub 저장소 clone
- Gradle로 애플리케이션 빌드 → jar 생성
3. Docker 이미지 빌드
4. 쿠버네티스에 kubectl apply로 배포
5. 트러블슈팅 요약
VM 부팅 실패
- 원인: ISO 경로에 한글 포함 또는 마운트 중복
- 해결: 한글 없는 경로로 이동 + 마운트 해제
Jenkins 플러그인 설치 실패
- 원인: Jenkins 버전(2.440.2) 너무 낮음
- 해결: 2.440.3 이상 버전 설치 + Jenkins 데이터 디렉터리 초기화 후 재설정
인증서 복사 중 OpenSSL 오류
- 해결: sudo yum update openssl openssh-server
쿠버네티스 통신 에러 (빌드 실패)
- 원인: VM 중단으로 kube-apiserver 접근 불가
- 해결: VM 재부팅
파드 FailedMount
- 원인: 호스트 볼륨 디렉터리 없음
- 해결: 디렉터리 생성 및 권한 부여
sudo mkdir -p /root/k8s-local-volume/2121
sudo chmod 777 /root/k8s-local-volume/2121
마무리
이제 수정된 코드로 애플리케이션 빌드 -> 빌드 파일로 새로운 이미지 빌드 -> 쿠버네티스로 배포이 과정을 젠킨스로 구성했다.
이제 이 배포과정을 단계별로 고도화할 것이다.
'공부일지 > K8S 스터디' 카테고리의 다른 글
[k8s 스터디] #15 파이프라인 구축하기 (1) | 2025.06.03 |
---|---|
[k8s 스터디] #14 배포를 하기 전에 반드시 알아야 할 것 (0) | 2025.05.30 |
[k8s 스터디] #12 DevOps에게 중요한 것 (0) | 2025.05.28 |
[k8s 스터디] #11 Component 동작으로 이해하기 (0) | 2025.05.27 |
[k8s 스터디] #10 HPA (0) | 2025.05.26 |