第1章 ビルドの実行
Builds をインストールした後、buildah または source-to-image ビルドを作成できます。ビルドに必要のないカスタムリソースを削除することもできます。
1.1. buildah ビルドの作成 リンクのコピーリンクがクリップボードにコピーされました!
buildah ビルドを作成し、作成したイメージをターゲットレジストリーにプッシュできます。
前提条件
- OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
-
ShipwrightBuildリソースを作成している。 -
ocCLI がインストールされている。 -
オプション:
shpCLI がインストールされている。
手順
Buildリソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。例:
ocCLI の使用$ oc apply -f - <<EOF apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-golang-build spec: source:1 type: Git git: url: https://github.com/shipwright-io/sample-go contextDir: docker-build strategy:2 name: buildah kind: ClusterBuildStrategy paramValues:3 - name: dockerfile value: Dockerfile output:4 image: image-registry.openshift-image-registry.svc:5000/buildah-example/sample-go-app EOF- 1
- ソースコードが配置される場所。
- 2
- コンテナーの構築に使用するビルドストラテジー。
- 3
- ビルドストラテジーで定義されるパラメーター。
dockerfileストラテジーパラメーターの値を設定するには、出力イメージの構築に必要な Dockerfile の場所を指定します。 - 4
- ビルドイメージがプッシュされる場所。この手順例では、ビルドされたイメージが OpenShift Container Platform クラスターの内部レジストリーにプッシュされます。
buildah-exampleは現在のプロジェクトの名前です。イメージのプッシュを許可するために、指定されたプロジェクトが存在することを確認します。
例:
shpCLI の使用$ shp build create buildah-golang-build \ --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="buildah-build" \1 --strategy-name="buildah" \2 --dockerfile="Dockerfile" \3 --output-image="image-registry.openshift-image-registry.svc:5000/buildah-example/go-app"4 - 1
- ソースコードが配置される場所。
- 2
- コンテナーの構築に使用するビルドストラテジー。
- 3
- ビルドストラテジーで定義されるパラメーター。
dockerfileストラテジーパラメーターの値を設定するには、出力イメージの構築に必要な Dockerfile の場所を指定します。 - 4
- ビルドイメージがプッシュされる場所。この手順例では、ビルドされたイメージが OpenShift Container Platform クラスターの内部レジストリーにプッシュされます。
buildah-exampleは現在のプロジェクトの名前です。イメージのプッシュを許可するために、指定されたプロジェクトが存在することを確認します。
Buildリソースが CLI のいずれかを使用して作成されていることを確認します。例:
ocCLI の使用$ oc get builds.shipwright.io buildah-golang-build例:
shpCLI の使用$ shp build listBuildRunリソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。例:
ocCLI の使用$ oc apply -f - <<EOF apiVersion: shipwright.io/v1beta1 kind: BuildRun metadata: name: buildah-golang-buildrun spec: build: name: buildah-golang-build1 EOF- 1
spec.build.nameフィールドは、実行するそれぞれのビルドを示し、同じ namespace で使用できる必要があります。
例:
shpCLI の使用$ shp build run buildah-golang-build --follow1 - 1
- オプション:
--followオプションのフラグを使用すると、出力結果のビルドログを表示できます。
次のいずれかのコマンドを実行して、
BuildRunリソースが作成されているかどうかを確認します。例:
ocCLI の使用$ oc get buildrun buildah-golang-buildrun例:
shpCLI の使用$ shp buildrun listBuildRunリソースはTaskRunリソースを作成し、その後ビルドストラテジーの手順を実行する Pod を作成します。
検証
すべてのコンテナーがタスクを完了したら、以下を確認します。
Pod で
STATUSフィールドがCompletedとして表示されるかどうかを確認します。$ oc get pods -w出力例
NAME READY STATUS RESTARTS AGE buildah-golang-buildrun-dtrg2-pod 2/2 Running 0 4s buildah-golang-buildrun-dtrg2-pod 1/2 NotReady 0 7s buildah-golang-buildrun-dtrg2-pod 0/2 Completed 0 55sそれぞれの
TaskRunリソースにSUCCEEDEDフィールドがTrueと表示されているかどうかを確認します。$ oc get tr出力例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME buildah-golang-buildrun-dtrg2 True Succeeded 11m 8m51sそれぞれの
BuildRunリソースにSUCCEEDEDフィールドがTrueと表示されているかどうかを確認します。$ oc get br出力例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME buildah-golang-buildrun True Succeeded 13m 11m検証中にビルドの実行が失敗した場合は、
BuildRunリソースのstatus.failureDetailsフィールドをチェックして、Pod またはコンテナー内で失敗が発生した正確なポイントを特定できます。注記コンテナーの 1 つがタスクを完了したため、Pod が
NotReady状態に切り替わる可能性があります。これは想定される動作です。
build.spec.output.imageフィールドで指定されたレジストリーにイメージがプッシュされたかどうかを検証します。内部レジストリーにアクセスできるノードから次のコマンドを実行して、イメージのプルを試みることができます。$ podman pull image-registry.openshift-image-registry.svc:5000/<project>/<image>1 - 1
Buildリソースの作成時に使用されるプロジェクト名とイメージ名。たとえば、buildah-exampleをプロジェクト名として、sample-go-appをイメージ名として使用できます。
1.1.1. ネットワークが制限された環境での buildah ビルドの作成 リンクのコピーリンクがクリップボードにコピーされました!
buildah ビルドストラテジーに必要なイメージのミラーリングを行い、ネットワーク制限環境で buildah ビルドを作成できます。
前提条件
- クラスターが buildah ビルドを作成するのに使用できる git ソースに接続し、操作できる。
手順
以下のコマンドを実行して、
buildahビルドストラテジーに必要なイメージのミラーリングを行います。$ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/ubi8/buildah@sha256:1c89cc3cab0ac0fc7387c1fe5e63443468219aab6fd531c8dad6d22fd999819e <mirror_registry>/<repo>/ubi8_buildah- 「buildah ビルドの作成」セクションで説明されている手順を実行します。