지금까지 진행한 쿠버네티스 실습은 모두 "빌드된 이미지를 사용"하여

쿠버네티스 클러스터의 동작을 이해하기 위한 목적이었다.

이제는 직접 애플리케이션을 빌드하고, Docker 이미지를 만들고,

쿠버네티스에 배포하는 전체 자동화 파이프라인(CI/CD)을 구축할 것이다.

이번 환경은 Jenkins를 중심으로 구성하며, 추후 Helm, Kustomize, ArgoCD 등의

툴들을 붙여가며 구성한다.

 

  1. [VM 생성 및 OS 설치]
  2. [JDK & Gradle 설치]
  3. [Docker 설치 및 권한]
  4. [Jenkins 설치]
  5. [Master Node 인증서 복사]
  6. [Jenkins CI/CD 파이프라인 구성]
  7. [애플리케이션 빌드]
  8. [Docker 이미지 빌드]
  9. [쿠버네티스 배포]

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에서 파이프라인 실행 흐름

  1. GitHub 저장소 clone
  2. 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

마무리

이제 수정된 코드로 애플리케이션 빌드 -> 빌드 파일로 새로운 이미지 빌드 -> 쿠버네티스로 배포이 과정을 젠킨스로 구성했다.

이제 이 배포과정을 단계별로 고도화할 것이다.

 

+ Recent posts