ローカル・ソースからのアプリケーション・コードのデプロイ

単純なhello worldアプリをデプロイして、Code Engine がどのように機能するかを確認しましょう。 ステップに従って、プロジェクトを作成し、コードを準備し、アプリをデプロイします。

このチュートリアルを開始する前に、Cloud Foundry と Code Engine の用語を確認してください。

目標

  • Code Engineと Cloud Foundry の類似点について説明します。
  • Code Engineでアプリケーションをデプロイする一般的なプロセスについて説明します。
  • Code Engineを使用して、ローカル・システム上のコードからアプリケーションをデプロイします。

前提条件

Code Engineを開始する前に、アカウントをセットアップして CLI をインストールする必要があります。

  • すべてのCode Engineユーザーは、従量課金 (PAYG) アカウントを持っている必要があります。

  • コンソールを介してCode Engineを使用できますが、本書の例では、コマンド行に焦点を当てています。 そのため、Code Engine CLI をインストールしなければなりません。

    ibmcloud plugin install code-engine
    

    詳しくは、 Code Engine CLI のセットアップを参照してください。 CLI について詳しくは、Code EngineCLI リファレンスを参照してください。

すべてのCode Engineユーザーは、従量課金 (PAYG) アカウントを持っている必要があります。 チュートリアルでは、費用が発生する場合があります。 コスト見積もりツールを使用して、使用量の見積もりに基づいてコスト見積もりを生成してください。 詳しくは、 Code Engine 価格設定を参照してください。

IBM Cloud にログインします。

IBM Cloud アカウントにログインしてリソース・グループをターゲットにするには、以下の手順を実行します。

  1. IBM Cloud CLI にログインします。

    ibmcloud login
    
  2. 以下のコマンドを実行して、リソース・グループをターゲットに設定します。 リソース・グループのリストを取得するには、**ibmcloud resource groups**を実行します。

    ibmcloud target -g <resource_group>
    

    出力例

    Targeted resource group default
    

プロジェクトの作成

Code Engine「プロジェクト」は、関連するワークロードを開発者にとって意味のある論理コレクションにグループ化するという点で、Cloud Foundry の「スペース」に似ています。 企業の組織構造、ワークロード間の依存関係、開発環境とテスト環境と実稼働環境の比較など、意味のある基準に基づいて、ワークロードをさまざまなプロジェクトにグループ化できます。 これにより、これらのプロジェクトへのアクセスの構成 Cloud Foundry へのアクセス権限の構成と同様にorgs行うことができます。 単一プロジェクト内のワークロードはプライベート・ネットワークを共有し、プロジェクトのセキュリティー境界内で分離されることに留意してください。 プロジェクト内のすべてのワークロードは、クラスター外部のワークロードによって認識されることを気にすることなく、相互に自由に対話できます。 異なるプロジェクトのワークロードが相互に通信するようにしたい場合は、通信にインターネットまたは内部 IBM プライベート・ネットワークのいずれかを使用しなければなりません。 詳しくは、Code Engineアプリケーションの可視性のオプションを参照してください。

sampleという名前のプロジェクトをCode Engineに作成します。

ibmcloud ce project create --name sample

出力例

Creating project 'sample'...
ID for project 'sample' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample' to be active...
Now selecting project 'sample'.
OK

プロジェクトがコンテキスト用にも選択されていることに注意してください。したがって、後続のすべてのアプリケーション関連コマンドは、この新規 sample プロジェクトのスコープ内にあります。

ディレクトリーおよびソース・コードの作成

  1. myappという名前のディレクトリーをローカル・ワークステーション上に作成し、そのディレクトリーにナビゲートします。 このディレクトリーに、イメージのビルドとアプリの実行に必要なすべてのファイルを保存します。

    mkdir myapp && cd myapp
    
  2. server.jsというファイルを作成し、そのファイルに以下のソース・コードをコピーします。

    const http = require('http');
    
    
    http.createServer(function (request, response) {
      response.writeHead(200, {'Content-Type': 'text/plain'});
      response.end( "Hello world\n" );
    }).listen(8080);
    

    この例では、Node.js を使用します。任意のサポート対象ランタイムからコードを置き換えることができます。

