IBM Cloud Container Registry でのイメージからのアプリ・ワークロードのデプロイ
Code Engine にあるイメージを使用するアプリを IBM Cloud® Container Registry を使ってデプロイします。 アプリは、コンソールまたは CLI で作成できます。
開始前に
-
IBM Cloud® Container Registry にイメージが置かれていることが必要です。 詳しくは、Container Registry の紹介を参照してください。 あるいは、リポジトリー・ソースまたは ローカル・ソースからイメージをビルドすることができます。
-
レジストリーにアクセスできることを確認します。 コンテナー・レジストリーに対する権限の設定を参照してください。
プロジェクトのすべてのユーザーが、手動でレジストリシークレットを作成することなく、 Container Registry に画像を保存・アクセスできるようにプロジェクトを設定したいとお考えですか? 十分な権限があれば、このデフォルトのレジストリー・アクセス権限をロケーション (地域) ごとに構成できます。 これらのアクションを実行するための十分な権限がない場合は、このページを使用して、必要な権限を理解することができます。 プロジェクト全体の設定の構成 を参照してください。
Container Registry にあるイメージを参照するアプリをコンソールでデプロイする
Code Engine コンソールを使用して、Container Registry 内のイメージを使用するアプリケーションをデプロイします。
Code Engine は、ユーザーのアカウントの Container Registry の名前空間からイメージを自動的にプルできます。 別の Container Registry アカウントまたはプライベート Docker Hub アカウントからイメージをプルするには、プライベート・レジストリー内のイメージからのアプリケーション・ワークロードのデプロイを参照してください。
- Code Engine コンソールを開きます。
- 「 作成を開始 」を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 アプリをデプロイするには、選択したプロジェクトがなければなりません。
- **「アプリケーション」**を選択します。
- アプリケーションの名前 (
helloappなど) を入力します。 プロジェクト内で固有のアプリケーション名を使用してください。 - 「 既存のコンテナイメージを使用する 」を選択し、「 イメージの設定 」をクリックします。
IBM Registry Dallasなど、コンテナレジストリの場所を選択してください。- 「レジストリー・シークレット」 として
Code Engine managed secretを選択します。 この例では、 アカウント内の Container Registry 名前空間にある画像を使用しているため、 Code Engine がレジストリ・シークレットを自動的に作成・管理してくれます。 - 既存の名前空間と、Code Engine アプリが参照するレジストリー内のイメージの名前を選択します。 例えば、
mynamespaceを選択し、その名前空間にあるイメージhello_repoを選択します。 - **「タグ」**の値を選択します (例:
latest)。 - 「完了 (Done)」 をクリックします。
- アプリのランタイム設定または環境変数に変更を加えます。 これらのオプションについて詳しくは、アプリのエンドポイント可視性のオプション および アプリをデプロイするためのオプションを参照してください。
- **「作成」**をクリックして、アプリケーションを作成します。
- アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリケーションをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。
アプリケーションのデプロイが完了したので、アプリケーション・リビジョンと実行中のインスタンスに関する情報、および構成の詳細を表示できます。
自分のアカウントにない Container Registry インスタンスへのレジストリー・アクセスを追加する場合は、Container Registry へのアクセスの追加を参照してください。
アプリと Container Registry 内のイメージを CLI でデプロイする
CLI で**ibmcloud ce app create**コマンドを使用して、IBM Cloud® Container Registry 内のイメージを使用するアプリケーションをデプロイします。 オプションの全リストについては、ibmcloud ce app 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イメージを参照します。 例えば、ibmcloud ce app createコマンドを使用して、myhelloappアクセス情報を用いることにより、us.icr.io/mynamespace/hello_repoアプリを作成し、myregistryを参照します。ibmcloud ce app create --name myhelloapp --image us.icr.io/mynamespace/hello_repo --registry-secret myregistryこのアプリケーションのイメージの名前の形式は
REGISTRY/NAMESPACE/REPOSITORY:TAGです。REGISTRYとTAGはオプションです。REGISTRYを指定しない場合、そのデフォルトはdocker.ioです。TAGを指定しない場合、そのデフォルトはlatestです。 -
アプリがデプロイされたら、アプリにアクセスできます。 アプリの URL を入手するには、
ibmcloud ce app get --name myhelloapp --output urlを実行します。myhelloappアプリを curl すると、Hello Worldが返されます。curl https://myhelloapp.abcdabcdhye.us-south.codeengine.appdomain.cloud
次のステップ
-
アプリがデプロイされた後、URL を使用してアプリへのアクセスを実行します。
-
カスタム・ドメイン・マッピング を作成して、それをアプリに割り当てることができます。 カスタム・ドメイン・ネームを使用して複数のリージョンにアプリをデプロイする方法について詳しくは、 高可用性アプリケーションの構成 を参照してください。
-
アプリがデプロイされたところで、アプリをイベント駆動型にすることを検討してみてください。 イベント・サブスクリプションを使用することで、 定期的なスケジュール によってアプリをトリガーしたり、 ファイル・アップロード や Kafka メッセージ などのイベントに対応するようにアプリを設定したりできます。
アプリがデプロイされると、アプリの作成方法や以前の更新方法に関係なく、以下の任意の方法でデプロイされたアプリの更新および参照されるコードの更新を行うことができます。
-
Open Container Initiative(OCI)規格に準拠したコンテナイメージをお持ちの場合は、アプリをデプロイする際に、コンテナレジストリの場所を指すイメージへの参照のみを指定すれば十分です。 パブリック・レジストリー または プライベート・レジストリー 内のイメージを使用してアプリをデプロイできます。
app createコマンドを使用してアプリを作成し、--build-sourceオプションを指定してローカルまたはリポジトリー・ソースからコンテナー・イメージをビルドし、別のコンテナー・イメージを指すようにアプリを変更する場合は、まずアプリからビルドの関連付けを削除する必要があります。 例えば、ibmcloud ce application update -n APP_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 リポジトリをご覧ください。