IBM Cloud Docs
ジョブおよびジョブ実行の操作

ジョブおよびジョブ実行の操作

IBM Cloud® Code Engine でジョブを実行する方法について説明します。 ジョブは、あなたの実行可能コードの1つ以上のインスタンスを並列に実行します。 HTTP 要求を処理するアプリケーションとは異なり、ジョブは一度実行したら終了するように設計されています。 ジョブを作成するときには、ジョブの実行時に毎回使用するワークロードの構成情報を指定できます。

開始前に

  • Code Engine 内のバッチジョブワークロードの概念を理解する。 バッチ・ジョブの詳細については、 バッチ・ジョブのワークロード を参照してください。
  • コードを Code Engine ジョブ・コンポーネントとして実行する方法を計画して選択します。 作成する Code Engine 作業負荷のタイプの詳細については、 Code Engineの計画 を参照してください。
  • ジョブやジョブランの操作には2つの方法があります:

Code Engine では、カスタム・リソース定義 (CRD) 方式が提供されています。 詳細は、 バッチCRDメソッド を参照。

コードを Code Engine ジョブ・コンポーネントとして実行するにはどうすればよいですか?

コードがローカルファイルのソースとして存在しているか、 Git のリポジトリに存在しているか、あるいはコードがパブリックまたはプライベートレジストリに存在するコンテナイメージであるかに関わらず、 Code Engine は、コードをジョブとして実行するための合理化された方法を提供します。

  • Open Container Initiative(OCI)標準に準拠したコンテナイメージをお持ちの場合は、ジョブを作成する際に、コンテナレジストリの場所を指すイメージへの参照のみを提供する必要があります。 公開レジストリ または プライベートレジストリ のイメージからジョブを作成し、実行したジョブから参照イメージにアクセスすることができます。

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

  • ローカルのワークステーション上のソースコードから始める場合は、ソースの場所を指定することができます。 Code Engine は、ソースからイメージを構築し、CLI コマンド1つでジョブを作成します。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、CLI を使用したローカル・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

ジョブを作成および実行すると、ジョブの作成方法や以前の更新方法に関係なく、先述の任意の方法でジョブの更新を行うこともできます。

仕事に取り組む際には、以下の重要な点を念頭に置いてください。

  • アプリケーションのイメージとは異なり、ジョブのイメージには HTTP Server が含まれません。
  • 画像内の実行可能プログラムは、成功とみなされるにはゼロのコードで終了しなければなりません。
  • イメージは、パブリックまたはプライベートのどちらのイメージ・レジストリーからでもダウンロードできます。 詳しくは、コンテナー・レジストリーへのアクセスを参照してください。

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

HTTP 処理に関する考慮事項

ジョブ (またはアプリ) を操作する場合は、Code Engineでの基本的な HTTP 処理を認識しておくと役立ちます。 HTTP 処理に関する考慮事項を参照

ジョブを作成および実行する際のオプション

ジョブを作成または実行するときに指定できる、オプションについて説明します。 なお、コンソールと CLI でオプションが異なる場合があります。

ジョブのメモリーと CPU

ジョブを実行する際には、ジョブが消費できるメモリ量とCPUを指定することができます。 これらの量は、ジョブが計算主体型か、メモリー集中型か、平衡型かに応じて異なります。

デフォルトでは、ジョブに 4 G のメモリーと 1 つの vCPU が割り当てられます。 メモリーと CPU の選択方法について詳しくは、サポートされるメモリーと CPU の組み合わせを参照してください。

コマンドと引数を使用したジョブの作成と実行

ジョブを作成または実行するときに、そのジョブが実行時に使用するコマンドと引数を定義することができます。

CLI またはコンソールを使用して、ジョブにコマンドと引数を追加することができます。

コンソールを使用してコマンドと引数を追加するには、Command フィールドと Arguments フィールドを使用します。

CLI を使用してコマンドと引数を追加するには、--cmd オプションと --args オプションを job create コマンドまたは jobrun submit コマンドに追加します。

コマンドおよび引数の定義方法について詳しくは、Code Engine ワークロードのコマンドおよび引数の定義を参照してください。

環境変数を使用したジョブの作成と実行

実行時にジョブで使用できるキーと値のペアを、環境変数として定義および設定できます。

環境変数は、ジョブの作成時、または既存のジョブをコンソールや CLI から更新するときに定義できます。 構成マップ (またはシークレット) 全体を参照したり、構成マップ (またはシークレット) 内の個々のキーを参照したりする環境変数を、ジョブ用に作成できます。

環境変数を定義する方法について詳しくは、環境変数の扱いを参照してください。

シークレットと構成マップを使用したジョブの作成と実行

Code Engine では、環境変数を使用することで、ジョブでシークレットやコンフィグマップを使用することができます。

シークレットと構成マップは、どちらもキーと値のペアです。 環境変数にマップされると、環境変数の名前がマップの各項目の「キー」に対応し、環境変数の値がそのキーの「値」になるように NAME=VALUE の関係が設定されます。

ジョブは環境変数を使用して、構成マップ (またはシークレット) 全体を参照したり、構成マップ (またはシークレット) 内の個々のキーを参照したりすることができます。

詳しくは、環境変数を使用したシークレットの参照および環境変数を使用した構成マップの参照を参照してください。

ジョブを無期限に実行したい場合はどうすればよいですか?

通常、ジョブは 1 回実行し、最大実行時間で終了するように設計されています。

ただし、サード・パーティー・データ・ストアを常にポーリングする必要があるとします。 アプリケーションの作成を選択できますが、アプリケーション・ポートは、 HTTP 要求を処理するために開いたままにしておく必要があります。 代わりに、 HTTP 要求を処理したくない場合は、最大実行時間なしで実行され、タイムアウトにならないジョブを作成することを選択できます。

Code Engineで、ジョブの mode を選択できます。 最大実行時間が適用されるジョブの場合は、ジョブに task モードを使用します。 失敗したインスタンスは、ジョブの再試行限度ごとに再始動されます。 このモードは、ジョブのデフォルトの動作です。

無期限に実行でき、タイムアウトにならないジョブを作成する場合は、ジョブに daemon モードを使用します。 失敗したインスタンスは自動的に無期限に再始動されます。

Code Engineでは、使用したリソースに対してのみ支払います。 ジョブが daemon モードで実行される場合、ジョブを削除するまでジョブは常に実行されていることに注意してください。

詳しくは、 無期限に実行するジョブの作成と実行 コマンドを参照してください。

ジョブ割り当て量に関する考慮事項

アプリケーション、関数、およびバッチ・ジョブを処理する場合、これらのリソースは Code Engine プロジェクトのコンテキスト内で実行されます。 リソース割り当て量はプロジェクトごとに定義され、制限はアプリケーション、機能、およびバッチ・ジョブに適用されます。

Code Engine の制限について詳しくは、Code Engine の制限と割り当て量を参照してください。

完了したジョブの実行のクリーンアップ

完了したジョブは、1週間後に自動的に削除されます。

次のステップ

Code Engine ジョブを操作する際の主要な概念を理解したので、ジョブを作成して実行する準備はできていますか? 詳細については

ジョブの操作に関する詳細は、こちらをご覧ください