빌드 작업


builds for Red Hat OpenShift 1.2

빌드 사용

Red Hat OpenShift Documentation Team

초록

이 문서에서는 빌드 사용에 대한 절차 예제를 제공합니다.

1장. 빌드 실행

빌드를 설치한 후 사용할 buildah 또는 S2I(Source -to-Image ) 빌드를 생성할 수 있습니다. 빌드에 필요하지 않은 사용자 정의 리소스를 삭제할 수도 있습니다.

1.1. buildah 빌드 생성

buildah 빌드를 생성하고 생성된 이미지를 대상 레지스트리로 내보낼 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 Red Hat OpenShift Operator 빌드가 설치되어 있습니다.
  • shipwrightBuild 리소스를 생성했습니다.
  • oc CLI를 설치했습니다.
  • 선택 사항: shp CLI 를 설치했습니다.

프로세스

  1. 빌드 리소스를 생성하고 CLI 중 하나를 사용하여 OpenShift Container Platform 클러스터에 적용합니다.

    예: oc CLI 사용

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: Build
    metadata:
      name: buildah-golang-build
    spec:
      source: 
    1
    
        type: Git
        git:
          url: https://github.com/shipwright-io/sample-go
        contextDir: docker-build
      strategy: 
    2
    
        name: buildah
        kind: ClusterBuildStrategy
      paramValues: 
    3
    
      - name: dockerfile
        value: Dockerfile
      output: 
    4
    
        image: image-registry.openshift-image-registry.svc:5000/buildah-example/sample-go-app
    EOF
    Copy to Clipboard Toggle word wrap

    1
    소스 코드가 배치되는 위치입니다.
    2
    컨테이너를 빌드하는 데 사용하는 빌드 전략입니다.
    3
    빌드 전략에 정의된 매개변수입니다. dockerfile strategy 매개변수 값을 설정하려면 출력 이미지를 빌드하는 데 필요한 Dockerfile 위치를 지정합니다.
    4
    빌드된 이미지를 푸시하는 위치입니다. 이 절차 예에서 빌드된 이미지가 OpenShift Container Platform 클러스터 내부 레지스트리로 푸시됩니다. buildah-example 은 현재 프로젝트의 이름입니다. 이미지를 푸시할 수 있도록 지정된 프로젝트가 있는지 확인합니다.

    예: shp CLI 사용

    $ shp build create buildah-golang-build \
    --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="buildah-build" \
    1
    
    --strategy-name="buildah" \
    2
    
    --dockerfile="Dockerfile" \
    3
    
    --output-image="image-registry.openshift-image-registry.svc:5000/buildah-example/go-app" 
    4
    Copy to Clipboard Toggle word wrap

    1
    소스 코드가 배치되는 위치입니다.
    2
    컨테이너를 빌드하는 데 사용하는 빌드 전략입니다.
    3
    빌드 전략에 정의된 매개변수입니다. dockerfile strategy 매개변수 값을 설정하려면 출력 이미지를 빌드하는 데 필요한 Dockerfile 위치를 지정합니다.
    4
    빌드된 이미지를 푸시하는 위치입니다. 이 절차 예에서 빌드된 이미지가 OpenShift Container Platform 클러스터 내부 레지스트리로 푸시됩니다. buildah-example 은 현재 프로젝트의 이름입니다. 이미지를 푸시할 수 있도록 지정된 프로젝트가 있는지 확인합니다.
  2. CLI 중 하나를 사용하여 Build 리소스가 생성되었는지 확인합니다.

    예: oc CLI 사용

    $ oc get builds.shipwright.io buildah-golang-build
    Copy to Clipboard Toggle word wrap

    예: shp CLI 사용

    $ shp build list
    Copy to Clipboard Toggle word wrap

  3. BuildRun 리소스를 생성하고 CLI 중 하나를 사용하여 OpenShift Container Platform 클러스터에 적용합니다.

    예: oc CLI 사용

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: BuildRun
    metadata:
      name: buildah-golang-buildrun
    spec:
      build:
        name: buildah-golang-build 
    1
    
    EOF
    Copy to Clipboard Toggle word wrap

    1
    spec.build.name 필드는 실행할 각 빌드를 나타내며 동일한 네임스페이스에서 사용할 수 있어야 합니다.

    예: shp CLI 사용

    $ shp build run buildah-golang-build --follow 
    1
    Copy to Clipboard Toggle word wrap

    1
    선택 사항: --follow 플래그를 사용하면 출력 결과에서 빌드 로그를 볼 수 있습니다.
  4. 다음 명령 중 하나를 실행하여 BuildRun 리소스가 생성되었는지 확인합니다.

    예: oc CLI 사용

    $ oc get buildrun buildah-golang-buildrun
    Copy to Clipboard Toggle word wrap

    예: shp CLI 사용

    $ shp buildrun list
    Copy to Clipboard Toggle word wrap

    BuildRun 리소스는 TaskRun 리소스를 생성하여 빌드 전략 단계를 실행하기 위해 Pod를 생성합니다.

