プライベート・レジストリー内のイメージからのアプリ・ワークロードのデプロイ
プライベート・レジストリー (プライベート Docker Hub など) にあるイメージを使用するアプリを Code Engine を使ってデプロイします。 アプリは、コンソールまたは CLI で作成できます。
開始前に
- プライベート・レジストリーからイメージをプルするには、まずプライベート・レジストリーを作成する必要があります。 例えば、 Docker ハブのプライベートレジストリを作成するには、 Docker ハブのドキュメントを参照してください。
- プライベートレジストリを作成したら、 そこにイメージをプッシュする。
- また、アクセス・トークンもセットアップできます。 アクセス・トークンを使用すると、パスワードを変更することなく、より簡単に Docker Hub アカウントへのアクセス権限を付与したり、取り消したりすることができます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。
コンソールを使用してプライベート・レジストリー内のイメージを参照するアプリをデプロイする
プライベート・レジストリーにあるイメージを使用するアプリケーションを、Code Engine コンソールを使ってデプロイします。
プライベート・レジストリーにあるイメージを参照する Code Engine アプリケーションを扱うためには、その前にまず、レジストリーへのアクセス権限を追加し、イメージをプルしてからデプロイする必要があります。
- Code Engine コンソールを開きます。
- 「始めましょう」 を選択します。
- **「アプリケーション」**を選択します。
- アプリケーションの名前 (
helloappなど) を入力します。 プロジェクト内で固有のアプリケーション名を使用してください。 - 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 アプリをデプロイするには、選択したプロジェクトがなければなりません。
- **「コンテナー・イメージ」を選択し、「イメージの構成」**をクリックします。
docker.io「レジストリー・サーバー」**に ** と入力します。- レジストリの秘密] では、[ レジストリの秘密を作成] を選択します。
- レジストリ秘密の作成ページから、レジストリソースを選択します。 例えば、Docker ハブなどです。
- ユーザー名を入力します。 Docker Hub の場合は、ご使用の Docker ID です。
- パスワードを入力します。 Docker Hub の場合は、ご使用の Docker Hub パスワードかアクセス・トークンを使用できます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。
- 作成」をクリックして、 Code Engine のレジストリ秘密を追加する。
- イメージの設定]ページで、追加されたレジストリシークレットが一覧表示されます。 画像のレジストリシークレットを選択します。
- 名前空間と、Code Engine アプリが参照する Docker Hub 内のイメージの名前を選択します。 例えば、
mynamespaceを選択し、その名前空間にあるイメージhello_repoを選択します。 - **「タグ」**の値を選択します (例:
latest)。 - 「完了 (Done)」 をクリックします。 これでアプリから参照するレジストリー内のイメージが選択されました。
- アプリのランタイム設定または環境変数に変更を加えます。 これらのオプションについて詳しくは、アプリのエンドポイント可視性のオプション および アプリをデプロイするためのオプションを参照してください。
- 「アプリケーションの作成」ページで**「作成」**をクリックします。
- アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリケーションをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。
アプリケーションのデプロイが完了したので、アプリケーション・リビジョンと実行中のインスタンスに関する情報、および構成の詳細を表示できます。
アプリを作成する前にレジストリー・アクセス権限を追加する場合は、プライベート・コンテナー・レジストリーへのアクセス権限の追加を参照してください。
アプリとプライベート・レジストリーにあるイメージを CLI でデプロイする
コンテナー・レジストリー内のイメージを使用するアプリケーションを、CLI の ibmcloud ce app create コマンドを使ってデプロイします。
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成して使用できるようにします。
プライベート・レジストリーにあるイメージを参照する Code Engine アプリケーションを扱うためには、その前にまず、レジストリーへのアクセス権限を追加し、イメージをプルしてからデプロイする必要があります。
-
プライベート・レジストリーからイメージをプルするには、まずプライベート・レジストリーを作成する必要があります。 例えば、 Docker ハブのプライベートレジストリを作成するには、 Docker ハブのドキュメントを参照してください。 プライベートレジストリを作成したら、 そこにイメージをプッシュする。 また、アクセス・トークンもセットアップできます。 アクセス・トークンを使用すると、パスワードを変更することなく、より簡単に Docker Hub アカウントへのアクセス権限を付与したり、取り消したりすることができます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。
-
イメージをプルするためのプライベート・レジストリーへのアクセス権限を追加します。 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 -
アプリを作成し、プライベート 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です。 -
アプリがデプロイされたら、アプリにアクセスできます。 アプリの 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を確認してください。