アプリケーションのデプロイ

**application create**コマンドを使用して、コードを Code Engine にプッシュします。 アプリケーションの名前とソース・コードの場所を指定する必要があります。 以下の例では、buildpackストラテジーを使用し、現行ディレクトリー (.) 内のソース・コードの場所を指定するmyappというアプリケーションを作成します。

ibmcloud ce app create --name myapp --build-source . --strategy buildpacks

出力例

Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK

https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud

完了です。 これで、インターネット向けアプリケーションが作成されました。 アプリケーション自体の中にあるコードは、Cloud Foundry アプリケーションで使用されるものと同じですが、少し異なるのはCode Engineコマンドのみです。

前の**app create**コマンドについて詳しく見てみましょう。 app create コマンドの出力には、アプリが作成されてデプロイされる前のビルド実行の進行状況に関する情報が示されていることに注意してください。

  1. Code Engine は、(イメージから直接プルするのではなく) ソース・コードからアプリケーションを作成する要求を受け取ります。
  2. Code Engine は、選択されたプロジェクトに関連付けられている IAM サービス ID と API キーを検査します。 このサービス ID は、 IBM Cloud Container Registryへの読み取りおよび書き込みを許可されている必要があります。 サービス ID が存在しない場合は、Code Engine によって作成されます。 このサービス ID は、同じプロジェクトから実行される後続の Code Engine ビルド依頼に使用されることに注意してください。
  3. この例では、ローカル・ソース (--build-source .) からコードをビルドします。 ソース・コードはアーカイブ・ファイルに圧縮され、アカウントの IBM Cloud Container Registry インスタンス内の管理対象名前空間にアップロードされます。 ローカル・ビルドのターゲットにできるのは IBM Cloud Container Registry のみであることに注意してください。 IBM Container Registry について詳しくは (割り当て量制限およびアクセス権についての情報を含む)、IBM Cloud Container Registry の概要を参照してください。
  4. Code Engine は、ソース・コードをイメージにビルドします。 ソース・イメージは、ソース・アーカイブ・ファイルと同じ名前空間に作成されます。
  5. ビルドが完了すると、アプリケーションがデプロイされます。 提供された URL からアプリケーションにアクセスできます。

Code Engineを使用すると、自動スケーリングや更新の Blue-Green ロールアウトなど、Cloud Foundry と同じ機能の多くを自動的に利用できますが、アプリケーションがアクティブでない場合でも課金されないので、ゼロへのスケールダウンなどの新しい機能の利点も享受できます。

ソース・コードを作成するためのオプションについて詳しく説明します。 application createおよびjob createコマンドを参照してください。

アプリケーションとジョブについて詳しく知りたいですか? Code Engine でのアプリケーションの操作およびジョブおよびジョブ実行の処理を参照してください。

クリーンアップ

このチュートリアルを完了すると、以下のコマンドを使用して作成したリソースをクリーンアップできます。

アプリケーションの削除

ibmcloud ce app delete --name myapp

アプリを削除すると、関連付けられたビルド・ファイルも削除されます。

最後に、ビルドが IBM Cloud Container Registry から作成したイメージを削除します。

  1. IBM Cloud コンソールで レジストリー にナビゲートします。
  2. アプリケーション名を検索して、アプリケーションに関連付けられているアーカイブとイメージを見つけます。
  3. アーカイブとイメージを選択して削除します。

次のステップ

  1. マイグレーションを開始するだけですか? 入門をチェックアウトします。
  2. Cloud Foundry の用語を Code Engine と比較してください。
  3. ローカル・ソース (現行ページ) からのアプリケーション・コードのデプロイ
  4. アプリケーションはサービス・バインディングを使用しますか? サービス・バインディングのマイグレーションをチェックアウトします。
  5. スケーリングとトラフィック管理について説明します。
  6. Cloud Foundry コマンドと同等の Code Engine を見つけます。
  7. まだご不明な点がありますか? Cloud Foundry アプリケーションの Code Engine FAQ へのマイグレーションを試してください。

その他の情報