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 repoを確認してください。