第1章 Builds の概要


Builds は、OpenShift Container Platform 上でコンテナーイメージをビルドするための Shipwright ベースのフレームワークです。これは、自動イメージ作成を求める開発者と、大規模かつ安全で再利用可能なビルドストラテジーを管理する管理者向けに設計されています。

1.1. 能力とリソースを構築する

Builds は、ソースコードと Dockerfile からコンテナーイメージをビルドするための Kubernetes ネイティブ API を提供します。S2I および Buildah ストラテジーをサポートし、カスタムストラテジーを可能にし、ビルドを管理するための CLI を提供し、OpenShift Container Platform コンソールの開発者向けビューと統合します。

Builds は以下のカスタムリソース (CR) で構成します。

  • Build
  • BuildStrategy および ClusterBuildStrategy
  • BuildRun

1.1.1. Build リソース

ビルド リソースは、アプリケーションのソースコードと、アプリケーションイメージがプッシュされる場所を定義します。ビルドリソースは、Git ソース、ビルドストラテジー、および出力イメージレジストリーを指定します。

apiVersion: shipwright.io/v1beta1
kind: Build
metadata:
  name: buildah-golang-build
spec:
  source:
    git:
      url: https://github.com/username/taxi
  strategy:
    name: buildah
    kind: ClusterBuildStrategy
  output:
    image: registry.mycompany.com/my-org/taxi-app:latest

また、Build リソースを拡張してイメージをプライベートレジストリーにプッシュしたり、Dockerfile ファイルを使用したりすることもできます。

1.1.2. BuildStrategy および ClusterBuildStrategy リソース

BuildStrategy および ClusterBuildStrategy リソースは、アプリケーションを構築するために必要な手順を定義します。

ビルド戦略は 名前空間スコープであり、特定の名前空間内でのみ作成、管理、使用でき、クラスター全体で共有することはできません。

ClusterBuildStrategy はクラスタースコープであり、複数の名前空間間で共有できます。

どちらの資料にも 手順の 説明が含まれています。次の例は、buildah という名前の ClusterBuildStrategy を示しています。

apiVersion: shipwright.io/v1beta1
kind: ClusterBuildStrategy
metadata:
  name: buildah
spec:
  steps:
    - name: build-and-push
      image: quay.io/containers/buildah:v1.31.0
      workingDir: $(params.shp-source-root)
      command:
        - /bin/bash
       # ...
# ...

1.1.3. BuildRun リソース

BuildRun リソースは、Tekton タスクの実行と同様に、クラスター上でビルドを実行します。これは、特定のパラメーターを使用して実行するためのビルドをインスタンス化するワークロードを表します。各 BuildRun は、監視用の一意の名前を定義し、Build インスタンスを参照し、名前空間内のサービスアカウントを指定します。

BuildRun リソースを使用すると、以下の要素を定義できます。

  • ビルドのステータスを監視する一意の BuildRun
  • ビルド中に使用する、参照される Build インスタンス
  • ビルドの全シークレットをホストするサービスアカウント

BuildRun リソースは、namespace 内で利用できます。

1.1.4. ビルドコントローラー

ビルドコントローラーは、実行前に、ストラテジーの存在、パラメーター定義、シークレット参照、および Git リポジトリーへのアクセス可能性をチェックすることにより、ビルドリソースを検証します。

ビルドコントローラーは、Build リソースの更新を監視し、以下のタスクを実行します。

  • 参照される Strategy オブジェクトが Build リソースに存在するかどうかを検証します。
  • Build CR で指定されたパラメーターが参照されたビルドストラテジーに存在するかどうかを検証します。また、パラメーター名が予約された名前と競合するかどうかも検証します。
  • コンテナーレジストリーの出力シークレットが Build リソースに存在するかどうかを検証します。
  • 参照される spec.source.git.url エンドポイント URL が Build リソースに存在するかどうかを検証します。

build run controller は、Build または TaskRun リソースの更新を監視し、以下のタスクを実行します。

  • 既存の TaskRun リソースを検索し、その親 BuildRun リソースのステータスを更新します。
  • 指定したサービスアカウントを取得し、Build リソースの出力シークレットと共に設定します。
  • TaskRun リソースが存在しない場合は、コントローラーが新しい Tekton TaskRun リソースを生成し、TaskRun リソースへの参照を設定します。
  • TaskRun リソースの後続の更新では、コントローラーが親の BuildRun リソースを更新します。

1.1.5. ビルドの検証

ビルドコントローラーは、依存関係や設定の誤りまたは欠落による障害を防ぐため、BuildRun リソースを事前に検証します。検証では、ストラテジーの存在、秘密参照、パラメーター定義、Git リポジトリーへのアクセス可能性、および環境変数の完全性を確認します。

Expand
表1.1 ビルドコントローラーによるビルドの検証
status.reason フィールド説明

BuildStrategyNotFound

namespace レベルで参照されているストラテジーは存在しません。

ClusterBuildStrategyNotFound

クラスターレベルで参照されているストラテジーは存在しません。

SetOwnerReferenceFailed

Build リソースと BuildRun リソース間の所有者参照の設定に失敗しました。このステータスは、ビルドで spec.retention.atBuildDeletion フィールドを true に設定するとトリガーされます。

SpecSourceSecretRefNotFound

Git への認証に使用されるシークレットは存在しません。

SpecOutputSecretRefNotFound

コンテナーレジストリーに対する認証に使用されるシークレットが存在しません。

SpecBuilderSecretRefNotFound

コンテナーレジストリーに対する認証に使用されるシークレットが存在しません。

MultipleSecretRefNotFound

認証に使用されるシークレットが複数欠落しています。

RestrictedParametersInUse

1 つまたは複数の定義済み params が予約済みパラメーターと競合しています。

UndefinedParameter

パラメーターは参照されたストラテジーでは定義されません。これらのパラメーターは、ストラテジーの spec.parameters 仕様で定義する必要があります。

RemoteRepositoryUnreachable

定義された spec.source.git.url 仕様が見つかりませんでした。この検証は、HTTP および HTTPS プロトコルに対してのみ行われます。

BuildNameInvalid

metadata.name フィールドのビルド名が無効です。ビルド名には有効なラベル値を使用する必要があります。

SpecEnvNameCanNotBeBlank

ユーザー指定の環境変数の名前が空白であることを示します。

SpecEnvValueCanNotBeBlank

ユーザー指定の環境変数の値が空白であることを示します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る