第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リソースに存在するかどうかを検証します。 -
BuildCR で指定されたパラメーターが参照されたビルドストラテジーに存在するかどうかを検証します。また、パラメーター名が予約された名前と競合するかどうかも検証します。 -
コンテナーレジストリーの出力シークレットが
Buildリソースに存在するかどうかを検証します。 -
参照される
spec.source.git.urlエンドポイント URL がBuildリソースに存在するかどうかを検証します。
build run controller は、Build または TaskRun リソースの更新を監視し、以下のタスクを実行します。
-
既存の
TaskRunリソースを検索し、その親BuildRunリソースのステータスを更新します。 -
指定したサービスアカウントを取得し、
Buildリソースの出力シークレットと共に設定します。 -
TaskRunリソースが存在しない場合は、コントローラーが新しい TektonTaskRunリソースを生成し、TaskRunリソースへの参照を設定します。 -
TaskRunリソースの後続の更新では、コントローラーが親のBuildRunリソースを更新します。
1.1.5. ビルドの検証 リンクのコピーリンクがクリップボードにコピーされました!
ビルドコントローラーは、依存関係や設定の誤りまたは欠落による障害を防ぐため、BuildRun リソースを事前に検証します。検証では、ストラテジーの存在、秘密参照、パラメーター定義、Git リポジトリーへのアクセス可能性、および環境変数の完全性を確認します。
| status.reason フィールド | 説明 |
|---|---|
|
| namespace レベルで参照されているストラテジーは存在しません。 |
|
| クラスターレベルで参照されているストラテジーは存在しません。 |
|
|
|
|
| Git への認証に使用されるシークレットは存在しません。 |
|
| コンテナーレジストリーに対する認証に使用されるシークレットが存在しません。 |
|
| コンテナーレジストリーに対する認証に使用されるシークレットが存在しません。 |
|
| 認証に使用されるシークレットが複数欠落しています。 |
|
|
1 つまたは複数の定義済み |
|
|
パラメーターは参照されたストラテジーでは定義されません。これらのパラメーターは、ストラテジーの |
|
|
定義された |
|
|
|
|
| ユーザー指定の環境変数の名前が空白であることを示します。 |
|
| ユーザー指定の環境変数の値が空白であることを示します。 |