OpenShift에서는 컨테이너 이미지를 생성하고 배포하는 과정을 빌드(Build)라고 해.
빌드는 소스 코드에서 컨테이너 이미지를 생성하는 과정이며, 생성된 이미지는 OpenShift 클러스터에서 실행할 수 있어.
빌드 방식은 크게 Source-to-Image(S2I), Docker Build, Custom Build 등의 방법이 있어.
| 빌드 유형 | 설명 |
|---|---|
| Source-to-Image (S2I) 빌드 | 소스 코드에서 바로 컨테이너 이미지를 빌드 |
| Docker 빌드 | 기존 Dockerfile을 이용하여 이미지 생성 |
| Custom 빌드 | 사용자 정의 빌드 프로세스 사용 |
| Pipeline 빌드 | Jenkins를 활용한 CI/CD 파이프라인 |
📌 현재 클러스터에서 사용 가능한 빌드 전략 확인
oc get buildconfigs
S2I (Source-to-Image) 빌드는 소스 코드에서 직접 실행 가능한 컨테이너 이미지를 생성하는 방식이야.
기본적으로 OpenShift가 제공하는 S2I Builder 이미지를 사용해 빌드가 진행돼.
📌 S2I 빌드 과정
1. 소스 코드 저장소(GitHub, GitLab 등)에서 코드를 가져옴
2. S2I 빌더 이미지(Node.js, Python, Java 등)를 선택
3. 코드를 컨테이너 환경에 맞게 자동 빌드
4. 최종 컨테이너 이미지 생성
📌 S2I 빌드 예제
oc new-app python~https://github.com/sclorg/django-ex
👉 python S2I 빌더를 사용하여 GitHub의 django-ex 프로젝트를 빌드하여 배포
📌 빌드 상태 확인
oc logs -f bc/django-ex
📌 생성된 이미지 확인
oc get builds
기존 Dockerfile을 이용하여 컨테이너 이미지를 빌드할 수도 있어.
📌 Docker 빌드 예제
1. Dockerfile을 포함한 프로젝트를 OpenShift에 배포
oc new-build --dockerfile='FROM nginx:latest' --name=my-nginx
oc logs -f bc/my-nginx
oc new-app my-nginx
기본 제공되는 S2I 빌더나 Docker 빌드를 사용할 수 없는 경우, Custom Build를 활용할 수 있어.
Custom Build는 빌드 프로세스를 완전히 사용자가 제어할 수 있는 방식이야.
📌 Custom Build 예제 (BuildConfig 사용)
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
name: custom-build
spec:
runPolicy: Serial
source:
git:
uri: "https://github.com/my-repo/custom-app"
strategy:
customStrategy:
from:
kind: DockerImage
name: "my-custom-builder"
output:
to:
kind: ImageStreamTag
name: "custom-app:latest"
👉 이 BuildConfig는 Custom Builder 이미지(my-custom-builder)를 사용하여 특정 Git 저장소를 빌드하도록 설정.
📌 빌드 실행
oc start-build custom-build
OpenShift는 Jenkins Pipeline을 지원해서, CI/CD 환경을 구축할 수 있어.
Jenkinsfile을 이용해서 빌드, 테스트, 배포를 자동화할 수 있어.
📌 Pipeline 빌드 예제
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
name: jenkins-pipeline
spec:
strategy:
jenkinsPipelineStrategy:
jenkinsfile: |
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
👉 OpenShift에서 Jenkins Pipeline을 실행하여 빌드 프로세스를 자동화 가능.
📌 Pipeline 실행
oc start-build jenkins-pipeline
| 명령어 | 설명 |
|---|---|
oc new-build | 새 빌드 생성 |
oc start-build <빌드명> | 빌드 실행 |
oc get builds | 빌드 목록 확인 |
oc logs -f bc/<빌드명> | 빌드 로그 확인 |
oc delete build <빌드명> | 특정 빌드 삭제 |
Dockerfile을 이용한 빌드 oc new-build, oc start-build, oc logs 활용 이제 OpenShift에서 컨테이너 이미지를 빌드하고 배포하는 방법을 알았지?
더 궁금한 점 있으면 질문해줘! 🚀😊