1.2. source-to-image ビルドの作成
source-to-image ビルドを作成し、作成したイメージをカスタム Quay リポジトリーにプッシュできます。
前提条件
- OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
-
ocCLI がインストールされている。 -
オプション:
shpCLI がインストールされている。
手順
Buildリソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。例:
ocCLI の使用$ oc apply -f - <<EOF apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: s2i-nodejs-build spec: source:1 type: Git git: url: https://github.com/redhat-openshift-builds/samples contextDir: s2i-build/nodejs strategy:2 name: source-to-image kind: ClusterBuildStrategy paramValues:3 - name: builder-image value: quay.io/centos7/nodejs-12-centos7:master output: image: quay.io/<repo>/s2i-nodejs-example4 pushSecret: registry-credential5 EOF- 1
- ソースコードが配置される場所。
- 2
- コンテナーの構築に使用するビルドストラテジー。
- 3
- ビルドストラテジーで定義されるパラメーター。
builder-imageストラテジーパラメーターの値を設定するには、出力イメージのビルドに必要なビルダーイメージの場所を指定します。 - 4
- ビルドイメージがプッシュされる場所。ビルドされたイメージをカスタム Quay.io リポジトリーにプッシュできます。
repoは、有効な Quay.io 組織または Quay ユーザー名に置き換えます。 - 5
- コンテナーイメージをプッシュするための認証情報を保存するシークレット名。認証用に
docker-registryタイプのシークレットを生成するには、「コンテナーレジストリーへの認証」を参照してください。
例:
shpCLI の使用$ shp build create s2i-nodejs-build \ --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="s2i-build/nodejs" \1 --strategy-name="source-to-image" \2 --builder-image="quay.io/centos7/nodejs-12-centos7" \3 --output-image="quay.io/<repo>/s2i-nodejs-example" \4 --output-credentials-secret="registry-credential"5 - 1
- ソースコードが配置される場所。
- 2
- コンテナーの構築に使用するビルドストラテジー。
- 3
- ビルドストラテジーで定義されるパラメーター。
builder-imageストラテジーパラメーターの値を設定するには、出力イメージのビルドに必要なビルダーイメージの場所を指定します。 - 4
- ビルドイメージがプッシュされる場所。ビルドされたイメージをカスタム Quay.io リポジトリーにプッシュできます。
repoは、有効な Quay.io 組織または Quay ユーザー名に置き換えます。 - 5
- コンテナーイメージをプッシュするための認証情報を保存するシークレット名。認証用に
docker-registryタイプのシークレットを生成するには、「コンテナーレジストリーへの認証」を参照してください。
Buildリソースが CLI のいずれかを使用して作成されていることを確認します。例:
ocCLI の使用$ oc get builds.shipwright.io s2i-nodejs-build例:
shpCLI の使用$ shp build listBuildRunリソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。例:
ocCLI の使用$ oc apply -f - <<EOF apiVersion: shipwright.io/v1beta1 kind: BuildRun metadata: name: s2i-nodejs-buildrun spec: build: name: s2i-nodejs-build1 EOF- 1
spec.build.nameフィールドは、実行するそれぞれのビルドを示し、同じ namespace で使用できる必要があります。
例:
shpCLI の使用$ shp build run s2i-nodejs-build --follow1 - 1
- オプション:
--followオプションのフラグを使用すると、出力結果のビルドログを表示できます。
次のいずれかのコマンドを実行して、
BuildRunリソースが作成されているかどうかを確認します。例:
ocCLI の使用$ oc get buildrun s2i-nodejs-buildrun例:
shpCLI の使用$ shp buildrun listBuildRunリソースはTaskRunリソースを作成し、その後ビルドストラテジーの手順を実行する Pod を作成します。
検証
すべてのコンテナーがタスクを完了したら、以下を確認します。
Pod で
STATUSフィールドがCompletedとして表示されるかどうかを確認します。$ oc get pods -w出力例
NAME READY STATUS RESTARTS AGE s2i-nodejs-buildrun-phxxm-pod 2/2 Running 0 10s s2i-nodejs-buildrun-phxxm-pod 1/2 NotReady 0 14s s2i-nodejs-buildrun-phxxm-pod 0/2 Completed 0 2mそれぞれの
TaskRunリソースにSUCCEEDEDフィールドがTrueと表示されているかどうかを確認します。$ oc get tr出力例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun-phxxm True Succeeded 2m39s 13sそれぞれの
BuildRunリソースにSUCCEEDEDフィールドがTrueと表示されているかどうかを確認します。$ oc get br出力例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun True Succeeded 2m41s 15s検証中にビルドの実行が失敗した場合は、
BuildRunリソースのstatus.failureDetailsフィールドをチェックして、Pod またはコンテナー内で失敗が発生した正確なポイントを特定できます。注記コンテナーの 1 つがタスクを完了したため、Pod が
NotReady状態に切り替わる可能性があります。これは想定される動作です。
build.spec.output.imageフィールドで指定されたレジストリーにイメージがプッシュされたかどうかを検証します。レジストリーにログインした後、以下のコマンドを実行してイメージをプルできます。$ podman pull quay.io/<repo>/<image>1 - 1
Buildリソースの作成時に使用されるリポジトリー名とイメージ名。たとえば、イメージ名としてs2i-nodejs-exampleを使用できます。
1.2.1. ネットワークが制限された環境での source-to-image ビルドの作成 リンクのコピーリンクがクリップボードにコピーされました!
source-to-image ビルドストラテジーに必要なイメージのミラーリングを行い、ネットワークが制限された環境で source-to-image ビルドを作成できます。
前提条件
- クラスターが source-to-image ビルドの作成に使用できる git ソースに接続し、操作できる。
-
ローカルレジストリーで
source-to-imageビルドを作成するために必要な builder-image がある。ローカルレジストリーに builder-image がない場合は、ソースイメージをミラーリングします。
手順
以下のコマンドを実行して、
source-to-imageビルドストラテジーに必要なイメージのミラーリングを行います。$ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/source-to-image/source-to-image-rhel8@sha256:d041c1bbe503d152d0759598f79802e257816d674b342670ef61c6f9e6d401c5 <mirror_registry>/<repo>/source-to-image-source-to-image-rhel8- 「source-to-image ビルドの作成セクション」で説明されている手順を実行します。