Code Engine での Cloud Foundry アプリケーションのデプロイ: 入門
Cloud Foundry ユーザーへの IBM Cloud® Code Engine のご紹介。
Code Engine は、コンテナー化されたワークロードを実行する、完全に管理されたサーバーレス・プラットフォームです。Code Engine は、ソース・コードからコンテナー・イメージを作成することもできます。 Code Engine エクスペリエンスは、ホストに必要なインフラストラクチャーではなく、コードの作成に集中できるように設計されています。
Code Engineは、以下の主要な目標を考慮して設計されています。
- コードにフォーカスします。Code Engine は、簡素化された開発者エクスペリエンスを提供します。 基礎となるインフラストラクチャーについて学習したり管理したりする必要はありません。
- 最新のランタイム特性のサポート (自動スケーリング、アイドル時のゼロへのスケーリング、マネージド・サービスおよびセキュリティーとのシームレスな統合など)。
- 12 要素アプリ、イベント・ドリブン機能、実行から完了までのバッチ・ジョブなど、すべてのクラウド・ネイティブ・アプリケーションをサポートします。 コンテナー化できる場合は、Code Engineで実行できます。
- 実際に使用するリソースのみの支払い。
Cloud Foundry の背景を使用している場合、これらの機能の多くはよく知られています。 ただし、Code Engineにはいくつかの新機能も含まれています。これらの機能により、Cloud Foundry が提供する機能を超えることができます。これには、ゼロにスケーリングできて、課金されないアプリケーションも含まれます。 そのため、ユーザー・エクスペリエンスの構文上の違いを過ぎると、ユーザーとアプリケーションは Code Engineでしっくりくるようになります。
単純な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 リファレンスを参照してください。
IBM Cloud にログインします。
IBM Cloud アカウントにログインしてリソース・グループをターゲットにするには、以下の手順を実行します。
-
IBM Cloud CLI にログインします。
ibmcloud login
-
以下のコマンドを実行して、リソース・グループをターゲットに設定します。 リソース・グループのリストを取得するには、**
ibmcloud resource groups
**を実行します。ibmcloud target -g <resource_group>
出力例
Targeted resource group default
プロジェクトの作成
Code Engine「プロジェクト」は、関連ワークロードを開発者にとって意味のある論理コレクションにグループ化するという点で、Cloud Foundry の「スペース」に似ています。 企業の組織構造、ワークロード間の依存関係、開発環境とテスト環境と実稼働環境の比較など、意味のある基準に基づいて、ワークロードをさまざまなプロジェクトにグループ化できます。 単一プロジェクト内のワークロードはプライベート・ネットワークを共有し、プロジェクトのセキュリティー境界内で分離されることに留意してください。 プロジェクト内のすべてのワークロードは、クラスター外部のワークロードによって認識されることを気にすることなく、相互に自由に対話できます。 異なるプロジェクトのワークロードが相互に通信するようにしたい場合は、通信にインターネットまたは内部 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
プロジェクトのスコープ内にあります。
ディレクトリーおよびソース・コードの作成
-
myapp
という名前のディレクトリーをローカル・ワークステーション上に作成し、そのディレクトリーにナビゲートします。 このディレクトリーに、イメージのビルドとアプリの実行に必要なすべてのファイルを保存します。mkdir myapp && cd myapp
-
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
コマンドの出力には、アプリが作成およびデプロイされる前のビルド実行の進行状況に関する情報が示されていることに注意してください。
- Code Engine は、(イメージから直接プルするのではなく) ソース・コードからアプリケーションを作成する要求を受け取ります。
- Code Engine は、選択されたプロジェクトに関連付けられている IAM サービス ID と API キーを検査します。 このサービス ID は、 IBM Cloud Container Registryへの読み取りおよび書き込みを許可されている必要があります。 サービス ID が存在しない場合は、Code Engine によって作成されます。 このサービス ID は、同じプロジェクトから実行される後続の Code Engine ビルド依頼に使用されることに注意してください。
- この例では、ローカル・ソース (
--build-source .
) からコードをビルドします。 ソース・コードがアーカイブ・ファイルに圧縮され、アカウント内の IBM Cloud Container Registry インスタンス内の管理対象名前空間にアップロードされます。 ローカル・ビルドのターゲットにできるのは IBM Cloud Container Registry のみであることに注意してください。 IBM Container Registry について詳しくは (割り当て量制限およびアクセス権についての情報を含む)、IBM Cloud Container Registry の概要を参照してください。 - Code Engine は、ソース・コードをイメージにビルドします。 ソース・イメージは、ソース・アーカイブ・ファイルと同じ名前空間に作成されます。
- ビルドが完了すると、アプリケーションがデプロイされます。 提供された URL からアプリケーションにアクセスできます。
Code Engineを使用すると、自動スケーリングや更新の Blue-Green ロールアウトなど、Cloud Foundry と同じ機能の多くを自動的に利用できますが、アプリケーションがアクティブでない場合でも課金されないので、ゼロへのスケールダウンなどの新しい機能の利点も享受できます。
ソース・コードを作成するためのオプションについて詳しく説明します。 application create
およびjob create
コマンドを参照してください。
アプリケーションとジョブについて詳しく知りたいですか? Code Engine でのアプリケーションの操作およびジョブおよびジョブ実行の処理を参照してください。
クリーンアップ
このチュートリアルを完了すると、以下のコマンドを使用して作成したリソースをクリーンアップできます。
アプリケーションの削除
ibmcloud ce app delete --name myapp
アプリを削除すると、関連付けられたビルド・ファイルも削除されます。
最後に、ビルドが IBM Cloud Container Registry から作成したイメージを削除します。
- IBM Cloud コンソールで レジストリー にナビゲートします。
- アプリケーション名を検索して、アプリケーションに関連付けられているアーカイブとイメージを見つけます。
- アーカイブとイメージを選択して削除します。
次のステップ
- マイグレーションを開始するだけですか? 入門をチェックアウトします。
- Cloud Foundry の用語を Code Engine と比較してください。
- Code Engine での Cloud Foundry アプリケーションのデプロイ: 入門 (現行ページ)
- アプリケーションはサービス・バインディングを使用しますか? サービス・バインディングのマイグレーションをチェックアウトします。
- スケーリングとトラフィック管理について説明します。
- Cloud Foundry コマンドと同等の Code Engine を見つけます。
- コンソールから カスタム・ドメイン・マッピング を追加します。
- まだご不明な点がありますか? Cloud Foundry アプリケーションの Code Engine FAQ へのマイグレーションを試してください。
その他の情報
- Code Engine 料金について説明します。
- 他の Code Engine チュートリアルを試してください。
- 他の Code Engine のトピックを探索します。