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