1.2. source-to-image ビルドの作成


source-to-image ビルドを作成し、作成したイメージをカスタム Quay リポジトリーにプッシュできます。

前提条件

  • OpenShift Container Platform クラスターに Builds for Red Hat OpenShift Operator がインストールされている。
  • oc CLI がインストールされている。
  • オプション: shp CLI がインストールされている。

手順

  1. Build リソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。

    例: oc CLI の使用

    $ 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-example 
    4
    
        pushSecret: registry-credential 
    5
    
    EOF

    1
    ソースコードが配置される場所。
    2
    コンテナーの構築に使用するビルドストラテジー。
    3
    ビルドストラテジーで定義されるパラメーター。builder-image ストラテジーパラメーターの値を設定するには、出力イメージのビルドに必要なビルダーイメージの場所を指定します。
    4
    ビルドイメージがプッシュされる場所。ビルドされたイメージをカスタム Quay.io リポジトリーにプッシュできます。repo は、有効な Quay.io 組織または Quay ユーザー名に置き換えます。
    5
    コンテナーイメージをプッシュするための認証情報を保存するシークレット名。認証用に docker-registry タイプのシークレットを生成するには、「コンテナーレジストリーへの認証」を参照してください。

    例: shp CLI の使用

    $ 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 タイプのシークレットを生成するには、「コンテナーレジストリーへの認証」を参照してください。
  2. Build リソースが CLI のいずれかを使用して作成されていることを確認します。

    例: oc CLI の使用

    $ oc get builds.shipwright.io s2i-nodejs-build

    例: shp CLI の使用

    $ shp build list

  3. BuildRun リソースを作成し、次のいずれかの CLI を使用して OpenShift Container Platform クラスターに適用します。

    例: oc CLI の使用

    $ oc apply -f - <<EOF
    apiVersion: shipwright.io/v1beta1
    kind: BuildRun
    metadata:
      name: s2i-nodejs-buildrun
    spec:
      build:
        name: s2i-nodejs-build 
    1
    
    EOF

    1
    spec.build.name フィールドは、実行するそれぞれのビルドを示し、同じ namespace で使用できる必要があります。

    例: shp CLI の使用

    $ shp build run s2i-nodejs-build --follow 
    1

    1
    オプション: --follow オプションのフラグを使用すると、出力結果のビルドログを表示できます。
  4. 次のいずれかのコマンドを実行して、BuildRun リソースが作成されているかどうかを確認します。

    例: oc CLI の使用

    $ oc get buildrun s2i-nodejs-buildrun

    例: shp CLI の使用

    $ shp buildrun list

    BuildRun リソースは TaskRun リソースを作成し、その後ビルドストラテジーの手順を実行する Pod を作成します。

検証

  1. すべてのコンテナーがタスクを完了したら、以下を確認します。

    • 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 状態に切り替わる可能性があります。これは想定される動作です。

  2. 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 がない場合は、ソースイメージをミラーリングします。

手順

  1. 以下のコマンドを実行して、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
  2. 「source-to-image ビルドの作成セクション」で説明されている手順を実行します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る