IBM Cloud Container Registry でのイメージからのジョブの作成
IBM Cloud® Container Registry 内のイメージを使用するジョブ構成を作成します。 ジョブはコンソールから、または CLI を使用して作成できます。
開始前に
-
Container Registry にイメージが置かれていることが必要です。 詳しくは、Container Registry の紹介を参照してください。 あるいは、リポジトリー・ソースまたは ローカル・ソースからイメージをビルドすることができます。
-
レジストリーにアクセスできることを確認します。 コンテナー・レジストリーに対する権限の設定を参照してください。
プロジェクトのすべてのユーザーが、手動でレジストリシークレットを作成することなく、 Container Registry に画像を保存・アクセスできるようにプロジェクトを設定したいとお考えですか? 十分な権限があれば、このデフォルトのレジストリー・アクセス権限をロケーション (地域) ごとに構成できます。 これらのアクションを実行するための十分な権限がない場合は、このページを使用して、必要な権限を理解することができます。 プロジェクト全体の設定の構成 を参照してください。
コンソールを使用した Container Registry 内のイメージを参照するジョブの作成
Container Registry コンソールを使用して、Code Engine 内のイメージを使用するジョブ構成を作成します。
Code Engine は、ユーザーのアカウントの Container Registry の名前空間からイメージを自動的にプルできます。 別のContainer Registryアカウントまたはプライベート Docker Hub アカウントからイメージをプルするには、プライベート・レジストリー内のイメージからジョブを作成するを参照してください。
- Code Engine コンソールを開きます。
- 「 作成を開始 」を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 ジョブを作成するには、選択したプロジェクトがなければならないことに注意してください。
- **「ジョブ」**を選択します。
- ジョブの名前を入力します (例:
myjob)。 - 「 既存のコンテナイメージを使用する 」を選択し、「 イメージの設定 」をクリックします。
IBM Registry Dallasなど、コンテナレジストリの場所を選択してください。- 「レジストリー・シークレット」 として
Code Engine managed secretを選択します。 この例では、 アカウント内の Container Registry 名前空間にある画像を使用しているため、 Code Engine がレジストリ・シークレットを自動的に作成・管理してくれます。 - Code Engineジョブが参照するレジストリー内の既存の名前空間とイメージの名前を選択します。 例えば、
mynamespaceを選択し、その名前空間にあるイメージhello_repoを選択します。 - **「タグ」**の値を選択します (例:
latest)。 - 「完了 (Done)」 をクリックします。
- 環境変数やランタイム設定のデフォルト値を変更します。 これらのオプションについて詳しくは、ジョブを作成および実行する際のオプションを参照してください。
- 「ジョブの作成 (Create job)」ページで、**「作成」**をクリックします。
- ジョブを作成し終えたら、その特定のジョブに関するジョブのページが開きます。 ジョブ・ページで、ジョブの実行依頼をクリックして、現在の構成に基づいてジョブを実行依頼します。
これでジョブとジョブの実行が作成されたので、ジョブ・ページからジョブ構成とジョブ実行に関する詳細を表示できます。
ジョブを作成する前にレジストリー・アクセス権限を追加する場合は、コンテナー・レジストリーへのアクセスを参照してください。
CLI を使用した Container Registry 内のイメージを使用するジョブの作成
CLI で IBM Cloud® Container Registry のイメージを使用するジョブ構成を作成するには、**job create**コマンドを使用します。 オプションの完全なリストについては、ibmcloud ce job create コマンドを参照してください。
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成して使用できるようにします。
- Container Registry 内のイメージを参照する Code Engine ジョブを操作するには、その前にまずレジストリーへのアクセス権限を追加して、ジョブの実行時に Code Engine がイメージをプルできるようにする必要があります。 イメージ・レジストリーにアクセスするために必要な許可については、イメージ・レジストリーの権限のセットアップを参照してください。
-
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 キーを記録する必要があります。 後で取得することはできません。
-
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 -
ジョブ構成を作成して、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で、REGISTRYとTAGはオプションです。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 リポジトリをご覧ください。