IBM Cloud Container Registry でのイメージからのジョブの作成

IBM Cloud® Container Registry 内のイメージを使用するジョブ構成を作成します。 ジョブはコンソールから、または CLI を使用して作成できます。

開始前に

プロジェクトのすべてのユーザーが、手動でレジストリシークレットを作成することなく、 Container Registry に画像を保存・アクセスできるようにプロジェクトを設定したいとお考えですか? 十分な権限があれば、このデフォルトのレジストリー・アクセス権限をロケーション (地域) ごとに構成できます。 これらのアクションを実行するための十分な権限がない場合は、このページを使用して、必要な権限を理解することができます。 プロジェクト全体の設定の構成 を参照してください。

コンソールを使用した Container Registry 内のイメージを参照するジョブの作成

Container Registry コンソールを使用して、Code Engine 内のイメージを使用するジョブ構成を作成します。

Code Engine は、ユーザーのアカウントの Container Registry の名前空間からイメージを自動的にプルできます。 別のContainer Registryアカウントまたはプライベート Docker Hub アカウントからイメージをプルするには、プライベート・レジストリー内のイメージからジョブを作成するを参照してください。

  1. Code Engine コンソールを開きます。
  2. 作成を開始 」を選択します。
  3. 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 ジョブを作成するには、選択したプロジェクトがなければならないことに注意してください。
  4. **「ジョブ」**を選択します。
  5. ジョブの名前を入力します (例: myjob)。
  6. 既存のコンテナイメージを使用する 」を選択し、「 イメージの設定 」をクリックします。
  7. IBM Registry Dallas など、コンテナレジストリの場所を選択してください。
  8. 「レジストリー・シークレット」 として Code Engine managed secret を選択します。 この例では、 アカウント内の Container Registry 名前空間にある画像を使用しているため、 Code Engine がレジストリ・シークレットを自動的に作成・管理してくれます。
  9. Code Engineジョブが参照するレジストリー内の既存の名前空間とイメージの名前を選択します。 例えば、mynamespace を選択し、その名前空間にあるイメージ hello_repo を選択します。
  10. **「タグ」**の値を選択します (例: latest)。
  11. 「完了 (Done)」 をクリックします。
  12. 環境変数やランタイム設定のデフォルト値を変更します。 これらのオプションについて詳しくは、ジョブを作成および実行する際のオプションを参照してください。
  13. 「ジョブの作成 (Create job)」ページで、**「作成」**をクリックします。
  14. ジョブを作成し終えたら、その特定のジョブに関するジョブのページが開きます。 ジョブ・ページで、ジョブの実行依頼をクリックして、現在の構成に基づいてジョブを実行依頼します。

これでジョブとジョブの実行が作成されたので、ジョブ・ページからジョブ構成とジョブ実行に関する詳細を表示できます。

ジョブを作成する前にレジストリー・アクセス権限を追加する場合は、コンテナー・レジストリーへのアクセスを参照してください。

CLI を使用した Container Registry 内のイメージを使用するジョブの作成

CLI で IBM Cloud® Container Registry のイメージを使用するジョブ構成を作成するには、**job create**コマンドを使用します。 オプションの完全なリストについては、ibmcloud ce job create コマンドを参照してください。

