IBM Cloud Code Engine入門
IBM Cloud® Code Engineは、Web アプリ、マイクロサービス、イベント・ドリブン機能、バッチ・ジョブなどのコンテナー化されたワークロードを実行する、完全に管理されたサーバーレス・プラットフォームです。Code Engineは、ソース・コードからコンテナー・イメージを作成することもできます。 これらのワークロードはすべて、同じ Kubernetes インフラストラクチャー内でホストされるため、シームレスに連携できます。 Code Engine のエクスペリエンスは、コードのホストに必要なインフラストラクチャーではなく、コードの作成にユーザーが集中できるように設計されています。
まず、Code Engineに対するいくつかの 主要な用語について学習してから、以下のいずれかのオプションを使用して開始します。
Code Engine プロジェクト、アプリケーション、ジョブ、ファンクション、フリートとは何か?
まずは、Code Engine のいくつかの重要な用語について理解してください。
| 用語 | 説明 |
|---|---|
| プロジェクト | プロジェクトとは、アプリケーション、ジョブ、ビルドなどの Code Engine エンティティーをグループにまとめるものです。 プロジェクトを使用することで、リソースを管理してエンティティーへのアクセスを提供できます。 |
| アプリケーション | アプリケーション (アプリ) は、HTTP 要求を処理するコードを実行します。 着信要求のために、アプリケーションには URL があります。 アプリケーションの実行インスタンス数は、着信ワークロードに応じて、自動的にスケール・アップまたはスケール・ダウン (ゼロまで) します。 |
| ビルド | ビルド (イメージ・ビルド) は、ソース・コードからコンテナー・イメージを作成するために使用できるメカニズムです。Code Engineは、Dockerfile または Cloud Native Buildpacks からのビルドをサポートしています。 |
| 関数 | 関数は、 HTTP リクエストに応答してタスクを実行するステートレスなコード・スニペットである。 |
| ジョブ | ジョブは、実行可能コードの1つ以上のインスタンスを並行して実行します。 着信要求を処理する HTTP Server が含まれているアプリケーションとは異なり、ジョブは一度実行したら終了するように設計されています。 |
| フリート | フリートはサーバーレスフリートとも呼ばれ、ユーザーコードの1つまたは複数のインスタンスを実行し、一連の指定されたタスクを完了させる。 フリートは、コンピュータを多用する大規模な作業負荷に対応するように設計されている。 ジョブとは異なり、フリートはシングルテナントであり、動的なタスクキューイングを実装し、マシンプロファイル設定を完全に制御できる。 詳しくは、 求人とフリートの違いを ご覧ください |
用語について詳しくは、Code Engine の用語を参照してください。
何を選んだらいいかわからない? Code Engine の計画を参照してください。
アプリ、仕事、機能、フリートの比較は?
| 特性 | アプリケーション | ジョブ | 関数 | フリート |
|---|---|---|---|---|
| 実行時間(期間) | ロングラン(1リクエスト10分) | ロングラン(最大24時間) | 短距離走(2分以内) | ロングラン(数分から数週間) |
| 起動待ち時間 | 中 | 開始予定 | 低 | 低 |
| 終了 | 連続運転 | ラン・トゥ・コンプリート | ラン・トゥ・コンプリート | ラン・トゥ・コンプリート |
| 呼び出し | ご要望に応じて、または常時稼動 | スケジュール済み | リクエストに応じて、インスタント | スケジュール済み |
| プログラミング・モデル | コンテナベースのビルドと実行 | コンテナベースのビルドと実行 | 言語固有のソースコードファイルと依存メタデータ | コンテナベースのビルドと実行 |
| 並行処理 | 並列実行、柔軟 | 低〜中並列実行 | 高い並列実行 | 高並列実行とキューイング |
| スケールアウト | リクエスト数に基づく | 仕事量の定義に基づく | イベントまたは直接呼び出しに基づく | タスク数と同時インスタンス数に基づく |
| 分離 | マルチテナント | マルチテナント | マルチテナント | シングル・テナント |
| GPU サポート | いいえ | いいえ | いいえ | ある |
| マシン構成の管理 | コントロールがありません | コントロールがありません | コントロールがありません | フル・コントロール |
| VPC 接続 | 「プライベート・パス」を通じて | 「プライベート・パス」を通じて | 「プライベート・パス」を通じて | ネイティブ(サブネットプール経由) |
| 最適化の対象 | 長時間稼働する複雑なワークロードとオンデマンドのスケールアウト | リソース需要の高い、予定または計画されたワークロード | 立ち上げ時間と迅速なスケールアウト | 大規模で計算負荷の高いワークロード |
詳細は 計画 Code Engine を参照。
最初の Code Engine アプリのデプロイ
icr.io/codeengine/helloworldイメージを使用して、最初のCode Engineアプリを作成します。
- コンソールを開く Code Engine コンソールを開く。
- 作成開始を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 アプリをデプロイするには、選択したプロジェクトがなければならないことに注意してください。
- **「アプリケーション」**を選択します。
- アプリケーションの名前を入力してください。例:
myapp。 プロジェクト内で固有のアプリケーション名を使用してください。 - 「 既存のコンテナイメージを使用する 」を選択し、イメージ参照として「
icr.io/codeengine/helloworld」を指定します。 この例では、デフォルト値を変更する必要はない。 この例で使用されているコードの詳細については、以下を参照してください。helloworld. - 「作成」 をクリックします。
- アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、アプリケーションをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。
出力例
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-5b5895fdf7-abcd
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1
z=Set env var 'SHOW' to see all variables
最初のアプリケーションを Code Engine にデプロイしてテストすることができました。 チュートリアルアプリケーションのデプロイ 、または でアプリを操作する Code Engine 、アプリケーションのオプションをもっと試してみる。
最初の Code Engine ジョブの実行
icr.io/codeengine/helloworldイメージを使用して、最初のCode Engineジョブを作成して実行します。
- コンソールを開く Code Engine コンソールを開く。
- 作成開始を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 ジョブを作成するには、選択したプロジェクトがなければならないことに注意してください。
- **「ジョブ」**を選択します。
- ジョブの名前を入力してください。例:
myjob。 ジョブには、プロジェクト内で固有の名前を使用します。 - イメージ参照に
icr.io/codeengine/helloworldを指定します。 この例では、デフォルト値を変更する必要はない。 この例で使用されているコードの詳細については、以下を参照してください。helloworld. - 「作成」 をクリックします。
- ジョブ・ページで、ジョブの実行依頼をクリックして、現在の構成に基づいてジョブを実行依頼します。
- 「ジョブの実行依頼」ペインで、すべてのデフォルト値を受け入れ、ジョブの実行依頼を再度クリックしてジョブを実行します。
ロギングを有効にすると、以下の例がログに表示される。 ロギングを有効にしてジョブを実行する方法については、ログの表示を参照してください。
ロギング・インスタンスの出力例
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_DOMAIN=us-east.codeengine.appdomain.cloud
CE_JOB=myjob
CE_JOBRUN=myjob-jobrun-xgpmz
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myjob-jobrun-abcde-0-0
JOB_INDEX=0
...
z=Set env var 'SHOW' to see all variables
コンソールからジョブを作成して実行しました。 チュートリアル: ジョブの実行またはCode Engine でのジョブの実行に移動して、ジョブの他のオプションを試してみてください。
最初の関数を実行する
サンプル・ファンクション・コードを使用して、最初の Code Engine ファンクションを作成し、実行します。
- コンソールを開く Code Engine コンソールを開く。
- 作成開始を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 関数を作成するには、プロジェクトが選択されている必要がありますのでご注意ください。
- 「 機能 」を選択してください。
- 関数の名前を入力してください。 関数名には、プロジェクト内で一意のものを使用してください。
- 「 Node.js 」の22 を選択してください
- 「作成」 をクリックします。 サンプルコードで関数を作成します。 このコードは Function -> Configuration ページで編集できます。
- [関数のテスト ] をクリックし、[関数のテスト] ペインで [ リクエストを送信 ] をクリックします。 Webページでこの関数を開くには、「 Function URL 」をクリックしてください。
出力例
{
"args": {
"__ce_headers": {
"Accept-Encoding": "gzip, deflate, br",
"User-Agent": "got (https://github.com/sindresorhus/got)",
"X-Request-Id": "12340a7b-11c0-4de3-f16b-a6abc27f4146"
},
"__ce_method": "GET",
"__ce_path": "/"
},
"env": {
"HOME": "/root",
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/lib/nodejs/bin",
"PWD": "/nodejsAction",
"SHLVL": "1",
"_": "/usr/local/lib/nodejs/bin/node",
"__OW_ALLOW_CONCURRENT": "true",
"container": "oci"
}
}
Code Engine に最初の関数をデプロイし、テストを行いました。 ローカル・ソースから関数を実行する 」または「 関数で作業する 」で、関数のその他のオプションをお試しください。
最初のフリート
icr.io/codeengine/helloworld イメージを使用して、初めての Code Engine フリートを作成し、実行してください。
- フリート運営に 必要な準備ステップが 完了していることを確認してください。
- コンソールを開く Code Engine コンソールを開く。
- 作成開始を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 フリートを実行するには、プロジェクトが選択されている必要がありますのでご注意ください。
- フリート選択
- 艦隊の名前を入力してください。 プロジェクト内のすべてのフリートで一意となる名前を使用してください。
- イメージ参照に
icr.io/codeengine/helloworldを指定します。 この例では、デフォルト値を変更する必要はない。 この例で使用されているコードの詳細については、以下を参照してください。helloworld. - 「作成」をクリックします。
ロギングを有効にすると、以下の例がログに表示される。 ロギングを有効にしたフリート実行については、 フリートログの表示を 参照してください。
ロギング・インスタンスの出力例
Hello from helloworld! I'm a task of fleet: fleet-abcdef1234! Task Index: 4, Task ID: 2b2b2b2b-3c3c-4d4d-5e5e-6f6f6f6f6f6f
Hello World from:
. ___ __ ____ ____
./ __)/ \( \( __)
( (__( O )) D ( ) _)
.\___)\__/(____/(____)
.____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
.) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.eu-de.codeengine.cloud.ibm.com
CE_CPU=1
CE_DOMAIN=eu-de.codeengine.appdomain.cloud
CE_FLEET_ID=1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e
CE_FLEET_NAME=fleet-abcdef1234
...
z=Set env var 'SHOW' to see all variables
コンソールから艦隊を作成し、運用しました。 艦隊の運営 、フリートに関するより多くのオプションを試してみる。
ソース・コードからの最初のコンテナー・イメージの作成
最初の Code Engine ビルドを作成して実行してから、そのコンテナー・イメージをアプリケーションにデプロイします。
Code Engine は、ユーザーのアカウントの Container Registry の名前空間にイメージを自動的にプッシュできます。 名前空間を自動で作成することもできます。 イメージを別のContainer Registryアカウントまたはプライベート Docker Hub アカウントにプッシュするには、プライベート・コンテナー・レジストリーへのアクセス権限の追加を参照してください。
- コンソールを開く Code Engine コンソールを開く。
- 作成開始を選択します。
- 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 アプリをデプロイするには、選択したプロジェクトがなければならないことに注意してください。
- **「アプリケーション」**を選択します。
- アプリケーションの名前を入力します。 プロジェクト内で固有のアプリケーション名を使用してください。
- 「 ソースコードからコンテナイメージをビルド 」を選択します。
- **「ビルドの詳細を指定 (Specify build details)」**をクリックします。
- 各ページのデフォルトを受け入れ、[ Next]、[ Done]の順にクリックする。
- 「作成」 をクリックします。
ビルド実行が実行されると、ビルドされたコンテナー・イメージが Container Registry に送信され、アプリケーションが自動的にそのイメージをプルしてデプロイします。 アプリケーションの状況が**「準備完了 (Ready)」**に変わったら、それを試行できます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。
出力例
Hello World from:
___ __ ____ ____
/ __)/ \( \( __)
( (__( O )) D ( ) _)
\___)\__/(____/(____)
____ __ _ ___ __ __ _ ____
( __)( ( \ / __)( )( ( \( __)
) _) / /( (_ \ )( / / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-6db6d89dc7-k6qc7
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1
ソース・コードを Code Engine に送信し、コンテナー・イメージを作成し、アプリケーションにデプロイする、という作業をすべて 1 つのインターフェースから実行しました。
コンテナー・イメージのビルドに移動し、ビルドの他のオプションを調べて試してみてください。
Code Engine の次のステップ
これらの Code Engine タスクを、コンソールまたは Code Engine CLI で実行する方法について確認します。
コード・サンプルがさらに必要ですか? Samples for IBM Cloud Code Engine GitHub repoをチェックしてください。