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


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

사전 요구 사항

  • OpenShift Container Platform 클러스터에 Red Hat OpenShift Operator 빌드가 설치되어 있습니다.
  • 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

    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

    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

    예: shp CLI 사용

    $ shp build list

  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

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

    예: shp CLI 사용

    $ shp build run s2i-nodejs-build --follow 1

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

    예: oc CLI 사용

    $ oc get buildrun s2i-nodejs-buildrun

    예: shp CLI 사용

    $ shp buildrun list

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

검증

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

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

      $ oc get pods -w

      출력 예

      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

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

      $ oc get tr

      출력 예

      NAME                           SUCCEEDED  REASON     STARTTIME   COMPLETIONTIME
      s2i-nodejs-buildrun-phxxm      True       Succeeded  2m39s        13s

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

      $ oc get br

      출력 예

      NAME                     SUCCEEDED   REASON       STARTTIME     COMPLETIONTIME
      s2i-nodejs-buildrun      True        Succeeded    2m41s           15s

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

      참고

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

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

    $ podman pull quay.io/<repo>/<image> 1
    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
  2. "Source-to-image 빌드 생성" 섹션에 언급된 단계를 수행합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.