開始前に

  1. Container Registry にアクセスするには、IAM API キーを作成します。 CLI から IBM Cloud IAM API キーを作成するには、iam api-key-create コマンドを実行します。 たとえば、 cliapikey という名前の API キーを作成し、説明に My CLI API key を指定して、 key_file という名前のファイルに保存するには、次のコマンドを実行します

    ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file
    

    キーをファイルに保存しないことを選択した場合は、作成時に表示される API キーを記録する必要があります。 後で取得することはできません。

  2. API キーを作成した後に、Code Engine にレジストリー・アクセス権限を追加します。 CLI を使用して Container Registry へのアクセスを追加するには、 ibmcloud ce secret create --format registry コマンドを使用してレジストリー・シークレットを作成します。 たとえば、次のコマンドを実行すると、「 myregistry 」という名前の Container Registry インスタンスへのレジストリアクセスが作成されます。 例のコマンドでは --server オプションと --username オプションが指定されていますが、サーバーが --server の場合は us.icr.io オプションのデフォルトは --username で、iamapikey オプションはデフォルトで us.icr.io になることに注意してください。

    ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEY
    

    出力例

    Creating registry secret 'myregistry'...
    OK
    
  3. ジョブ構成を作成して、Container Registry 内の hello_repo イメージを参照します。 例えば、次の job create コマンドでは、myhellojob アクセス情報を使用して us.icr.io/mynamespace/hello_repo を参照する myregistry ジョブを作成します。

    ibmcloud ce job create --name myhellojob --image us.icr.io/mynamespace/hello_repo --registry-secret myregistry
    

    このジョブで使用するイメージの名前の形式は REGISTRY/NAMESPACE/REPOSITORY:TAG で、REGISTRYTAG はオプションです。 REGISTRY を指定しない場合、そのデフォルトは docker.io です。 TAG を指定しない場合、そのデフォルトは latest です。

次のステップ

  • ジョブを作成した後、そのジョブを実行するためにジョブをサブミットします。 ジョブの実行を参照してください。 ジョブは複数回実行できます。

  • ジョブの実行後に、ジョブおよびジョブ実行の詳細を表示するには、アクセス・ジョブの詳細を参照してください。

  • ジョブが作成されたので、ジョブをイベント・ドリブンにすることを検討してください。 イベント・サブスクリプションを使用すると、定期的なスケジュールによってジョブをトリガーしたり、ファイルのアップロードなどのイベントに反応するようにジョブを設定したりすることができます。

  • ジョブの作成方法や以前の更新方法に関係なく、以下の任意の方法でジョブの更新および参照されるコードの更新を行うことができます。

    • Open Container Initiative(OCI)規格に準拠したコンテナイメージをお持ちの場合は、ジョブの作成(または更新)時に、コンテナレジストリの場所を指すイメージへの参照のみを指定すれば十分です。 パブリックレジストリ または プライベートレジストリ 内のイメージを使用してジョブを作成(または更新)し、ジョブの実行中にその参照されたイメージにアクセスすることができます。

      job create コマンドを使用してジョブを作成し、 --build-source オプションを指定してローカル・ソースまたはリポジトリー・ソースからコンテナー・イメージをビルドし、別のコンテナー・イメージを指すようにジョブを変更する場合は、まず、ジョブからビルドの関連付けを削除する必要があります。 例えば、 ibmcloud ce job update -n JOB_NAME --build-clear を実行します。 ジョブからビルドの関連付けを削除した後、別のイメージを参照するようにジョブを更新できます。

    • Git リポジトリーにあるソース・コードから開始する場合は、ソースからイメージをビルドし、単一操作を使用してジョブを作成 (または更新) する処理を Code Engine に任せることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、リポジトリー・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成 (または更新) してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

    • ローカル・ワークステーションにあるソース・コードから開始する場合は、単一 CLI コマンドを使用して、ソースからのイメージのビルドとジョブの作成を Code Engine に処理させることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、CLI を使用したローカル・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成 (または更新) してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

    例えば、ジョブのソースの開発を進化させながら、ローカル・ソースのビルドを Code Engine に処理させることができます。 その後、イメージが成熟すると、目的の特定のイメージを参照するようにジョブを更新できます。 必要に応じて、このプロセスを繰り返すことができます。

    更新されたジョブを実行すると、イメージにタグが指定されていない限り、参照されたコンテナー・イメージの最新バージョンがジョブ実行に使用されます。 イメージにタグが指定されている場合、タグ付けされたイメージがジョブ実行に使用されます。

コード・サンプルがさらに必要ですか? 「 IBM Cloud Code Engine 」のサンプルについては、 GitHub リポジトリをご覧ください。