검증

  1. 모든 컨테이너가 작업을 완료한 후 다음을 확인합니다.

    • Pod에 STATUS 필드가 Completed 로 표시되는지 확인합니다.

      $ oc get pods -w
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                                READY   STATUS    RESTARTS   AGE
      buildah-golang-buildrun-dtrg2-pod   2/2     Running   0          4s
      buildah-golang-buildrun-dtrg2-pod   1/2     NotReady  0          7s
      buildah-golang-buildrun-dtrg2-pod   0/2     Completed 0          55s
      Copy to Clipboard Toggle word wrap

    • TaskRun 리소스에 SUCCEEDED 필드가 True 로 표시되는지 확인합니다.

      $ oc get tr
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                           SUCCEEDED  REASON     STARTTIME   COMPLETIONTIME
      buildah-golang-buildrun-dtrg2  True       Succeeded  11m         8m51s
      Copy to Clipboard Toggle word wrap

    • BuildRun 리소스에 SUCCEEDED 필드가 True 로 표시되는지 확인합니다.

      $ oc get br
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                     SUCCEEDED   REASON       STARTTIME     COMPLETIONTIME
      buildah-golang-buildrun  True        Succeeded    13m           11m
      Copy to Clipboard Toggle word wrap

      확인 중에 빌드 실행이 실패하면 BuildRun 리소스의 status.failure Details 필드를 확인하여 Pod 또는 컨테이너에서 오류가 발생한 정확한 지점을 확인할 수 있습니다.

      참고

      컨테이너 중 하나가 작업을 완료했기 때문에 Pod가 NotReady 상태로 전환될 수 있습니다. 이는 예상된 동작입니다.

  2. build.spec.output.image 필드에 지정된 레지스트리로 이미지가 푸시되었는지 확인합니다. 내부 레지스트리에 액세스할 수 있는 노드에서 다음 명령을 실행하여 이미지를 가져올 수 있습니다.

    $ podman pull image-registry.openshift-image-registry.svc:5000/<project>/<image> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Build 리소스를 생성할 때 사용하는 프로젝트 이름 및 이미지 이름입니다. 예를 들어 buildah-example 을 프로젝트 이름으로 사용하고 sample-go-app 을 이미지 이름으로 사용할 수 있습니다.

1.1.1. 네트워크 제한 환경에서 buildah 빌드 생성

buildah 빌드 전략에 필요한 이미지를 미러링하여 네트워크 제한 환경에서 buildah 빌드를 생성할 수 있습니다.

사전 요구 사항

  • 클러스터는 buildah 빌드를 생성하는 데 사용할 수 있는 Git 소스에 연결하고 상호 작용할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 buildah 빌드 전략에 필요한 이미지를 미러링합니다.

    $ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/ubi8/buildah@sha256:1c89cc3cab0ac0fc7387c1fe5e63443468219aab6fd531c8dad6d22fd999819e <mirror_registry>/<repo>/ubi8_buildah
    Copy to Clipboard Toggle word wrap
  2. " buildah 빌드 생성" 섹션에 언급된 단계를 수행합니다.

1.2. S2I(Source-to-Image) 빌드 생성

S2I( Source-to-Image ) 빌드를 생성하고 생성된 이미지를 사용자 지정 Quay 리포지토리로 내보낼 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터에 Red Hat OpenShift Operator 빌드가 설치되어 있습니다.
  • shipwrightBuild 리소스를 생성했습니다.
  • oc CLI를 설치했습니다.
  • 선택 사항: shp CLI 를 설치했습니다.

