지속적인 변경 사항을 코드로 관리하는 Jenkinsfile(Declarative Pipeline) 방식을 강력히 추천해 드리며,
Oracle DB가 이미 도커 컨테이너로 실행 중이므로 기존 인프라를 자연스럽게 쿠버네티스로 이관할 수 있습니다.
목표하시는 인프라를 단계별로 구축할 수 있도록 핵심 가이드를 정리해 드립니다.
1단계: 개인 서버용 쿠버네티스 배포판 선택
개인 서버(On-Premise) 환경이므로 무겁고 설정이 복잡한 정식 순정 Kubernetes(Kubeadm)보다는
가볍고 관리가 쉬운 경량화 배포판을 설치하는 것이 훨씬 효율적입니다.
snap install microk8s 명령어로 바로 설치할 수 있습니다.
2단계: Oracle DB 컨테이너의 쿠버네티스 이관 전략
기존 도커로 띄우던 Oracle DB를 쿠버네티스로 옮길 때는 데이터 유실 방지가 가장 중요합니다.
Deployment 대신 네트워크 식별자와 스토리지가 고정되는 StatefulSet 오브젝트로 Oracle DB를 띄우는 것이 좋습니다.
3단계: Jenkinsfile (Declarative Pipeline) 추천 구조
젠킨스 파이프라인 코드를 Git 저장소에 Jenkinsfile이라는 파일명으로 포함해 두면 배포 이력이 모두 코드로 추적됩니다. 젠킨스에 Kubernetes 플러그인을 설치하면 아래와 같은 구조로 빌드할 수 있습니다.
groovy
pipeline {
agent {
kubernetes {
// 빌드 단계에서만 동적으로 생성될 Pod 정의
yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
some-label: jenkins-build
spec:
containers:
- name: gradle
image: gradle:8-jdk17
command: ['cat']
tty: true
- name: docker
image: docker:stable
command: ['cat']
tty: true
"""
}
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('React & Spring Boot Build') {
steps {
container('gradle') {
// React 빌드 결과물을 Spring Boot static으로 복사한 뒤 jar 빌드 수행
sh './gradlew bootJar'
}
}
}
stage('Docker Image Build & Push') {
steps {
container('docker') {
// 도커 이미지 생성 및 개인/공용 레지스트리 푸시
sh 'docker build -t ://my-reg.com .'
sh 'docker push ://my-reg.com'
}
}
}
stage('Kubernetes Deploy') {
steps {
// 쿠버네티스 클러스터에 새 이미지 반영 (무중단 배포 트리거)
sh 'kubectl rollout restart deployment/atms-deployment'
}
}
}
}
댓글목록
등록된 댓글이 없습니다.