Red Hat OpenShift 플랫폼 - 빌드

이eun·2025년 3월 10일

Red Hat OpenShift의 빌드(Build) 개념

OpenShift에서는 컨테이너 이미지를 생성하고 배포하는 과정을 빌드(Build)라고 해.
빌드는 소스 코드에서 컨테이너 이미지를 생성하는 과정이며, 생성된 이미지는 OpenShift 클러스터에서 실행할 수 있어.

빌드 방식은 크게 Source-to-Image(S2I), Docker Build, Custom Build 등의 방법이 있어.


1. OpenShift 빌드 유형

빌드 유형설명
Source-to-Image (S2I) 빌드소스 코드에서 바로 컨테이너 이미지를 빌드
Docker 빌드기존 Dockerfile을 이용하여 이미지 생성
Custom 빌드사용자 정의 빌드 프로세스 사용
Pipeline 빌드Jenkins를 활용한 CI/CD 파이프라인

📌 현재 클러스터에서 사용 가능한 빌드 전략 확인

oc get buildconfigs

2. Source-to-Image (S2I) 빌드

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 빌더를 사용하여 GitHubdjango-ex 프로젝트를 빌드하여 배포

📌 빌드 상태 확인

oc logs -f bc/django-ex

📌 생성된 이미지 확인

oc get builds

3. Docker 빌드 (Dockerfile 사용)

기존 Dockerfile을 이용하여 컨테이너 이미지를 빌드할 수도 있어.

📌 Docker 빌드 예제
1. Dockerfile을 포함한 프로젝트를 OpenShift에 배포

oc new-build --dockerfile='FROM nginx:latest' --name=my-nginx
  1. 빌드 확인
oc logs -f bc/my-nginx
  1. 생성된 이미지로 Pod 실행
oc new-app my-nginx

4. Custom 빌드 (사용자 정의 빌드 방식)

기본 제공되는 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"

👉 이 BuildConfigCustom Builder 이미지(my-custom-builder)를 사용하여 특정 Git 저장소를 빌드하도록 설정.

📌 빌드 실행

oc start-build custom-build

5. Pipeline 빌드 (Jenkins CI/CD 연동)

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

6. OpenShift 빌드 관리 명령어 정리

명령어설명
oc new-build새 빌드 생성
oc start-build <빌드명>빌드 실행
oc get builds빌드 목록 확인
oc logs -f bc/<빌드명>빌드 로그 확인
oc delete build <빌드명>특정 빌드 삭제

📌 정리

  1. S2I 빌드: 소스 코드에서 컨테이너 이미지 자동 생성
  2. Docker 빌드: Dockerfile을 이용한 빌드
  3. Custom 빌드: 사용자가 직접 빌드 프로세스 정의 가능
  4. Pipeline 빌드: Jenkins를 이용한 CI/CD 자동화 가능
  5. 빌드 실행 및 관리: oc new-build, oc start-build, oc logs 활용

이제 OpenShift에서 컨테이너 이미지를 빌드하고 배포하는 방법을 알았지?
더 궁금한 점 있으면 질문해줘! 🚀😊

0개의 댓글