프로세스

  1. 빌드 리소스를 생성하고 CLI 중 하나를 사용하여 OpenShift Container Platform 클러스터에 적용합니다.

    예: oc CLI 사용

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: Build
    metadata:
      name: s2i-nodejs-build
    spec:
      source: 
    1
    
        type: Git
        git:
          url: https://github.com/redhat-openshift-builds/samples
        contextDir: s2i-build/nodejs
      strategy: 
    2
    
        name: source-to-image
        kind: ClusterBuildStrategy
      paramValues: 
    3
    
      - name: builder-image
        value: quay.io/centos7/nodejs-12-centos7:master
      output:
        image: quay.io/<repo>/s2i-nodejs-example 
    4
    
        pushSecret: registry-credential 
    5
    
    EOF
    Copy to Clipboard Toggle word wrap

    1
    소스 코드가 배치되는 위치입니다.
    2
    컨테이너를 빌드하는 데 사용하는 빌드 전략입니다.
    3
    빌드 전략에 정의된 매개변수입니다. builder-image 전략 매개변수의 값을 설정하려면 출력 이미지를 빌드하는 데 필요한 빌더 이미지 위치를 지정합니다.
    4
    빌드된 이미지를 푸시하는 위치입니다. 빌드된 이미지를 사용자 지정 Quay.io 리포지토리로 내보낼 수 있습니다. 리포지토리 를 유효한 Quay.io 조직 또는 Quay 사용자 이름으로 교체합니다.
    5
    컨테이너 이미지를 푸시하기 위한 인증 정보를 저장하는 시크릿 이름입니다. 인증을 위해 docker-registry 유형의 보안을 생성하려면 "Authentication to container registries"를 참조하십시오.

    예: shp CLI 사용

    $ shp build create s2i-nodejs-build \
    --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="s2i-build/nodejs" \
    1
    
    --strategy-name="source-to-image" \
    2
    
    --builder-image="quay.io/centos7/nodejs-12-centos7" \
    3
    
    --output-image="quay.io/<repo>/s2i-nodejs-example" \
    4
    
    --output-credentials-secret="registry-credential" 
    5
    Copy to Clipboard Toggle word wrap

    1
    소스 코드가 배치되는 위치입니다.
    2
    컨테이너를 빌드하는 데 사용하는 빌드 전략입니다.
    3
    빌드 전략에 정의된 매개변수입니다. builder-image 전략 매개변수의 값을 설정하려면 출력 이미지를 빌드하는 데 필요한 빌더 이미지 위치를 지정합니다.
    4
    빌드된 이미지를 푸시하는 위치입니다. 빌드된 이미지를 사용자 지정 Quay.io 리포지토리로 내보낼 수 있습니다. 리포지토리 를 유효한 Quay.io 조직 또는 Quay 사용자 이름으로 교체합니다.
    5
    컨테이너 이미지를 푸시하기 위한 인증 정보를 저장하는 시크릿 이름입니다. 인증을 위해 docker-registry 유형의 보안을 생성하려면 "Authentication to container registries"를 참조하십시오.
  2. CLI 중 하나를 사용하여 Build 리소스가 생성되었는지 확인합니다.

    예: oc CLI 사용

    $ oc get builds.shipwright.io s2i-nodejs-build
    Copy to Clipboard Toggle word wrap

    예: shp CLI 사용

    $ shp build list
    Copy to Clipboard Toggle word wrap

  3. BuildRun 리소스를 생성하고 CLI 중 하나를 사용하여 OpenShift Container Platform 클러스터에 적용합니다.

    예: oc CLI 사용

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: BuildRun
    metadata:
      name: s2i-nodejs-buildrun
    spec:
      build:
        name: s2i-nodejs-build 
    1
    
    EOF
    Copy to Clipboard Toggle word wrap

    1
    spec.build.name 필드는 실행할 각 빌드를 나타내며 동일한 네임스페이스에서 사용할 수 있어야 합니다.

    예: shp CLI 사용

    $ shp build run s2i-nodejs-build --follow 
    1
    Copy to Clipboard Toggle word wrap

    1
    선택 사항: --follow 플래그를 사용하면 출력 결과에서 빌드 로그를 볼 수 있습니다.
  4. 다음 명령 중 하나를 실행하여 BuildRun 리소스가 생성되었는지 확인합니다.

    예: oc CLI 사용

    $ oc get buildrun s2i-nodejs-buildrun
    Copy to Clipboard Toggle word wrap

    예: shp CLI 사용

    $ shp buildrun list
    Copy to Clipboard Toggle word wrap

    BuildRun 리소스는 TaskRun 리소스를 생성하여 빌드 전략 단계를 실행하기 위해 Pod를 생성합니다.

