1.2. S2I(Source-to-Image) 빌드 생성
S2I( Source-to-Image
) 빌드를 생성하고 생성된 이미지를 사용자 지정 Quay 리포지토리로 내보낼 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터에 Red Hat OpenShift Operator 빌드가 설치되어 있습니다.
-
oc
CLI를 설치했습니다. -
선택 사항:
shp
CLI 를 설치했습니다.
프로세스
빌드
리소스를 생성하고 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"를 참조하십시오.
CLI 중 하나를 사용하여
Build
리소스가 생성되었는지 확인합니다.예:
oc
CLI 사용$ oc get builds.shipwright.io s2i-nodejs-build
예:
shp
CLI 사용$ shp build list
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
플래그를 사용하면 출력 결과에서 빌드 로그를 볼 수 있습니다.
다음 명령 중 하나를 실행하여
BuildRun
리소스가 생성되었는지 확인합니다.예:
oc
CLI 사용$ oc get buildrun s2i-nodejs-buildrun
예:
shp
CLI 사용$ shp buildrun list
BuildRun
리소스는TaskRun
리소스를 생성하여 빌드 전략 단계를 실행하기 위해 Pod를 생성합니다.
검증
모든 컨테이너가 작업을 완료한 후 다음을 확인합니다.
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
상태로 전환될 수 있습니다. 이는 예상된 동작입니다.
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가 없는 경우 소스 이미지를 미러링합니다.
프로세스
다음 명령을 실행하여
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
- "Source-to-image 빌드 생성" 섹션에 언급된 단계를 수행합니다.