プライベート・レジストリー内のイメージからのアプリ・ワークロードのデプロイ

プライベート・レジストリー (プライベート Docker Hub など) にあるイメージを使用するアプリを Code Engine を使ってデプロイします。 アプリは、コンソールまたは CLI で作成できます。

開始前に

  • プライベート・レジストリーからイメージをプルするには、まずプライベート・レジストリーを作成する必要があります。 たとえば、 Docker Hubのプライベートレジストリを作成するには、「 Docker Hub」のドキュメントを参照してください。
  • プライベートレジストリを作成したら、 そのレジストリにイメージをプッシュしてください。
  • また、アクセス・トークンもセットアップできます。 アクセス・トークンを使用すると、パスワードを変更することなく、より簡単に Docker Hub アカウントへのアクセス権限を付与したり、取り消したりすることができます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。

コンソールを使用してプライベート・レジストリー内のイメージを参照するアプリをデプロイする

プライベート・レジストリーにあるイメージを使用するアプリケーションを、Code Engine コンソールを使ってデプロイします。

プライベート・レジストリーにあるイメージを参照する Code Engine アプリケーションを扱うためには、その前にまず、レジストリーへのアクセス権限を追加し、イメージをプルしてからデプロイする必要があります。

  1. Code Engine コンソールを開きます。
  2. 「 作成を開始 」を選択します。
  3. 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 アプリをデプロイするには、選択したプロジェクトがなければなりません。
  4. **「アプリケーション」**を選択します。
  5. アプリケーションの名前 (helloapp など) を入力します。 プロジェクト内で固有のアプリケーション名を使用してください。
  6. 「 既存のコンテナイメージを使用する 」を選択し、「 イメージの設定 」をクリックします。
  7. docker.io「レジストリー・サーバー」**に ** と入力します。
  8. 「レジストリシークレット」 については、「 レジストリシークレットを作成 」を選択してください。
  9. 「レジストリシークレットの作成」ページで、レジストリのソースを選択します。 例えば、Docker ハブなどです。
  10. ユーザー名を入力します。 Docker Hub の場合は、ご使用の Docker ID です。
  11. アクセストークンを入力してください。 Docker Hub の場合は、ご使用の Docker Hub パスワードかアクセス・トークンを使用できます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。
  12. 「 作成 」をクリックして、 Code Engine のレジストリシークレットを追加します。
  13. 「イメージの設定」ページには、追加されたレジストリ・シークレットが一覧表示されます。 イメージに対応するレジストリ・シークレットを選択してください。
  14. 名前空間と、Code Engine アプリが参照する Docker Hub 内のイメージの名前を選択します。 例えば、mynamespace を選択し、その名前空間にあるイメージ hello_repo を選択します。
  15. **「タグ」**の値を選択します (例: latest)。
  16. 「完了 (Done)」 をクリックします。 これでアプリから参照するレジストリー内のイメージが選択されました。
  17. アプリのランタイム設定または環境変数に変更を加えます。 これらのオプションについて詳しくは、アプリのエンドポイント可視性のオプション および アプリをデプロイするためのオプションを参照してください。
  18. 「アプリケーションの作成」ページで**「作成」**をクリックします。
  19. アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリケーションをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。

アプリケーションのデプロイが完了したので、アプリケーション・リビジョンと実行中のインスタンスに関する情報、および構成の詳細を表示できます。

アプリを作成する前にレジストリー・アクセス権限を追加する場合は、プライベート・コンテナー・レジストリーへのアクセス権限の追加を参照してください。

アプリとプライベート・レジストリーにあるイメージを CLI でデプロイする

コンテナー・レジストリー内のイメージを使用するアプリケーションを、CLI の ibmcloud ce app create コマンドを使ってデプロイします。

開始前に

プライベート・レジストリーにあるイメージを参照する Code Engine アプリケーションを扱うためには、その前にまず、レジストリーへのアクセス権限を追加し、イメージをプルしてからデプロイする必要があります。

  1. プライベート・レジストリーからイメージをプルするには、まずプライベート・レジストリーを作成する必要があります。 たとえば、 Docker Hubのプライベートレジストリを作成するには、「 Docker Hub」のドキュメントを参照してください。 プライベートレジストリを作成したら、 そのレジストリにイメージをプッシュしてください。 また、アクセス・トークンもセットアップできます。 アクセス・トークンを使用すると、パスワードを変更することなく、より簡単に Docker Hub アカウントへのアクセス権限を付与したり、取り消したりすることができます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。

  2. イメージをプルするためのプライベート・レジストリーへのアクセス権限を追加します。 CLI を使用してプライベート・レジストリーへのアクセス権限を追加するには、 ibmcloud ce secret create --format registry コマンドを使用してレジストリー・シークレットを作成します。 たとえば、次のコマンドを実行すると、 'https://index.docker.io/v1/' にある「 privatedocker 」という名前の Docker Hubレジストリへのアクセス権が作成され、ユーザーのユーザー名とパスワードが使用されます。

    ibmcloud ce secret create --format registry --name privatedocker --server 'https://index.docker.io/v1/' --username <Docker_User_Name> --password <Password>
    

    出力例

    Creating registry secret 'privatedocker'...
    OK
    
  3. アプリを作成し、プライベート Docker Hub レジストリーにあるイメージを参照します。 例えば、myhelloapp アクセス情報を使用することによって、docker.io/privaterepo/helloworld アプリを作成して privatedocker を参照します。

    ibmcloud ce app create --name myhelloapp --image docker.io/privaterepo/helloworld --registry-secret privatedocker
    

    このアプリケーションのイメージの名前の形式は REGISTRY/NAMESPACE/REPOSITORY:TAG です。REGISTRY と TAG はオプションです。 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 リポジトリをご覧ください。