검증

  1. 모든 컨테이너가 작업을 완료한 후 다음을 확인합니다.

    • Pod에 STATUS 필드가 Completed 로 표시되는지 확인합니다.

      $ oc get pods -w
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                                READY   STATUS     RESTARTS   AGE
      s2i-nodejs-buildrun-phxxm-pod       2/2     Running    0          10s
      s2i-nodejs-buildrun-phxxm-pod       1/2     NotReady   0          14s
      s2i-nodejs-buildrun-phxxm-pod       0/2     Completed  0          2m
      Copy to Clipboard Toggle word wrap

    • TaskRun 리소스에 SUCCEEDED 필드가 True 로 표시되는지 확인합니다.

      $ oc get tr
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                           SUCCEEDED  REASON     STARTTIME   COMPLETIONTIME
      s2i-nodejs-buildrun-phxxm      True       Succeeded  2m39s        13s
      Copy to Clipboard Toggle word wrap

    • BuildRun 리소스에 SUCCEEDED 필드가 True 로 표시되는지 확인합니다.

      $ oc get br
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                     SUCCEEDED   REASON       STARTTIME     COMPLETIONTIME
      s2i-nodejs-buildrun      True        Succeeded    2m41s           15s
      Copy to Clipboard Toggle word wrap

      확인 중에 빌드 실행이 실패하면 BuildRun 리소스의 status.failure Details 필드를 확인하여 Pod 또는 컨테이너에서 오류가 발생한 정확한 지점을 확인할 수 있습니다.

      참고

      컨테이너 중 하나가 작업을 완료했기 때문에 Pod가 NotReady 상태로 전환될 수 있습니다. 이는 예상된 동작입니다.

  2. build.spec.output.image 필드에 지정된 레지스트리로 이미지가 푸시되었는지 확인합니다. 레지스트리에 로그인한 후 다음 명령을 실행하여 이미지를 가져올 수 있습니다.

    $ podman pull quay.io/<repo>/<image> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Build 리소스를 생성할 때 사용하는 리포지토리 이름 및 이미지 이름입니다. 예를 들어 s2i-nodejs-example 을 이미지 이름으로 사용할 수 있습니다.

1.2.1. 네트워크 제한 환경에서 S2I(Source-to-Image) 빌드 생성

S2I(Source -to-Image) 빌드 전략에 필요한 이미지를 미러링하여 네트워크 제한 환경에서 S2I(Source -to-Image ) 빌드를 생성할 수 있습니다.

사전 요구 사항

  • 클러스터는 S2I(Source-to-Image) 빌드를 생성하는 데 사용할 수 있는 Git 소스에 연결하고 상호 작용할 수 있습니다.
  • 로컬 레지스트리에 S2I(Source- to-Image) 빌드를 생성하는 데 필요한 builder-image 가 있어야 합니다. 로컬 레지스트리에 builder-image가 없는 경우 소스 이미지를 미러링합니다.

프로세스

  1. 다음 명령을 실행하여 source-to-image 빌드 전략에 필요한 이미지를 미러링합니다.

    $ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/source-to-image/source-to-image-rhel8@sha256:d041c1bbe503d152d0759598f79802e257816d674b342670ef61c6f9e6d401c5 <mirror_registry>/<repo>/source-to-image-source-to-image-rhel8
    Copy to Clipboard Toggle word wrap
  2. "Source-to-image 빌드 생성" 섹션에 언급된 단계를 수행합니다.

1.3. 로그 보기

빌드 실행의 로그를 보고 런타임 오류를 식별하고 해결할 수 있습니다.

사전 요구 사항

  • oc CLI를 설치했습니다.
  • 선택 사항: shp CLI를 설치했습니다.

프로세스

  • CLI 중 하나를 사용하여 실행되는 빌드의 로그를 확인합니다.

    oc CLI 사용

    $ oc logs <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

    shp CLI 사용

    $ shp buildrun logs <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

1.4. 리소스 삭제

프로젝트에 필요하지 않은 경우 Build,BuildRun 또는 BuildStrategy 리소스를 삭제할 수 있습니다.

사전 요구 사항

  • oc CLI를 설치했습니다.
  • 선택 사항: shp CLI를 설치했습니다.

프로세스

  • CLI 중 하나를 사용하여 Build 리소스를 삭제합니다.

    oc CLI 사용

    $ oc delete builds.shipwright.io <build_resource_name>
    Copy to Clipboard Toggle word wrap

    shp CLI 사용

    $ shp build delete <build_resource_name>
    Copy to Clipboard Toggle word wrap

  • CLI 중 하나를 사용하여 BuildRun 리소스를 삭제합니다.

    oc CLI 사용

    $ oc delete buildrun <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

    shp CLI 사용

    $ shp buildrun delete <buildrun_resource_name>
    Copy to Clipboard Toggle word wrap

  • 다음 명령을 실행하여 BuildStrategy 리소스를 삭제합니다.

    oc CLI 사용

    $ oc delete buildstrategies <buildstartegy_resource_name>
    Copy to Clipboard Toggle word wrap

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat