設定
Builds の設定
概要
第1章 Builds の設定 リンクのコピーリンクがクリップボードにコピーされました!
プラットフォームエンジニアは、ビルド カスタムリソース (CR) 内で、ソースコードの場所、ビルドストラテジー、パラメーター、出力設定、保持ルール、およびボリュームを定義できます。ビルド CR は、一貫性のあるビルド Pod 設定を可能にし、クラスター上でのビルド実行を管理するための名前空間スコープの方法を提供します。
1.1. build の設定可能なフィールド リンクのコピーリンクがクリップボードにコピーされました!
入力、実行設定、出力、およびライフサイクル動作を指定して、ビルド カスタムリソース (CR) を設定します。これらのパラメーターは、ビルド CR の設定と動作を制御します。
以下の表は、ビルド CR に必要なフィールドを示しています。
| フィールド | 説明 |
|---|---|
|
|
リソースの API バージョンを指定します (例: |
|
|
リソースのタイプを指定します (例: |
|
|
カスタムリソース定義インスタンスを識別するメタデータを指定します。たとえば、 |
|
| ソースコードの場所を指定します。たとえば、Git リポジトリーやソースバンドルイメージなどです。 |
|
|
|
|
| システムが生成されたイメージを保存する場所を指定します。 |
|
| コンテナーレジストリーへのアクセス権を取得するために使用する既存のシークレットを指定します。 |
以下の表は、ビルド CR のオプションフィールドについて説明しています。
| フィールド | 説明 |
|---|---|
|
| ビルドストラテジーで定義されたパラメーターの値を設定するための名前と値のリストを指定します。 |
|
|
カスタムタイムアウトを定義します。デフォルト値は 10 分です。このフィールドの値は、 |
|
| 出力イメージにアノテーションを付けるために使用できるキーと値のペアのリストを指定します。 |
|
| 出力イメージにラベルを付けるために使用できるキーと値のペアのリストを指定します。 |
|
| ビルドコンテナーに渡すことができる追加の環境変数を定義します。使用できる変数は、ビルドストラテジーで使用されるツールによって異なります。 |
|
| 失敗したビルド実行が存在できる期間を指定します。 |
|
| 成功したビルド実行が存続できる期間を指定します。 |
|
| 失敗したビルド実行が存続できる数を指定します。 |
|
| 成功したビルド実行が存続できる数を指定します。 |
|
| Builds を実行するノードを指定します。 |
|
| Builds Pod の toleration を指定します。 |
|
| Builds Pod のスケジューラーを指定します。 |
1.2. ソース定義 リンクのコピーリンクがクリップボードにコピーされました!
ビルド カスタムリソース (CR) で、ビルドに使用するソースコードの場所を設定します。
以下のソースフィールドは、ビルドが Git リポジトリーにアクセスし、ソースコンテンツを選択する方法を指定します。
-
source.git.url:Git リポジトリーの場所。 -
source.git.cloneSecret: プライベートリポジトリーの SSH キーを含むシークレット。 -
source.git.revision: 特定のコミット、タグ、またはブランチ (デフォルトはデフォルトブランチ)。 -
source.contextDir: ソースコードを含むサブディレクトリー。
ビルドコントローラーは、デフォルトでは Git リポジトリーを検証しません。検証を有効にするには、次の例に示すように、ビルド 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、ソースからイメージへの 変換、および ビルドパックが 含まれます。ビルド 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. ビルドのパラメーター値の定義 リンクのコピーリンクがクリップボードにコピーされました!
ビルドストラテジーのパラメーターは、ビルド カスタムリソース (CR) で設定できます。これらの設定は、ビルドの実行方法を制御します。すべてのパラメーターには、値を指定する必要があります。値を直接指定することも、ConfigMaps または Secrets 内のキーを参照することもできます。
ConfigMaps または Secrets は、ビルドストラテジー内のコマンド、引数、または環境変数にパラメーターが含まれている場合にのみ使用できます。
ビルド時にパラメーター値定義を使用するための要件は以下のとおりです。
-
マッピング: すべての
spec.paramValues名は、BuildStrategyCR で定義されているパラメーターと一致する必要があります。 -
予約名:
BUILDER_IMAGE、CONTEXT_DIR、またはshp-で始まる名前などの予約名は使用しないでください。 -
リソース:
ConfigMapsまたはSecrets は、パラメーターがコマンド、引数、または環境変数で使用されている場合にのみ使用できます。
1.4.1. パラメーター値を定義する設定例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、ビルドストラテジーでパラメーターを設定する方法を示しています。カスタムリソース (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: # ...- ビルド CR 内のパラメーターに値を割り当てる
前の例で示したように、
ClusterBuildStrategyCR はストレージドライバーパラメーターを定義します。ビルド 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:
# ...
+
各項目の説明:
metadata-
ビルドCR のメタデータを指定します。
- ビルド 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: # ...各項目の説明:
metadata-
ビルドCR のメタデータを指定します。
- ビルド 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 - name: registries-block values: - secretValue: name: registry-configuration key: reg-blocked strategy: name: buildah kind: ClusterBuildStrategy output: # ...各項目の説明:
metadata-
ビルドCR のメタデータを指定します。 values.secretValue-
シークレットを参照する値を指定します。
1.5. Builder または Docker ファイルの定義 リンクのコピーリンクがクリップボードにコピーされました!
ビルド カスタムリソース (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
以下の例のように、builder イメージを 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. 出力定義 リンクのコピーリンクがクリップボードにコピーされました!
カスタムリソース (CR) を作成する際、出力先を選択する必要があります。ここにシステムが完成したイメージを送ります。プライベートレジストリーを使用する場合は、ログインするための秘密鍵も提供する必要があります。イメージにアノテーションやラベルを追加することもできます。
アノテーションやラベルを追加すると、システムはイメージを 2 回プッシュします。最初の推進力は、構築ストラテジーから生まれる。2 回目のプッシュ処理では、イメージ設定が変更され、アノテーションとラベルが追加されます。
以下の例では、イメージがプッシュされるパブリックレジストリーを定義します。
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. ビルドの保持パラメーター定義 リンクのコピーリンクがクリップボードにコピーされました!
ビルド カスタムリソース (CR) で保持パラメーターを定義します。これらのパラメーターは、BuildRun インスタンスのライフサイクルを管理します。
以下の目的で保持パラメーターを定義できます。
- 完了したビルド実行が存続できる期間を指定する
- ビルドに対して存在できる成功または失敗したビルド実行の数を指定する
ビルド カスタムリソース (CR) では、以下の保持パラメーターの値を設定できます。
-
retention.succeededLimit: ビルドに対して存在できる、成功したビルド実行の回数。 -
retention.failedLimit: ビルドで発生する可能性のある失敗したビルド実行の数。 -
retention.ttlAfterFailed: 失敗したビルド実行が存在できる期間。 -
retention.ttlAfterSucceeded: ビルド実行が成功した状態が維持される期間。
制限値を変更すると、即座に反映されます。有効期限 (TTL) を変更した場合、その変更は新規ビルド実行にのみ適用されます。
次の例は、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. ビルドのボリューム定義 リンクのコピーリンクがクリップボードにコピーされました!
BuildStrategy リソースで指定されたボリュームを上書きするには、Build カスタムリソース (CR) でボリュームを定義します。ボリュームが明示的に上書きされていない場合、ビルドの実行は失敗します。
次の例は、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>
各項目の説明:
< ビルド名 >-
ビルドの名前を指定します。 < ボリューム名 >- ボリューム名を指定します。
<configmap_name>-
ConfigMapの名前を指定します。
1.9. Pod の設定 リンクのコピーリンクがクリップボードにコピーされました!
オプションの BuildRun カスタムリソース (CR) フィールドを使用して、ビルドの Pod のスケジューリングと配置を設定します。
ビルド Pod を設定するには、以下のオプションの ビルド CR フィールドを使用します。
spec.tolerationsフィールドは、以下の制限で Builds Pod の toleration を指定します。-
NoScheduleテイント効果のみがサポートされます。
-
-
spec.nodeSelectorフィールドは、Builds Pod を実行するノードを指定します。 -
spec.schedulerNameフィールドは、Builds Pod のスケジューラーを指定します。
これらのフィールドをビルド CR とビルドラン CR で定義した場合、ビルドランの値が優先されます。
第2章 ビルドストラテジーの設定 リンクのコピーリンクがクリップボードにコピーされました!
プラットフォームエンジニアは、BuildStrategy または ClusterBuildStrategy カスタムリソース (CR) で、パラメーター、システム設定、リソース要件、アノテーション、ボリュームを指定することで、一貫性のあるビルドストラテジーを定義できます。これらのストラテジーにより、クラスター全体で制御された再利用可能なビルド実行が可能になります。
2.1. ストラテジーパラメーターの定義 リンクのコピーリンクがクリップボードにコピーされました!
BuildStrategy または ClusterBuildStrategy カスタムリソース (CR) でパラメーターを定義します。これらの値は、ビルド または ビルド実行 CR で設定または変更できます。
ストラテジーのパラメーターを定義する前に、以下の点を考慮してください。
-
ビルドストラテジー CR の
spec.parametersフィールドでパラメーターのリストを定義します。各項目には、名前、説明、タイプ、およびオプションでデフォルト値 (配列型の場合は複数の値) が含まれます。デフォルト値が設定されていない場合は、BuildまたはBuildRunCR で値を定義する必要があります。 -
ビルドストラテジーの
spec.stepsフィールドで、string または array 型のパラメーターを定義します。 $(params.your-parameter-name)構文を使用して、文字列型のパラメーターを指定します。ストラテジーを参照するBuildまたはBuildRunCR にyour-parameter-nameパラメーターの値を設定できます。必要に応じて、以下の文字列パラメーターを定義できます。Expand 表2.1 文字列パラメーター パラメーター 説明 imageこのパラメーターを使用して、
golang:$(params.go-version)などのカスタムタグを定義します。argsこのパラメーターを使用して、データを builder コマンドに渡します。
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[*])-
パラメーター値を単純な文字列として、または config map またはシークレットのキーへの参照として指定します。パラメーターは、
spec.stepsフィールドのcommandセクション、argsセクション、またはenvセクションで定義されている場合にのみ、設定マップまたはシークレット値を使用します。
2.2. システムパラメーターの定義 リンクのコピーリンクがクリップボードにコピーされました!
システムパラメーターを使用して、ビルドストラテジーの手順を定義し、システム情報、または ビルド または ビルド実行 カスタムリソース (CR) 内のユーザー定義情報にアクセスします。システムパラメーターは、build run controller によってランタイム時に定義されているため、設定または変更できません。
ビルドストラテジーの定義に以下のシステムパラメーターを定義できます。
| パラメーター | 説明 |
|---|---|
|
| ソースコードが格納されているディレクトリーへの絶対パスを指定します。 |
|
|
ソースコードのコンテキストディレクトリーへの絶対パスを指定します。 |
|
|
|
2.3. ステップリソースの定義 リンクのコピーリンクがクリップボードにコピーされました!
ビルドストラテジーの各ステップにおける CPU、メモリー、およびディスクの制限を定義します。ストラテジーに複数のステップがある場合、それぞれのステップに異なるリソース量を割り当てることができます。
管理者として、同じストラテジーの異なるバージョン (たとえば、buildah-small と buildah-large) を提供することで、ユーザーが自身のビルド要件に合ったリソースプロファイルを選択できるようにすることができます。
2.3.1. さまざまなリソースを使用したストラテジー リンクのコピーリンクがクリップボードにコピーされました!
異なるビルド要件に対して異なるリソース制限を適用するために、同じストラテジーの複数のバリエーションを定義します。
以下の例では、リソースに対して小および中程度の制限を定義した同じ buildah ストラテジーを使用しています。これらの例により、ストラテジー管理者はステップリソースの定義をより詳細に制御できます。
次の例に示すように、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: []
# ...
ストラテジーのリソース定義を設定した後、次の例に示すように、ビルド カスタムリソース (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. アノテーション定義 リンクのコピーリンクがクリップボードにコピーされました!
BuildStrategy または ClusterBuildStrategy のアノテーションは、他の Kubernetes オブジェクトと同様の方法で定義します。ビルドストラテジーは、これらのアノテーションを TaskRun リソースに渡します。そして、テクトンはそれらを 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.failureDetails フィールドのエラーの理由とメッセージを示しています。
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 内のボリュームを上書きすることはできません。ビルド または ビルド実行で カスタムボリュームを使用できるようにするには、ストラテジーで overridable フィールドを true に設定する必要があります。
ビルドのステップで定義されたボリュームマウントを使用すると、BuildStrategy、Build、または BuildRun リソースで定義されたボリュームにアクセスできるようになります。
ビルドストラテジーのボリュームでは、overridable のブール型フラグが使用されます。このフラグは、デフォルトで false に設定されます。Build または BuildRun リソースが、BuildStrategy リソースで定義されたボリュームをオーバーライドしようとすると、overridable フラグのデフォルト値が false であるため失敗します。
次の例は、ボリューム および 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) のオプションフィールドについて説明しています。
| フィールド | 説明 |
|---|---|
|
|
使用する既存の |
|
|
使用する組み込み |
|
| イメージのビルド時に使用するサービスアカウントを示します。 |
|
|
カスタムタイムアウトを定義します。このフィールドの値は、 |
|
|
ビルドストラテジーで定義されたパラメーターの値を指定するための名前と値のリストを示します。パラメーター値は、 |
|
|
生成されたイメージのプッシュ先のカスタムの場所を示します。このフィールドの値は、 |
|
|
コンテナーレジストリーにアクセスするための既存のシークレットを示します。このシークレットは、 |
|
|
ビルドコンテナーに渡すことができる追加の環境変数を定義します。このフィールド値は、 |
|
| Builds を実行するノードを指定します。 |
|
| Builds Pod の toleration を指定します。 |
|
| Builds 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 リソースに完全なビルド仕様を定義します。このアプローチにより、専用のビルド カスタム リソース (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>
以下は、
< イメージへのパス >- イメージファイルへのパスを指定します。
spec.build.name フィールドと spec.build.spec フィールドは相互排他的であるため、同じ CR 内で一緒に使用できません。
3.4. ビルド実行のパラメーター値定義 リンクのコピーリンクがクリップボードにコピーされました!
ビルドストラテジーパラメーターの値は、BuildRun カスタムリソース (CR) で定義できます。BuildRun リソースで設定された値は、Build リソース内の同名の値を上書きします。
次の例では、BuildRun の キャッシュ 値が 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>-
ビルドCR の名前を指定します。 <your_namespace>-
ビルドCR の名前空間を指定します。 < あなたの戦略 >-
ビルドCR に使用されるストラテジーを指定します。
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>-
ビルドランCR の名前を指定します。 <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に設定することもできます。注記サービスアカウントを定義せず、namespace に
pipelineサービスアカウントが存在する場合、BuildRunリソースはそのアカウントを使用します。それ以外の場合、BuildRunリソースはdefaultサービスアカウントを使用します。
3.6. ビルド実行の保持パラメーター定義 リンクのコピーリンクがクリップボードにコピーされました!
ビルド実行 カスタムリソース (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 の両方で保持パラメーターを定義した場合、BuildRun CR で定義された値は、Build CR で定義された保持パラメーターの値をオーバーライドします。
3.7. ビルド実行のボリューム定義 リンクのコピーリンクがクリップボードにコピーされました!
BuildRun カスタムリソース (CR) でボリュームを定義することで、BuildStrategy リソースのボリュームを上書きできます。ボリュームが上書きされていない場合、ビルド実行は失敗します。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>
各項目の説明:
- < ビルド名 >
-
ビルドランCR の名前を指定します。 - <buildrun_name>
-
ビルドCR の名前を指定します。 - < ボリューム名 >
-
ビルドCR のボリューム名を指定します。 - <configmap_name>
-
ビルドCR のConfigMapの名前を指定します。
3.8. 環境変数の定義 リンクのコピーリンクがクリップボードにコピーされました!
BuildRun カスタムリソース (CR) 内で環境変数を設定できます。これらの変数は、ビルドコンテナーに情報を渡します。リテラル値を使用することも、Kubernetes のダウンワード 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>"
各項目の説明:
環境名-
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 フィールドに格納します。このフィールドには、ステータス、そのステータスの理由、および説明メッセージが含まれます。たとえば、成功という 条件タイプは、ビルドが正常に完了したことを意味します。
以下の例は、特定のビルド実行 CR のステータスを表示する方法を示しています。
- 不明なステータス
-
不明ステータスは、ビルドがまだ開始中または進行中であることを示します。次の例は、ステータスが不明なビルド実行を示しています。
$ oc get buildrun buildah-buildrun-mp99r
出力例:
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME
buildah-buildrun-mp99r Unknown Unknown 1s
- 真の状態
-
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 のステータス、理由、メッセージなどの重要な情報が含まれます。
3.9.1. ビルド実行ステータスの説明 リンクのコピーリンクがクリップボードにコピーされました!
BuildRun カスタムリソース (CR) は、イメージ構築プロセス中にステータスが異なる可能性があります。ステータス フィールドを使用して、ビルドの状態を追跡してください。
次の表は、ビルド実行のさまざまなステータスを示しています。
| ステータス | 原因 | 説明 |
|---|---|---|
|
|
|
|
|
|
|
コントローラーは検証を行い、 |
|
|
| ユーザーがビルド実行のキャンセルを要求しました。この要求は build run controller をトリガーし、関連するタスクの実行をキャンセルするリクエストを作成します。このステータスが存在する場合、キャンセルはまだ処理中です。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 参照されたクラスタースコープのストラテジーがクラスター内に見つかりませんでした。 |
|
|
| 参照された namespace スコープのストラテジーがクラスター内に見つかりませんでした。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
デフォルトのないビルドストラテジーで定義されている一部のパラメーターに値が指定されていません。 |
|
|
| システムパラメーターの値が指定されましたが、これは許可されません。 |
|
|
| ビルドストラテジーで定義されていないパラメーターの値が指定されました。 |
|
|
| システムは、ビルドストラテジーパラメーターの値の入力ミスを検出しました。たとえば、ビルドストラテジーでパラメーターが配列または文字列として定義されている場合は、それに応じて値のセットまたは直接値を指定する必要があります。 |
|
|
|
パラメーターの値に、 |
|
|
|
配列パラメーターの値内の項目に、 |
|
|
|
パラメーターの値に、 |
|
|
|
パラメーターの値に、 |
|
|
| 参照されたサービスアカウントがクラスター内に見つかりませんでした。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
定義された |
|
|
|
定義された |
|
|
| ビルド実行 Pod が、実行されていたノードからエビクトされました。 |
3.9.2. ビルド実行の失敗を理解する リンクのコピーリンクがクリップボードにコピーされました!
ビルドが失敗した場合、BuildRun カスタムリソース (CR) の status.failureDetails フィールドには、エラーメッセージ、失敗理由、エラーが発生した特定のコンテナーまたは 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 フィールドが更新されます。このフィールドには、その特定のイメージビルドに使用された元の ビルド 仕様の完全なコピーが格納されます。このスナップショットを使用すれば、元の ビルド CR が後で変更された場合でも、実行時に使用された設定を確認できます。
3.10. ビルド実行と Tekton タスクの関係 リンクのコピーリンクがクリップボードにコピーされました!
BuildRun は、Tekton TaskRun の リソースを使用してイメージをビルドします。TaskRun は、ビルドが完了または失敗するまで、ビルドストラテジーで定義された手順に従います。
BuildRun を 作成すると、ビルドコントローラーは新しい TaskRun を開始します。BuildRun リソースは、イメージビルドのタスクをこの TaskRun に割り当てます。TaskRun は、ビルドストラテジーで定義されたすべてのステップを実行します。
3.11. ビルド実行のキャンセル リンクのコピーリンクがクリップボードにコピーされました!
アクティブな BuildRun リソースを停止するには、BuildRun リソースの 状態 フィールドを BuildRunCanceled に設定します。BuildRun を キャンセルすると、基となる TaskRun リソースもキャンセルされます。
次の例は、BuildRun リソースのキャンセルされたビルド実行を示しています。
apiVersion: shipwright.io/v1beta1
kind: BuildRun
metadata:
name: buildah-buildrun
spec:
# [...]
state: "BuildRunCanceled"
3.12. ビルド実行の自動削除 リンクのコピーリンクがクリップボードにコピーされました!
保持期間と TTL パラメーターを定義することで、ビルド実行のライフサイクルを自動的に管理します。
ビルド または ビルド実行の 仕様に以下の保持パラメーターを追加すると、ビルド実行が自動的に削除されます。
buildrunTTL パラメーター: ビルド実行が完了してから定義された期間のみ存在するようにします。-
buildrun.spec.retention.ttlAfterFailed: 指定された時間が経過して、ビルド実行に失敗した場合、ビルド実行は削除されます。 -
buildrun.spec.retention.ttlAfterSucceeded: 指定された時間が経過して、ビルド実行に成功した場合、ビルド実行は削除されます。
-
buildTTL パラメーター: ビルドのビルド実行が、完了してから定義された期間のみ存在するようにします。-
build.spec.retention.ttlAfterFailed: 指定された時間が経過して、ビルドの実行が失敗した場合、ビルド実行は削除されます。 -
build.spec.retention.ttlAfterSucceeded: 指定した時間が経過し、ビルドの実行が成功した場合、ビルドの実行が削除されます。
-
build制限パラメーター: 1 つのビルドに対して、成功または失敗したビルド実行を限られた数だけ存在できるようにします。-
build.spec.retention.succeededLimit: ビルドに対して存在できる、成功したビルド実行の数を定義します。 -
build.spec.retention.failedLimit: ビルドに対して存在できる、失敗したビルド実行の数を定義します。
-
3.13. Pod の設定 リンクのコピーリンクがクリップボードにコピーされました!
オプションの BuildRun カスタムリソース (CR) フィールドを使用して、ビルドの Pod のスケジューリングと配置を設定します。
ビルド Pod を設定するには、以下のフィールドを使用します。
-
spec.tolerations: Pod の許容範囲を指定します。注:NoSchedule の taint 効果のみがサポートされています。 -
spec.nodeSelector: Pod を実行する必要のあるノードを指定します。 -
spec.schedulerName: Pod のカスタムスケジューラーを指定します。
これらのフィールドを ビルド CR と ビルドラン CR の両方で定義した場合、ビルドランの 値が優先されます。