구성
빌드 구성
초록
1장. 빌드 구성 링크 복사링크가 클립보드에 복사되었습니다!
플랫폼 엔지니어는 Build CR(사용자 정의 리소스)에서 소스 코드 위치, 빌드 전략, 매개변수, 출력 설정, 보존 규칙 및 볼륨을 정의할 수 있습니다. Build CR을 사용하면 일관된 빌드 Pod 구성을 활성화하고 클러스터에서 빌드 실행을 관리하기 위한 네임스페이스 범위 방법을 제공합니다.
1.1. 빌드의 구성 가능한 필드 링크 복사링크가 클립보드에 복사되었습니다!
입력, 실행 설정, 출력 및 라이프사이클 동작을 지정하여 Build CR(사용자 정의 리소스)을 구성합니다. 이러한 매개변수는 Build CR의 구성 및 동작을 제어합니다.
다음 표에서는 Build CR의 필수 필드를 설명합니다.
| 필드 | 설명 |
|---|---|
|
|
리소스의 API 버전을 지정합니다(예: |
|
|
리소스 유형을 지정합니다(예: |
|
|
사용자 지정 리소스 정의 인스턴스를 식별하는 메타데이터를 지정합니다(예: |
|
| 소스 코드의 위치(예: Git 리포지토리 또는 소스 번들 이미지)를 지정합니다. |
|
|
|
|
| 시스템이 생성된 이미지를 내보내는 위치를 지정합니다. |
|
| 컨테이너 레지스트리에 액세스하기 위해 기존 보안을 지정합니다. |
다음 표에서는 Build CR의 선택적 필드를 설명합니다.
| 필드 | 설명 |
|---|---|
|
| 빌드 전략에 정의된 매개변수 값을 설정할 name-value 목록을 지정합니다. |
|
|
사용자 정의 시간 초과를 정의합니다. 기본값은 10분입니다. |
|
| 출력 이미지에 주석을 달 때 사용할 수 있는 키-값 쌍 목록을 지정합니다. |
|
| 출력 이미지에 레이블을 지정하는 데 사용할 수 있는 키-값 쌍 목록을 지정합니다. |
|
| 빌드 컨테이너에 전달할 수 있는 추가 환경 변수를 정의합니다. 사용 가능한 변수는 빌드 전략에서 사용하는 도구에 따라 다릅니다. |
|
| 실패한 빌드 실행이 존재할 수 있는 기간을 지정합니다. |
|
| 성공적인 빌드 실행이 존재할 수 있는 기간을 지정합니다. |
|
| 존재할 수 있는 실패한 빌드 실행 수를 지정합니다. |
|
| 존재할 수 있는 성공적인 빌드 실행 수를 지정합니다. |
|
| 빌드해야 하는 노드를 지정합니다. |
|
| 빌드 Pod에 대한 허용 오차를 지정합니다. |
|
| 빌드 Pod에 대한 스케줄러를 지정합니다. |
1.2. 소스 정의 링크 복사링크가 클립보드에 복사되었습니다!
빌드 CR(사용자 정의 리소스)에서 빌드 의 소스 코드 위치를 구성합니다.
다음 소스 필드는 빌드가 Git 리포지토리에 액세스하는 방법을 지정하고 소스 콘텐츠를 선택합니다.
-
source.git.url: Git 리포지토리 위치입니다. -
source.git.cloneSecret: 개인 리포지토리에 대한 SSH 키가 포함된 시크릿입니다. -
source.git.revision: 특정 커밋, 태그 또는 분기(기본 분기의 기본값)입니다. -
source.contextDir: 소스 코드가 포함된 하위 디렉터리입니다.
빌드 컨트롤러는 기본적으로 Git 리포지토리를 확인하지 않습니다. 검증을 활성화하려면 다음 예와 같이 Build CR에서 shipwright.io/verify.repository 주석을 true 로 설정합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: buildah-golang-build
annotations:
build.shipwright.io/verify.repository: "true"
spec:
source:
git:
url: https://github.com/shipwright-io/sample-go
contextDir: docker-build
빌드 컨트롤러는 다음 시나리오에서 Git 리포지토리가 있는지 확인합니다.
- HTTP 또는 HTTPS 프로토콜과 함께 끝점 URL을 사용하는 경우
-
git@과 같은 SSH 프로토콜을 정의했지만 참조된 보안(예:source.git.cloneSecret)이 정의되어 있지 않은 경우입니다.
다음 구성에서는 다양한 소스 입력 세트를 사용하여 빌드를 구성하는 방법을 보여줍니다.
- 인증 정보를 사용하여 빌드 구성
다음 예와 같이 리포지토리 인증 정보가 포함된 보안을 참조하여 프라이빗 Git 리포지토리에 액세스하도록 빌드를 구성합니다.
apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-build spec: source: git: url: https://github.com/sclorg/nodejs-ex cloneSecret: source-repository-credentials- 컨텍스트 경로를 사용하여 빌드 구성
다음 예와 같이 소스 코드가 리포지토리 루트에 없는 경우 Git 리포지토리 내에서 특정 컨텍스트 디렉터리를 사용하도록 빌드를 구성합니다.
apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-custom-context-dockerfile spec: source: git: url: https://github.com/userjohn/npm-simple contextDir: docker-build- 태그를 사용하여 빌드 구성
다음 예와 같이 v0.1.0과 같은 특정 Git 태그를 사용하도록 빌드를 구성합니다.
apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-golang-build spec: source: git: url: https://github.com/shipwright-io/sample-go revision: v0.1.0- 환경 변수를 사용하여 빌드 구성
다음 예와 같이 빌드 실행 중에 환경 변수를 빌드 컨테이너에 전달하도록 빌드를 구성합니다.
apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-golang-build spec: source: git: url: https://github.com/shipwright-io/sample-go contextDir: docker-build env: - name: <example_var_1> value: "<example_value_1>" - name: <example_var_2> value: "<example_value_2>"
1.3. 전략 정의 링크 복사링크가 클립보드에 복사되었습니다!
빌드 전략은 소스 코드가 컨테이너 이미지로 변환하는 방식을 결정합니다. 지원되는 전략에는 buildah,source-to-image, buildpacks 가 포함됩니다. Build CR의 spec.strategy 필드에 전략을 정의합니다.
빌드 전략을 구성하려면 다음 예와 같이 Build CR에서 spec.strategy.name 및 spec.strategy.kind 필드를 정의합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: buildah-build
spec:
strategy:
name: buildah
kind: ClusterBuildStrategy
1.4. 빌드의 매개변수 값 정의 링크 복사링크가 클립보드에 복사되었습니다!
Build 사용자 정의 리소스(CR)에서 빌드 전략 매개변수를 설정할 수 있습니다. 이러한 설정은 빌드가 실행되는 방식을 제어합니다. 모든 매개변수에 대해 값을 제공해야 합니다. ConfigMaps 또는 Secrets 에서 값을 직접 제공하거나 참조 키를 제공할 수 있습니다.
매개변수가 빌드 전략의 명령, 인수 또는 환경 변수에 표시되는 경우에만 ConfigMap 또는 Secrets 를 사용할 수 있습니다.
다음은 빌드에 매개변수 값 정의를 사용하는 요구 사항입니다.
-
mapping: 모든
spec.paramValues이름은BuildStrategyCR에 정의된 매개변수와 일치해야 합니다. -
예약된 이름:
BUILDER_IMAGE,CONTEXT_DIR또는shp-로 시작하는 모든 이름을 사용하지 마십시오. -
resources: 매개변수가 명령,
인수또는 환경 변수에 사용되는 경우에만ConfigMap또는 보안을 사용할 수 있습니다.
1.4.1. 매개변수 값을 정의하는 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 빌드 전략에서 매개변수를 설정하는 방법을 보여줍니다. Build CR(사용자 정의 리소스)을 사용하여 이러한 매개변수별 값을 지정할 수 있습니다. 배열 매개변수에 값을 할당할 수도 있습니다.
- ClusterBuildStrategy CR에서 매개변수 정의
다음 예제에서는 여러 매개변수가 있는
ClusterBuildStrategyCR을 보여줍니다.apiVersion: shipwright.io/v1beta1 kind: ClusterBuildStrategy metadata: name: buildah spec: parameters: - name: build-args description: "The values for the args in the Dockerfile. Values must be in the format KEY=VALUE." type: array defaults: [] # ... - name: storage-driver description: "The storage driver to use, such as 'overlay' or 'vfs'." type: string default: "vfs" # ... steps: # ...- Build CR의 매개변수에 값 할당
이전 예와 같이
ClusterBuildStrategyCR은storage-driver매개변수를 정의합니다. 다음과 같이 Build CR에서 해당 값을 변경할 수 있습니다.apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: <your_build> namespace: <your_namespace> spec: paramValues: - name: storage-driver value: "overlay" strategy: name: buildah kind: ClusterBuildStrategy output: # ...다음과 같습니다.
<your_build>-
빌드CR의 이름을 지정합니다. <your_namespace>-
빌드CR의 네임스페이스를 지정합니다.
- 중앙에서 매개변수를 제어하는 ConfigMap CR 생성
-
여러 빌드에 동일한 매개변수 값을 사용하려면
ConfigMap을 사용합니다. 이를 통해 한 곳에서 값을 변경하고 사용량을 중앙에서 제어할 수 있습니다. 다음 예제 구성을 참조하십시오.
apiVersion: v1
kind: ConfigMap
metadata:
name: buildah-configuration
namespace: <your_namespace>
data:
storage-driver: overlay
+
다음과 같습니다.
<your_namespace>-
ConfigMapCR의 네임스페이스를 지정합니다.
+ 다음 예와 같이 생성된 ConfigMap CR을 Build CR에서 매개변수 값으로 사용할 수 있습니다.
+
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: <your_build>
namespace: <your_namespace>
spec:
paramValues:
- name: storage-driver
configMapValue:
name: buildah-configuration
key: storage-driver
strategy:
name: buildah
kind: ClusterBuildStrategy
output:
# ...
+
다음과 같습니다.
메타데이터-
빌드CR의 메타데이터를 지정합니다.
- Build CR에서 배열 유형의 매개변수에 값을 할당합니다.
또한
배열형식의 매개 변수에 값을 할당할 수도 있습니다. 예를 들어 다음 예와 같이registries-search를 사용하여 빌드에 이미지를 찾을 위치를 알립니다.apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: <your_build> namespace: <your_namespace> spec: paramValues: - name: storage-driver configMapValue: name: buildah-configuration key: storage-driver - name: registries-search values: - value: registry.redhat.io strategy: name: buildah kind: ClusterBuildStrategy output: # ...다음과 같습니다.
메타데이터-
빌드CR의 메타데이터를 지정합니다.
- Build CR에서 시크릿 참조
매개변수에 대한
시크릿을 참조할 수 있습니다. 다음 예제에서는Secret을 사용하여 특정 레지스트리를 차단하는 방법을 보여줍니다.apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: <your_build> namespace: <your_namespace> spec: paramValues: - name: storage-driver configMapValue: name: buildah-configuration key: storage-driver - name: registries-block values: - secretValue: name: registry-configuration key: reg-blocked strategy: name: buildah kind: ClusterBuildStrategy output: # ...다음과 같습니다.
메타데이터-
빌드CR의 메타데이터를 지정합니다. values.secretValue-
보안을 참조하는 값을
지정합니다.
1.5. 빌더 또는 Docker 파일 정의 링크 복사링크가 클립보드에 복사되었습니다!
Build CR(사용자 정의 리소스)에서 spec.paramValues 필드를 사용하여 출력 이미지를 빌드하는 데 사용되는 이미지 또는 파일을 지정합니다.
다음 예제는 Build CR에서 Dockerfile 이미지를 지정합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: buildah-golang-build
spec:
source:
git:
url: https://github.com/shipwright-io/sample-go
contextDir: docker-build
strategy:
name: buildah
kind: ClusterBuildStrategy
paramValues:
- name: dockerfile
value: Dockerfile
다음 예와 같이 빌더 이미지를 Build CR의 source-to-image 빌드 전략의 일부로 사용할 수도 있습니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: s2i-nodejs-build
spec:
source:
git:
url: https://github.com/shipwright-io/sample-nodejs
contextDir: source-build/
strategy:
name: source-to-image
kind: ClusterBuildStrategy
paramValues:
- name: builder-image
value: docker.io/centos/nodejs-10-centos7
1.6. 출력 정의 링크 복사링크가 클립보드에 복사되었습니다!
Build CR(사용자 정의 리소스)에서 출력 위치를 선택해야 합니다. 시스템이 완료된 이미지를 푸시하는 위치입니다. 프라이빗 레지스트리를 사용하는 경우 로그인할 시크릿도 제공해야 합니다. 이미지에 주석 및 레이블을 추가할 수도 있습니다.
주석 또는 레이블을 추가하면 시스템에서 이미지를 두 번 푸시합니다. 첫 번째 기능은 빌드 전략에서 가져온 것입니다. 두 번째 푸시는 이미지 구성을 변경하고 주석 및 레이블을 추가합니다.
다음 예제에서는 이미지가 푸시되는 퍼블릭 레지스트리를 정의합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: s2i-nodejs-build
spec:
source:
git:
url: https://github.com/shipwright-io/sample-nodejs
contextDir: source-build/
strategy:
name: source-to-image
kind: ClusterBuildStrategy
paramValues:
- name: builder-image
value: docker.io/centos/nodejs-10-centos7
output:
image: image-registry.openshift-image-registry.svc:5000/build-examples/nodejs-ex
다음 예제에서는 이미지가 푸시되는 프라이빗 레지스트리를 정의합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: s2i-nodejs-build
spec:
source:
git:
url: https://github.com/shipwright-io/sample-nodejs
contextDir: source-build/
strategy:
name: source-to-image
kind: ClusterBuildStrategy
paramValues:
- name: builder-image
value: docker.io/centos/nodejs-10-centos7
output:
image: us.icr.io/source-to-image-build/nodejs-ex
pushSecret: icr-knbuild
다음 예제에서는 이미지에 대한 주석 및 레이블을 정의합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: s2i-nodejs-build
spec:
source:
git:
url: https://github.com/shipwright-io/sample-nodejs
contextDir: source-build/
strategy:
name: source-to-image
kind: ClusterBuildStrategy
paramValues:
- name: builder-image
value: docker.io/centos/nodejs-10-centos7
output:
image: us.icr.io/source-to-image-build/nodejs-ex
pushSecret: icr-knbuild
annotations:
"org.opencontainers.image.source": "https://github.com/org/repo"
"org.opencontainers.image.url": "https://my-company.com/images"
labels:
"maintainer": "team@my-company.com"
"description": "This is my cool image"
1.7. 빌드에 대한 보존 매개변수 정의 링크 복사링크가 클립보드에 복사되었습니다!
Build CR(사용자 정의 리소스)에서 보존 매개변수를 정의합니다. 이러한 매개 변수는 BuildRun 인스턴스의 라이프사이클을 관리합니다.
보존 매개변수는 다음과 같은 목적으로 정의할 수 있습니다.
- 완료된 빌드 실행이 존재할 수 있는 기간을 지정하려면 다음을 수행합니다.
- 빌드에 존재할 수 있는 성공 또는 실패한 빌드 실행 수를 지정하려면 다음을 수행합니다.
Build CR(사용자 정의 리소스)에서 다음 보존 매개변수 값을 설정할 수 있습니다.
-
retention.succeededLimit: 빌드를 위해 존재할 수 있는 성공적인 빌드 실행 수입니다. -
retention.failedLimit: 빌드에 존재할 수 있는 실패한 빌드 실행 수입니다. -
retention.ttlAfterFailed: 실패한 빌드 실행이 존재할 수 있는 기간입니다. -
retention.ttlAfterSucceeded: 성공적인 빌드 실행이 존재할 수 있는 기간입니다.
제한을 변경하면 즉시 적용됩니다. TTL(Time to live)을 변경하는 경우 새 빌드 실행에만 적용됩니다.
다음 예제에서는 Build CR에서 보존 매개변수를 사용하는 방법을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: build-retention-ttl
spec:
source:
git:
url: "https://github.com/shipwright-io/sample-go"
contextDir: docker-build
strategy:
kind: ClusterBuildStrategy
name: buildah
output:
# ...
retention:
ttlAfterFailed: 30m
ttlAfterSucceeded: 1h
failedLimit: 10
succeededLimit: 20
# ...
retention.failedLimit 및 retention.succeededLimit 매개변수 값을 변경하면 새 제한이 즉시 적용됩니다. 그러나 retention.ttlAfterFailed 및 retention.ttlAfterSucceeded 매개변수 값을 변경하면 새 빌드 실행에서만 새 보존 기간이 적용됩니다. 이전 빌드는 이전 보존 기간을 따릅니다. BuildRun 및 Build CR 모두에 보존 기간이 정의된 경우 BuildRun CR이 우선합니다.
1.8. 빌드의 볼륨 정의 링크 복사링크가 클립보드에 복사되었습니다!
리소스에 지정된 볼륨을 덮어쓰도록 Build CR(사용자 정의 리소스)에 볼륨을 정의합니다. 볼륨이 명시적으로 재정의되지 않으면 빌드 실행이 실패합니다.
Build Strategy
다음 예제에서는 Build CR의 volumes 필드를 사용하는 방법을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: <build_name>
spec:
source:
git:
url: https://github.com/example/url
strategy:
name: buildah
kind: ClusterBuildStrategy
paramValues:
- name: dockerfile
value: Dockerfile
output:
image: registry/namespace/image:latest
volumes:
- name: <volume_name>
configMap:
name: <configmap_name>
다음과 같습니다.
<build_name>-
빌드의 이름을 지정합니다. <volume_name>- 볼륨의 이름을 지정합니다.
<configmap_name>-
ConfigMap의 이름을 지정합니다.
1.9. Pod 구성 링크 복사링크가 클립보드에 복사되었습니다!
선택적 BuildRun CR(사용자 정의 리소스) 필드를 사용하여 빌드에 대한 Pod 예약 및 배치 구성
다음 선택적 Build CR 필드를 사용하여 빌드 Pod를 구성합니다.
spec.tolerations필드는 다음과 같은 제한으로 빌드 Pod에 대한 허용 오차를 지정합니다.-
NoSchedule테인트 효과만 지원됩니다.
-
-
spec.nodeSelector필드는 Builds Pod를 실행해야 하는 노드를 지정합니다. -
spec.schedulerName필드는 빌드 Pod에 대한 스케줄러를 지정합니다.
Build 및 BuildRun CR에서 이러한 필드를 정의하는 경우 BuildRun 값이 우선합니다.
2장. 빌드 전략 구성 링크 복사링크가 클립보드에 복사되었습니다!
플랫폼 엔지니어는 BuildStrategy 또는 ClusterBuildStrategy CR(사용자 정의 리소스)에서 매개변수, 시스템 설정, 리소스 요구 사항, 주석 및 볼륨을 지정하여 일관된 빌드 전략을 정의할 수 있습니다. 이러한 전략을 사용하면 클러스터 전체에서 제어되고 재사용 가능한 빌드 실행을 수행할 수 있습니다.
2.1. 전략 매개변수 정의 링크 복사링크가 클립보드에 복사되었습니다!
BuildStrategy 또는 ClusterBuildStrategy CR(사용자 정의 리소스)에 매개변수를 정의합니다. 그런 다음 Build 또는 CR에서 이러한 값을 설정하거나 수정할 수 있습니다.
Build Run
전략에 대한 매개변수를 정의하기 전에 다음 사항을 고려하십시오.
-
빌드 전략 CR의
spec.parameters필드에 매개변수 목록을 정의합니다. 각 항목에는 이름, 설명, 유형 및 선택적으로 기본값(또는 배열 유형의 값)이 포함됩니다. 기본값이 설정되지 않은 경우Build또는BuildRunCR에 값을 정의해야 합니다. -
빌드 전략의
spec.steps필드에 문자열 또는 배열 유형의 매개변수를 정의합니다. $(params.your-parameter-name)구문을 사용하여 문자열 유형의 매개변수를 지정합니다. 전략을 참조하는Build또는BuildRunCR에서your-parameter-name매개변수 값을 설정할 수 있습니다. 요구 사항에 따라 다음 문자열 매개변수를 정의할 수 있습니다.Expand 표 2.1. 문자열 매개변수 매개변수 설명 image이 매개변수를 사용하여
golang:$(params.go-version)과 같은 사용자 정의 태그를 정의합니다.args이 매개변수를 사용하여 빌더 명령에 데이터 전달
env이 매개변수를 사용하여 환경 변수의 값을 제공
$(params.your-array-parameter-name[*])구문을 사용하여 배열 유형의 매개변수를 지정합니다. 배열을 지정한 후 인수 또는 명령에서 사용할 수 있습니다. 배열의 각 항목에 대해 인수가 설정됩니다. 다음 예제에서는 빌드 전략의spec.steps필드에서 array 매개변수를 사용합니다.apiVersion: shipwright.io/v1beta1 kind: ClusterBuildStrategy metadata: name: <cluster_build_strategy_name> # ... spec: parameters: - name: tool-args description: Parameters for the tool type: array steps: - name: a-step command: - some-tool args: - --tool-args - $(params.tool-args[*])-
매개변수 값을 단순한 문자열로 제공하거나 구성 맵 또는 시크릿의 키에 대한 참조로 제공합니다. 매개변수의 경우
명령에정의된 경우에만 구성 맵 또는 시크릿 값을 사용할 수 있습니다.spec.steps필드의args또는env섹션.
2.2. 시스템 매개변수 정의 링크 복사링크가 클립보드에 복사되었습니다!
시스템 매개변수를 사용하여 빌드 전략의 단계를 정의하여 시스템 정보에 액세스하거나 Build 또는 BuildRun CR(사용자 정의 리소스)에서 사용자 정의 정보에 액세스합니다. 빌드 실행 컨트롤러에서 런타임에 정의하므로 시스템 매개변수를 구성하거나 수정할 수 없습니다.
빌드 전략 정의에서 다음 시스템 매개변수를 정의할 수 있습니다.
| 매개변수 | 설명 |
|---|---|
|
| 소스 코드가 포함된 디렉터리의 절대 경로를 지정합니다. |
|
|
소스 코드의 컨텍스트 디렉터리에 대한 절대 경로를 지정합니다. |
|
|
|
2.3. 단계 리소스 정의 링크 복사링크가 클립보드에 복사되었습니다!
빌드 전략의 각 단계에 대한 CPU, 메모리 및 디스크 제한을 정의합니다. 전략에 여러 단계가 있는 경우 각각 다른 리소스 양을 할당할 수 있습니다.
관리자는 사용자가 빌드 요구 사항에 맞는 리소스 프로필을 선택할 수 있도록 동일한 전략(예: buildah-undercloud 및 buildah-large)의 다른 버전을 제공할 수 있습니다.
2.3.1. 다양한 리소스가 있는 전략 링크 복사링크가 클립보드에 복사되었습니다!
다른 빌드 요구 사항에 따라 다른 리소스 제한을 적용하려면 동일한 전략의 여러 변형을 정의합니다.
다음 예제에서는 리소스에 대해 정의된 소규모 및 중간 제한과 동일한 buildah 전략을 사용합니다. these 예제에서는 전략 관리자가 단계 리소스 정의를 보다 효과적으로 제어할 수 있도록 제공합니다.
다음 예와 같이 buildah 전략에 대한 리소스 제한이 작은 spec.steps[].resources 필드를 정의할 수 있습니다.
apiVersion: shipwright.io/v1beta1
kind: ClusterBuildStrategy
metadata:
name: buildah-small
spec:
steps:
- name: build-and-push
image: quay.io/containers/buildah:v1.31.0
workingDir: $(params.shp-source-root)
securityContext:
capabilities:
add:
- "SETFCAP"
command:
- /bin/bash
args:
- -c
- |
set -euo pipefail
# Parse parameters
# ...
# That's the separator between the shell script and its args
- --
- --context
- $(params.shp-source-context)
- --dockerfile
- $(build.dockerfile)
- --image
- $(params.shp-output-image)
- --build-args
- $(params.build-args[*])
- --registries-block
- $(params.registries-block[*])
- --registries-insecure
- $(params.registries-insecure[*])
- --registries-search
- $(params.registries-search[*])
resources:
limits:
cpu: 250m
memory: 65Mi
requests:
cpu: 250m
memory: 65Mi
parameters:
- name: build-args
description: "The values for the args in the Dockerfile. Values must be in the format KEY=VALUE."
type: array
defaults: []
# ...
다음 예와 같이 buildah 전략에 대한 중간 리소스 제한을 사용하여 spec.steps[].resources 필드를 정의할 수 있습니다.
apiVersion: shipwright.io/v1beta1
kind: ClusterBuildStrategy
metadata:
name: buildah-medium
spec:
steps:
- name: build-and-push
image: quay.io/containers/buildah:v1.31.0
workingDir: $(params.shp-source-root)
securityContext:
capabilities:
add:
- "SETFCAP"
command:
- /bin/bash
args:
- -c
- |
set -euo pipefail
# Parse parameters
# ...
# That's the separator between the shell script and its args
- --
- --context
- $(params.shp-source-context)
- --dockerfile
- $(build.dockerfile)
- --image
- $(params.shp-output-image)
- --build-args
- $(params.build-args[*])
- --registries-block
- $(params.registries-block[*])
- --registries-insecure
- $(params.registries-insecure[*])
- --registries-search
- $(params.registries-search[*])
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 500m
memory: 1Gi
parameters:
- name: build-args
description: "The values for the args in the Dockerfile. Values must be in the format KEY=VALUE."
type: array
defaults: []
# ...
전략에 대한 리소스 정의를 구성한 후 다음 예와 같이 Build CR(사용자 정의 리소스)의 전략을 참조해야 합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: buildah-medium
spec:
source:
git:
url: https://github.com/shipwright-io/sample-go
contextDir: docker-build
strategy:
name: buildah-medium
kind: ClusterBuildStrategy
# ...
2.3.2. Tekton 파이프라인의 리소스 관리 링크 복사링크가 클립보드에 복사되었습니다!
빌드 컨트롤러는 Tekton 파이프라인 컨트롤러와 함께 작동하여 전략 단계를 실행하는 Pod를 예약합니다. 런타임 시 빌드 컨트롤러는 작업을 실행하고 상태 및 결과를 기록하는 Tekton TaskRun을 생성합니다. TaskRun은 대상 네임스페이스에서 모든 단계를 순차적으로 실행하는 Pod를 생성합니다.
2.4. 주석 정의 링크 복사링크가 클립보드에 복사되었습니다!
Kubernetes 오브젝트와 동일한 방식으로 BuildStrategy 또는 ClusterBuildStrategy 에 대한 주석을 정의합니다. 빌드 전략은 이러한 주석을 TaskRun 리소스에 전달합니다. 그런 다음 Tekton은 Pod에 전달합니다.
다음과 같은 목적으로 주석을 사용할 수 있습니다.
-
네트워크 대역폭:
kubernetes.io/ingress-bandwidth또는kubernetes.io/egress-bandwidth를 사용하여 네트워크 대역폭을 제한합니다. -
보안 프로필:
container.apparmor.security.beta.kubernetes.io/<container_name>을 사용하여 컨테이너의 AppArmor 프로필을 정의합니다.
다음 예제에서는 빌드 전략에서 주석 사용을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: ClusterBuildStrategy
metadata:
name: <cluster_build_strategy_name>
annotations:
container.apparmor.security.beta.kubernetes.io/step-build-and-push: unconfined
container.seccomp.security.alpha.kubernetes.io/step-build-and-push: unconfined
spec:
# ...
다음 주석은 리소스에 전달되지 않습니다.
-
kubectl.kubernetes.io/last-applied-configuration -
clusterbuildstrategy.shipwright.io/* -
buildstrategy.shipwright.io/* -
build.shipwright.io/* -
buildrun.shipwright.io/*
전략 관리자는 정책 엔진을 사용하여 주석 사용을 추가로 제한할 수 있습니다.
2.5. 문자열 매개변수 보안 참조 링크 복사링크가 클립보드에 복사되었습니다!
$(params.your-parameter-name) 구문을 사용하여 빌드 전략의 문자열 매개변수를 참조합니다. 빌드가 실행되면 시스템이 변수를 실제 문자열로 대체합니다.
시스템 및 전략 매개변수에 $(params.your-parameter-name) 구문을 사용할 수 있습니다.
인라인 스크립트를 사용할 때 명령에서 취약점을 주입하지 않으려면 다음 보안 방법 중 하나를 사용합니다.
- 환경 변수 사용
인수 사용
- 문자열 매개변수를 환경 변수로 참조
매개 변수를 환경 변수에 전달합니다. 그런 다음 스크립트에서 해당 변수 주위에 따옴표를 사용합니다. 다음 예제에서는 스크립트 내의 환경 변수를 사용하여 문자열 매개변수를 참조합니다.
apiVersion: shipwright.io/v1beta1 kind: BuildStrategy metadata: name: sample-strategy spec: parameters: - name: sample-parameter description: A sample parameter type: string steps: - name: sample-step env: - name: PARAM_SAMPLE_PARAMETER value: $(params.sample-parameter) command: - /bin/bash args: - -c - | set -euo pipefail some-tool --sample-argument "${PARAM_SAMPLE_PARAMETER}"- 문자열 매개변수를 인수로 참조
매개 변수를 스크립트에 인수로 전달합니다. 그런 다음 쉘 변수를 사용하여 읽습니다. 다음 예제에서는 스크립트 내에 정의된 인수를 사용하여 문자열 매개변수를 참조합니다.
apiVersion: shipwright.io/v1beta1 kind: BuildStrategy metadata: name: sample-strategy spec: parameters: - name: sample-parameter description: A sample parameter type: string steps: - name: sample-step command: - /bin/bash args: - -c - | set -euo pipefail SAMPLE_PARAMETER="$1" some-tool --sample-argument "${SAMPLE_PARAMETER}" - -- - $(params.sample-parameter)
2.6. 시스템 결과 정의 링크 복사링크가 클립보드에 복사되었습니다!
빌드 전략에서 생성한 이미지 크기 및 다이제스트 또는 콘텐츠 해시를 일련의 결과 파일에 저장합니다. BuildRun 리소스가 실패하는 경우에도 디버깅에 대한 오류 세부 정보를 기록할 수 있습니다.
다음 결과 매개변수는 BuildStrategy 또는 ClusterBuildStrategy CR(사용자 정의 리소스)에 정의할 수 있습니다.
| 매개변수 | 설명 |
|---|---|
|
| 다이제스트 또는 이미지의 콘텐츠 해시를 저장하는 파일의 경로를 지정합니다. |
|
| 이미지의 압축 크기를 저장하는 파일의 경로를 지정합니다. |
|
| 오류 이유를 저장하는 파일의 경로를 지정합니다. |
|
| 오류 메시지를 저장하는 파일의 경로를 지정합니다. |
다음 예제에서는 BuildRun CR의 .status.output 필드에 있는 이미지의 크기와 다이제스트 또는 콘텐츠 해시를 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
# ...
status:
# ...
output:
digest: sha256:07626e3c7fdd28d5328a8d6df8d29cd3da760c7f5e2070b534f9b880ed093a53
size: 1989004
# ...
다음 예제에서는 BuildRun CR의 .status.failure Details 필드에 있는 오류 이유 및 메시지를 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
# ...
status:
# ...
failureDetails:
location:
container: step-source-default
pod: baran-build-buildrun-gzmv5-b7wbf-pod-bbpqr
message: The source repository does not exist, or you have insufficient permission
to access it.
reason: GitRemotePrivate
2.7. 볼륨 및 볼륨 마운트 정의 링크 복사링크가 클립보드에 복사되었습니다!
빌드 전략에서는 볼륨 및 볼륨 마운트를 사용하여 빌드 단계에서 데이터를 관리합니다. 기본적으로 BuildStrategy 에서는 볼륨을 덮어쓸 수 없습니다. Build 또는 BuildRun 이 사용자 지정 볼륨을 사용하도록 허용하려면 전략에서 덮어쓸 수 있는 필드를 true 로 설정해야 합니다.
빌드 단계에 정의된 볼륨 마운트를 사용하면 BuildStrategy, Build 또는 리소스에 정의된 볼륨에 액세스할 수 있습니다.
Build Run
빌드 전략의 볼륨은 기본적으로 false 로 설정된 overridable 부울 플래그를 사용합니다. Build 또는 BuildRun 리소스가 BuildStrategy 리소스에 정의된 볼륨을 덮어쓰려고 하면 덮어쓸 수 있는 플래그의 기본값이 false 이므로 실패합니다.
다음 예제에서는 volumes 및 volumeMounts 필드를 정의하는 BuildStrategy 리소스를 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildStrategy
metadata:
name: buildah
spec:
steps:
- name: build
image: quay.io/containers/buildah:v1.23.3
# ...
volumeMounts:
- name: varlibcontainers
mountPath: /var/lib/containers
volumes:
- name: varlibcontainers
overridable: true
emptyDir: {}
3장. 빌드 실행 구성 링크 복사링크가 클립보드에 복사되었습니다!
플랫폼 엔지니어는 BuildRun CR(사용자 정의 리소스)에서 빌드 참조, 매개변수, 서비스 계정, 출력 설정, 보존 규칙 및 볼륨을 정의하여 빌드 실행을 구성합니다. BuildRun CR은 네임스페이스 내에서 개별 빌드가 실행되는 방식을 관리하여 런타임 동작을 제어합니다.
3.1. 빌드 실행의 구성 가능한 필드 링크 복사링크가 클립보드에 복사되었습니다!
입력 매개변수, 서비스 계정, 출력 및 라이프사이클 설정을 지정하여 BuildRun CR(사용자 정의 리소스)을 구성합니다.
다음 표에서는 BuildRun CR(사용자 정의 리소스)의 필수 필드를 설명합니다.
| 필드 | 설명 |
|---|---|
|
|
리소스의 API 버전을 지정합니다. 예를 들어 |
|
|
리소스 유형을 지정합니다. 예를 들면 |
|
|
사용자 지정 리소스 정의 인스턴스를 식별하는 메타데이터를 나타냅니다. 예를 들어 |
다음 표에서는 BuildRun CR(사용자 정의 리소스)의 선택적 필드를 설명합니다.
| 필드 | 설명 |
|---|---|
|
|
사용할 기존 |
|
|
사용할 포함된 |
|
| 이미지를 빌드할 때 사용할 서비스 계정을 나타냅니다. |
|
|
사용자 정의 시간 초과를 정의합니다. 이 필드 값은 |
|
|
빌드 전략에 정의된 매개변수 값을 지정하는 name-value 목록을 나타냅니다. 매개변수 값은 |
|
|
생성된 이미지를 내보낼 사용자 지정 위치를 나타냅니다. 이 필드 값은 |
|
|
컨테이너 레지스트리에 액세스할 수 있는 기존 시크릿을 나타냅니다. 이 시크릿은 |
|
|
빌드 컨테이너에 전달할 수 있는 추가 환경 변수를 정의합니다. 이 필드 값은 |
|
| 빌드해야 하는 노드를 지정합니다. |
|
| 빌드 Pod에 대한 허용 오차를 지정합니다. |
|
| 빌드 Pod에 대한 스케줄러를 지정합니다. |
spec.build.name 및 spec.build.spec 필드는 함께 사용할 수 없으므로 동일한 CR에서 함께 사용할 수 없습니다.
3.2. 빌드 참조 정의 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun 리소스에서 spec.build.name 필드를 구성하여 빌드할 이미지를 나타내는 Build 리소스를 참조합니다. 다음 예제에서는 spec.build.name 필드를 구성하는 BuildRun CR(사용자 정의 리소스)을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buildah-buildrun
spec:
build:
name: buildah-build
3.3. 빌드 사양 정의 링크 복사링크가 클립보드에 복사되었습니다!
spec.build.spec 필드를 사용하여 BuildRun 리소스에 전체 빌드 사양을 정의합니다. 이 방법을 사용하면 별도의 전용 Build CR(사용자 정의 리소스)을 생성하고 유지 관리하지 않고 이미지를 빌드할 수 있으며 독립 실행형 빌드 구성을 제공할 수 있습니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: standalone-buildrun
spec:
build:
spec:
source:
git:
url: https://github.com/shipwright-io/sample-go.git
contextDir: source-build
strategy:
kind: ClusterBuildStrategy
name: buildah
output:
image: <path_to_image>
다음과 같습니다.
<path_to_image>- 이미지 파일의 경로를 지정합니다.
spec.build.name 및 spec.build.spec 필드는 함께 사용할 수 없으므로 동일한 CR에서 함께 사용할 수 없습니다.
3.4. 빌드 실행에 대한 매개변수 값 정의 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun CR(사용자 정의 리소스)에서 빌드 전략 매개변수 값을 정의할 수 있습니다. BuildRun 리소스에 설정된 값은 Build 리소스에서 동일한 이름으로 모든 값을 재정의합니다.
다음 예에서 BuildRun 의 cache 값은 Build 리소스의 캐시 값을 재정의합니다.
apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
name: <your_build>
namespace: <your_namespace>
spec:
paramValues:
- name: cache
value: disabled
strategy:
name: <your_strategy>
kind: ClusterBuildStrategy
source:
# ...
output:
# ...
다음과 같습니다.
<your_build>-
BuildCR의 이름을 지정합니다. <your_namespace>-
BuildCR의 네임스페이스를 지정합니다. <your_strategy>-
BuildCR에 사용되는 전략을 지정합니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: <your_buildrun>
namespace: <your_namespace>
spec:
build:
name: <your_build>
paramValues:
- name: cache
value: registry
다음과 같습니다.
<your_buildrun>-
BuildrunCR의 이름을 지정합니다. <your_namespace>-
BuildrunCR의 네임스페이스를 지정합니다. <your_build>-
빌드의 이름을 지정합니다.
3.5. 서비스 계정 정의 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제와 같이 BuildRun 리소스에 서비스 계정을 정의하여 Build 리소스에서 참조하는 시크릿에 대한 액세스를 제공합니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buildah-buildrun
spec:
build:
name: buildah-build
serviceAccount: pipeline
spec.serviceAccount:BuildRun리소스의 이름에 해당하는 생성된 서비스 계정의 이름을 정의합니다. 또한 값을".generate"로 설정하여 런타임 중에 서비스 계정을 생성할 수도 있습니다.참고서비스 계정을 정의하지 않으면
BuildRun리소스는 네임스페이스에 있는 경우파이프라인서비스 계정을 사용합니다. 그렇지 않으면BuildRun리소스에서기본서비스 계정을 사용합니다.
3.6. 빌드 실행에 대한 보존 매개변수 정의 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun CR(사용자 정의 리소스)에서 보존 매개변수를 사용하여 완료된 빌드 실행을 자동으로 삭제합니다. BuildRun CR(사용자 정의 리소스)에서 다음 보존 매개변수를 사용합니다.
-
retention.ttlAfterFailed: 실패한 빌드 실행이 삭제되기 전에 남아 있습니다. -
retention.ttlAfterSucceeded: 성공적인 빌드 실행이 삭제되기 전에 남아 있습니다.
다음 예제에서는 BuildRun CR에서 보존 매개변수를 정의하는 방법을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buidrun-retention-ttl
spec:
build:
name: build-retention-ttl
retention:
ttlAfterFailed: 10m
ttlAfterSucceeded: 10m
BuildRun 및 Build CR 모두에 retention 매개변수를 정의한 경우 CR에 정의된 값이 Build CR에 정의된 보존 매개변수 값을 재정의합니다.
Build Run
3.7. 빌드 실행에 대한 볼륨 정의 링크 복사링크가 클립보드에 복사되었습니다!
BuildStrategy 리소스의 볼륨을 재정의하려면 BuildRun CR(사용자 정의 리소스)에 볼륨을 정의합니다. 볼륨을 재정의하지 않으면 빌드 실행이 실패합니다. Build 및 BuildRun 모두 동일한 볼륨을 재정의하는 경우 BuildRun 의 값이 우선합니다.
다음 예제에서는 volumes 필드를 사용하는 BuildRun CR을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: <buildrun_name>
spec:
build:
name: <build_name>
volumes:
- name: <volume_name>
configMap:
name: <configmap_name>
다음과 같습니다.
- <build_name>
-
BuildrunCR의 이름을 지정합니다. - <buildrun_name>
-
BuildCR의 이름을 지정합니다. - <volume_name>
-
BuildCR의볼륨이름을 지정합니다. - <configmap_name>
-
BuildCR의ConfigMap이름을 지정합니다.
3.8. 환경 변수 정의 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun CR(사용자 정의 리소스)에서 환경 변수를 설정할 수 있습니다. 이러한 변수는 빌드 컨테이너에 정보를 전달합니다. 리터럴 값 또는 Kubernetes Downward API를 사용할 수 있습니다.
다음 예제에서는 환경 변수를 정의하는 방법을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buildah-buildrun
spec:
build:
name: buildah-build
env:
- name: <example_var_1>
value: "<example_value_1>"
- name: <example_var_2>
value: "<example_value_2>"
다음과 같습니다.
env.name-
BuildRunCR에서 환경 변수의 이름을 정의합니다. env.value-
BuildRunCR에서 환경 변수의 값을 정의합니다.
다음 예제에서는 Kubernetes Downward API를 사용하여 Pod를 환경 변수로 노출하는 BuildRun 리소스를 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buildah-buildrun
spec:
build:
name: buildah-build
env:
- name: <pod_name>
valueFrom:
fieldRef:
fieldPath: metadata.name
다음과 같습니다.
- <pod_name>
- pod 이름을 지정합니다.
다음 예제에서는 Kubernetes Downward API를 사용하여 컨테이너를 환경 변수로 노출하는 BuildRun 리소스를 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buildah-buildrun
spec:
build:
name: buildah-build
env:
- name: MEMORY_LIMIT
valueFrom:
resourceFieldRef:
containerName: <my_container>
resource: limits.memory
다음과 같습니다.
- <my_container>
- 컨테이너 이름을 지정합니다.
3.9. 빌드 실행 상태 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun CR(사용자 정의 리소스)의 상태를 확인하여 이미지 빌드 진행 및 완료를 모니터링합니다. BuildRun CR은 status.conditions 필드에 상태 정보를 저장합니다. 이 필드에는 상태, 해당 상태의 이유 및 설명 메시지가 포함됩니다. 예를 들어 Succeeded 조건 유형은 빌드가 성공적으로 완료된 것을 의미합니다.
다음 예제에서는 특정 BuildRun CR의 상태를 보는 방법을 보여줍니다.
- 알 수 없는 상태
-
알 수 없는상태는 빌드가 아직 시작 중이거나 진행 중임을 나타냅니다. 다음 예제에서는Unknown상태의BuildRun을 보여줍니다.
$ oc get buildrun buildah-buildrun-mp99r
출력 예:
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME
buildah-buildrun-mp99r Unknown Unknown 1s
- true 상태
-
True상태는 빌드가 성공적으로 완료되었음을 나타냅니다. 다음 예제에서는True상태의 BuildRun'을 보여줍니다.
$ oc get buildrun buildah-buildrun-mp99r
출력 예:
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME
buildah-buildrun-mp99r True Succeeded 29m 20m
BuildRun CR은 상태 관련 정보를 status.conditions 필드에 저장합니다. 예를 들어 Succeeded 유형의 조건은 리소스가 작업을 성공적으로 완료했음을 나타냅니다. status.conditions 필드에는 BuildRun CR의 status, reason, message와 같은 중요한 정보가 포함됩니다.
3.9.1. 빌드 실행 상태 설명 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun CR(사용자 정의 리소스)은 이미지 빌드 프로세스 중에 다른 상태를 가질 수 있습니다. status 필드를 사용하여 빌드 상태를 추적합니다.
다음 표에서는 빌드 실행의 다양한 상태에 대해 설명합니다.
| 상태 | 원인 | 설명 |
|---|---|---|
|
|
|
|
|
|
|
컨트롤러가 |
|
|
| 사용자가 빌드 실행을 취소하도록 요청했습니다. 이 요청은 빌드 실행 컨트롤러를 트리거하여 관련 작업 실행 취소를 요청합니다. 이 상태가 있는 경우에도 취소가 진행 중입니다. |
|
|
|
|
|
|
|
단계 중 하나에서 |
|
|
|
|
|
|
|
|
|
|
| 참조된 클러스터 범위 전략이 클러스터에서 찾을 수 없습니다. |
|
|
| 참조된 네임스페이스 범위 전략이 클러스터에서 찾을 수 없습니다. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
기본값 없이 빌드 전략에 정의된 일부 매개변수에 대한 값을 제공하지 않았습니다. |
|
|
| 시스템 매개 변수의 값이 제공되었습니다. 이 값은 허용되지 않습니다. |
|
|
| 빌드 전략에 정의되지 않은 매개변수 값이 제공되었습니다. |
|
|
| 시스템이 잘못 입력된 빌드 전략 매개변수 값을 감지했습니다. 예를 들어 매개변수가 빌드 전략에서 배열 또는 문자열로 정의된 경우 그에 따라 값 집합 또는 직접 값을 제공해야 합니다. |
|
|
|
매개변수 값에는 값 , |
|
|
|
array 매개변수의 값에는 값 , |
|
|
|
매개변수 값에는 |
|
|
|
매개변수 값에는 |
|
|
| 참조된 서비스 계정이 클러스터에서 찾을 수 없습니다. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
정의된 |
|
|
|
정의된 |
|
|
| 빌드 실행 Pod가 실행 중인 노드에서 제거되었습니다. |
3.9.2. 실패한 빌드 실행 이해 링크 복사링크가 클립보드에 복사되었습니다!
빌드에 실패하면 BuildRun CR(사용자 정의 리소스)의 status.failure Details 필드는 오류 메시지, 실패 이유, 오류가 발생한 특정 컨테이너 또는 Pod를 포함한 포괄적인 오류 정보를 제공합니다. 이 필드는 빌드 실패 문제를 해결하는 데 유용합니다.
다음 예제에서는 실패한 빌드 실행을 보여줍니다.
# ...
status:
# ...
failureDetails:
location:
container: step-source-default
pod: baran-build-buildrun-gzmv5-b7wbf-pod-bbpqr
message: The source repository does not exist, or you have insufficient permission
to access it.
reason: GitRemotePrivate
status.failureDetails 필드는 Git과 관련된 모든 작업에 대한 오류 세부 정보도 제공합니다.
3.9.3. 단계적 결과 빌드 실행 상태가 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun CR(사용자 정의 리소스) 실행이 완료되면 .status.taskResults 에 이미지 다이제스트 또는 커밋 SHA와 같은 단계 결과가 표시됩니다. .status.sources 는 소스 단계의 결과를 보유하고 있으며 .status.output 은 소스 및 빌드 이미지를 반영하여 출력 단계의 결과를 보유합니다.
다음 예제에서는 Git 소스에 대한 단계 결과가 있는 BuildRun CR을 보여줍니다.
# ...
status:
buildSpec:
# ...
output:
digest: sha256:07626e3c7fdd28d5328a8d6df8d29cd3da760c7f5e2070b534f9b880ed093a53
size: 1989004
sources:
- name: default
git:
commitAuthor: xxx xxxxxx
commitSha: f25822b85021d02059c9ac8a211ef3804ea8fdde
branchName: main
다음 예제에서는 로컬 소스 코드에 대한 단계 결과가 있는 BuildRun CR을 보여줍니다.
# ...
status:
buildSpec:
# ...
output:
digest: sha256:07626e3c7fdd28d5328a8d6df8d29cd3da760c7f5e2070b534f9b880ed093a53
size: 1989004
sources:
- name: default
bundle:
digest: sha256:0f5e2070b534f9b880ed093a537626e3c7fdd28d5328a8d6df8d29cd3da760c7
빌드 전략에 정의된 경우에만 출력 이미지의 다이제스트와 크기가 표시됩니다.
3.9.4. 빌드 스냅샷 링크 복사링크가 클립보드에 복사되었습니다!
빌드 스냅샷은 특정 빌드 실행에 사용되는 정확한 구성을 기록합니다.
빌드 실행이 조정되면 BuildRun CR(사용자 정의 리소스)의 status.buildSpec 필드가 업데이트됩니다. 이 필드는 특정 이미지 빌드에 사용되는 원래 Build 사양의 전체 사본을 저장합니다. 이 스냅샷을 사용하여 원래 Build CR이 나중에 변경되어도 실행 중에 사용되는 설정을 확인할 수 있습니다.
3.10. Tekton 작업과의 빌드 실행 관계 링크 복사링크가 클립보드에 복사되었습니다!
BuildRun 은 Tekton TaskRun 리소스를 사용하여 이미지를 빌드합니다. TaskRun 은 빌드가 완료되거나 실패할 때까지 빌드 전략에 정의된 단계를 따릅니다.
BuildRun 을 생성하면 빌드 컨트롤러에서 새 TaskRun을 시작합니다. BuildRun 리소스는 이 TaskRun 에 이미지 생성 작업을 할당합니다. 그러면 TaskRun 이 빌드 전략에 정의된 모든 단계를 실행합니다.
3.11. 빌드 실행 취소 링크 복사링크가 클립보드에 복사되었습니다!
활성 BuildRun 리소스를 중지하려면 BuildRun 리소스의 state 필드를 으로 설정합니다. BuildRun CanceledBuildRun 을 취소하면 기본 TaskRun 리소스도 취소됩니다.
다음 예제에서는 BuildRun 리소스에 대해 취소된 빌드 실행을 보여줍니다.
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buildah-buildrun
spec:
# [...]
state: "BuildRunCanceled"
3.12. 자동 빌드 실행 삭제 링크 복사링크가 클립보드에 복사되었습니다!
보존 및 TTL 매개변수를 정의하여 빌드 실행의 라이프사이클을 자동으로 관리합니다.
빌드 또는 사양에 다음 보존 매개변수를 추가하여 빌드 실행을 자동으로 삭제합니다.
build run
buildrunTTL 매개변수: 빌드가 완료된 후 정의된 기간 동안만 존재하는지 확인합니다.-
buildrun.spec.retention.ttlAfterFailed: 지정된 시간이 경과하고 빌드 실행에 실패한 경우 빌드 실행이 삭제됩니다. -
buildrun.spec.retention.ttlAfterSucceeded: 지정된 시간이 통과되고 빌드 실행에 성공하면 빌드 실행이 삭제됩니다.
-
BuildTTL 매개변수: 빌드가 완료된 후 정의된 기간 동안만 빌드에 대해 실행되도록 합니다.-
build.spec.retention.ttlAfterFailed: 지정된 시간이 경과하고 빌드 실행에 실패한 경우 빌드 실행이 삭제됩니다. -
build.spec.retention.ttlAfterSucceeded: 지정된 시간이 경과하고 빌드에 성공한 경우 빌드 실행이 삭제됩니다.
-
빌드제한 매개변수: 빌드에 대해 제한된 수의 성공 또는 실패한 빌드 실행만 존재할 수 있는지 확인합니다.-
build.spec.retention.succeededLimit: 빌드에 존재할 수 있는 성공한 빌드 실행 수를 정의합니다. -
build.spec.retention.failedLimit: 빌드에 존재할 수 있는 실패한 빌드 실행 수를 정의합니다.
-
3.13. Pod 구성 링크 복사링크가 클립보드에 복사되었습니다!
선택적 BuildRun CR(사용자 정의 리소스) 필드를 사용하여 빌드에 대한 Pod 예약 및 배치를 구성합니다.
다음 필드를 사용하여 빌드 포드를 구성합니다.
-
spec.tolerations: Pod 허용 오차를 지정합니다. 참고: NoSchedule 테인트 효과만 지원됩니다. -
spec.nodeSelector: Pod를 실행해야 하는 노드를 지정합니다. -
spec.schedulerName: Pod의 사용자 정의 스케줄러를 지정합니다.
Build 및 BuildRun CR 모두에 이러한 필드를 정의하는 경우 BuildRun 값이 우선합니다.