#前提
先日書いた「IBM Cloud CLIを使ってCode Engineでアプリケーションを起動する」では、PCにインストールするIBM Cloud CLIを使用しました。ここでは、IBM Cloud Shellを使って、IBM Cloud Code Engineでコンテナを起動してみます。
IBM Cloud CLIからIBM Cloudにログインする操作が無いこと、IBM Cloud Shellのロケーションとして「us-south」を指定する必要があることが大きな違いです。
#IBM Cloud Shell
IBM Cloud Shellとは?
Webブラウザ上で、bashシェルを実行できる環境です。IBM Cloud上で利用することができます。公式のオンラインマニュアル「IBM Cloud Shellに関するFAQ」によれば、シェルの実行環境は、Ubuntu Linuxとあります。
2020年10月現在、IBM Cloud Shellで使われているUbuntuのバージョンは、18.04.5 LTS (Bionic Beaver)となっています。
確認方法は、IBM Cloud Shellで次のコマンドを実行してみてください。
$ cat /etc/os-release
IBM Cloud Shellのアクセス方法
ChromeなどのWebブラウザでIBM Cloudにログイン後、画面右上の「IBM Cloud シェル」のアイコンをクリックしてください。
ロケーション変更
2020年10月現在、ここで使用する「IBM Cloud Code Engine」は、IBM Cloudのロケーションとして「ダラス」のみになっていますので、IBM Cloud Shellのロケーションを「us-south」に変更します。
IBM Cloud Shellの画面上部で「変更」をクリックします。
「Cloud Shellロケーションを変更します」と表示されるので、ロケーションを「ダラス(us-south)」に変更し、「続行」をクリックします。
IBM Cloud Shellの画面上部で、ロケーションが「ダラス」に変わります。
Code Engine pluginの有無を確認
IBM Cloud Shellで、Code-Engine用のコマンドを呼び出せるか確認します。
$ ibmcloud plugin show code-engine
下図のように表示されればOKです。IBM Cloud Shellで、2020年10月現在ベータ版のIBM Cloud Code Engineを使用できることがわかります。
IBM Cloud Code Engineでサーバーレスでコンテナを使う
リソース・グループを指定
リソース・グループ自体の解説については公式のオンラインマニュアルへ。
リソース・グループを指定していない場合は、IBM Cloud Code Engineで、アプリケーションやジョブをまとめる器となる「プロジェクト」を作成することができません。
次のコマンドを実行し、既存のリソース・グループを表示します。
$ ibmcloud resource groups
結果の例
名前 ID デフォルト・グループ 状態
default xxxxxxxxxxxxxxxxx true ACTIVE
ここでは名前が「default」というリソース・グループをターゲットに指定します。
$ ibmcloud target -g default
プロジェクト作成
IBM Cloud Code Engineでは、アプリケーションやジョブなどを動かすための器を「プロジェクト」と言い、必ず用意しなければいけません。
次のコマンドを実行します。作成するプロジェクト名は、2ndproject としました。プロジェクト名は英数字が使えますので、好みの名称で良いでしょう。
$ ibmcloud ce project create --name 2ndproject
作成済みの既存のプロジェクトは、次のコマンドを実行することで確認できます。
$ ibmcloud ce project list
実行結果の例
Name ID Status Tags Location Resource Group Time to deletion
2ndproject ab70ec5f-3fb4-4272-88c6-78dc63024173 active us-south default 7 days from now
2020年10月現在、IBM Cloud Code Engineはベータ版のため、7日後に自動削除する旨が表示されます。
プロジェクトの指定
プリケーションを作成するにあたり、プロジェクトを指定するため、次のコマンドを実行します。ここでは作成した2ndprojectを指定しています。実際は、2ndprojectのところがプロジェクト名を指定する箇所になりますので、各自が作成したプロジェクト名に置き換えてコマンドを実行してください。
$ ibmcloud ce project select -n 2ndproject
実行結果の例
Selecting project '2ndproject'...
OK
##アプリケーションの作成
DockerHubで公開されているNode-REDのDockerイメージを呼び出して、IBM Cloud Code Engineにアプリケーションとして作成します。
次のコマンドを実行します。
$ ibmcloud ce application create --name nodered --image nodered/node-red --cpu 1 --memory 512Mi
ここでは、Node-REDのコンテナに、1CPUと512MBのメモリを割り当てています。
実行結果の例
Project '2ndproject' and all its contents will be automatically deleted 7 days from now.
Creating application 'nodered'...
The Configuration is still working to reflect the latest desired specification.
The Route is still working to reflect the latest desired specification.
Configuration 'nodered' is waiting for a Revision to become ready.
Configuration 'nodered' 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 nodered' to check the application status.
OK
https://nodered.ab70ec5f-3fb4.us-south.codeengine.appdomain.cloud
上記のURLにアクセスすることで、作成したアプリケーションにアクセスすることができます。noderedは、ibmcloud ce application create で指定したアプリケーション名で、ab70ec5f-3fb4はアプリケーションが所属するプロジェクトのIDの一部になりますので、各自で異なります。
なお、2020年10月現在、IBM Cloud Code Engineはベータ版のため、7日間で自動削除する旨が表示されています。
##アプリケーションのステータス確認
$ ibmcloud ce application get -n nodered
上記のnoderedは、ibmcloud ce application create で指定したアプリケーション名になります。アプリケーション名が異なる場合は、各自が使用したアプリケーション名に置き換えてコマンドを実行してください。
実行結果の例
Name: nodered
ID: ed33006e-da81-4030-b7d6-98d7265da9ab
Project Name: 2ndproject
Project ID: ab70ec5f-3fb4-4272-88c6-78dc63024173
Age: 5m9s
Created: 2020-10-06 13:12:37 +0000 UTC
URL: https://nodered.ab70ec5f-3fb4.us-south.codeengine.appdomain.cloud
Console URL: https://cloud.ibm.com/codeengine/project/us-south/ab70ec5f-3fb4-4272-88c6-78dc63024173/application/nodered/configuration
Image: nodered/node-red
Resource Allocation:
CPU: 1
Memory: 512Mi
Revisions:
nodered-arbhb-1:
Age: 5m8s
Traffic: 100%
Image: nodered/node-red (pinned to 7903d6)
Running Instances: 0
Runtime:
Concurrency: 10
Concurrency Target: 10
Maximum Scale: 10
Minimum Scale: 0
Timeout: 300
Conditions:
Type OK Age Reason
ConfigurationsReady true 4m39s
Ready true 4m32s
RoutesReady true 4m32s
実行結果として表示されたもののうち、「URL」にアクセスするとアプリケーションが表示され、「Console URL」にアクセスすると、Webブラウザ上で作成したアプリケーションの設定を確認することができます。
Webブラウザからアクセス
アプリケーションの作成、またはアプリケーションのステータス確認で表示されたURLにアクセスし、アプリケーションが動いているか確認します。ここではNode-REDを指定していましたので、Node-REDが表示されます。
この通り、Node-REDは初期状態です。
実用的な使い方
サーバーレスとしてコンテナを起動できますので、何もアクセスがなければインスタンス(起動中のコンテナ)が自動で削除されますし、アクセスが増えればインスタンスが増えます。上記のようにNode-REDを起動しても、インスタンスが自動で増減するため、IBM Cloud Code Engine上でNode-REDを起動し、フローを設定しても、すぐに初期状態に戻ってしまいます。
従って、手元のPCなどでNode-REDで動かしたいフローを作りこんでおき、コンテナイメージ作成、作成したコンテナイメージを、IBM Cloud Code Engineで動かすことが実用的な使い方と言えます。
##その他
コンテナで起動しているアプリケーションのログを見るなどは、IBM Cloud CLIの場合と同じように操作し、確認することができます。
Comments
Let's comment your feelings that are more than good