IBM Cloud Container Registry でのイメージからのアプリ・ワークロードのデプロイ

Code Engine にあるイメージを使用するアプリを IBM Cloud® Container Registry を使ってデプロイします。 アプリは、コンソールまたは CLI で作成できます。

開始前に

プロジェクトのすべてのユーザーが、手動でレジストリシークレットを作成することなく、 Container Registry に画像を保存・アクセスできるようにプロジェクトを設定したいとお考えですか? 十分な権限があれば、このデフォルトのレジストリー・アクセス権限をロケーション (地域) ごとに構成できます。 これらのアクションを実行するための十分な権限がない場合は、このページを使用して、必要な権限を理解することができます。 プロジェクト全体の設定の構成 を参照してください。

Container Registry にあるイメージを参照するアプリをコンソールでデプロイする

Code Engine コンソールを使用して、Container Registry 内のイメージを使用するアプリケーションをデプロイします。

Code Engine は、ユーザーのアカウントの Container Registry の名前空間からイメージを自動的にプルできます。 別の Container Registry アカウントまたはプライベート Docker Hub アカウントからイメージをプルするには、プライベート・レジストリー内のイメージからのアプリケーション・ワークロードのデプロイを参照してください。

  1. Code Engine コンソールを開きます。
  2. 作成を開始 」を選択します。
  3. 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 アプリをデプロイするには、選択したプロジェクトがなければなりません。
  4. **「アプリケーション」**を選択します。
  5. アプリケーションの名前 (helloapp など) を入力します。 プロジェクト内で固有のアプリケーション名を使用してください。
  6. 既存のコンテナイメージを使用する 」を選択し、「 イメージの設定 」をクリックします。
  7. IBM Registry Dallas など、コンテナレジストリの場所を選択してください。
  8. 「レジストリー・シークレット」 として Code Engine managed secret を選択します。 この例では、 アカウント内の Container Registry 名前空間にある画像を使用しているため、 Code Engine がレジストリ・シークレットを自動的に作成・管理してくれます。
  9. 既存の名前空間と、Code Engine アプリが参照するレジストリー内のイメージの名前を選択します。 例えば、mynamespace を選択し、その名前空間にあるイメージ hello_repo を選択します。
  10. **「タグ」**の値を選択します (例: latest)。
  11. 「完了 (Done)」 をクリックします。
  12. アプリのランタイム設定または環境変数に変更を加えます。 これらのオプションについて詳しくは、アプリのエンドポイント可視性のオプション および アプリをデプロイするためのオプションを参照してください。
  13. **「作成」**をクリックして、アプリケーションを作成します。
  14. アプリケーションの状況が**「準備完了 (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 コマンドを参照してください。

開始前に

  1. 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 キーを記録する必要があります。 後で取得することはできません。

  2. 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
    
  3. アプリを作成し、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 です。REGISTRYTAG はオプションです。 REGISTRY を指定しない場合、そのデフォルトは docker.io です。 TAG を指定しない場合、そのデフォルトは latest です。

  4. アプリがデプロイされたら、アプリにアクセスできます。 アプリの URL を入手するには、ibmcloud ce app get --name myhelloapp --output url を実行します。 myhelloappアプリを curl すると、Hello Worldが返されます。

    curl https://myhelloapp.abcdabcdhye.us-south.codeengine.appdomain.cloud
    

次のステップ

アプリがデプロイされると、アプリの作成方法や以前の更新方法に関係なく、以下の任意の方法でデプロイされたアプリの更新および参照されるコードの更新を行うことができます。

  • 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 リポジトリをご覧ください。