2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Cloud Foundryが使えなくなったのでIBM Cloud Code Engineにデプロイするまでメモ

Last updated at Posted at 2023-06-08

IBM Cloudで元々CloudFoundryを利用してNode.jsアプリケーションをデプロイしてました。

少し前からアラートはありましたが、2023年5月31日で完全に使えなくなった模様で6/1になった途端に動かしていたアプリケーションが止まってしまいました。

スクリーンショット 2023-06-09 3.48.25.png
https://cloud.ibm.com/docs/cloud-foundry-public?topic=cloud-foundry-public-ha-dr&locale=ja#:~:text=IBM%C2%AE%20Cloud%20Foundry%20%E3%81%8C,%E6%97%A5%E3%81%AB%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82

変わりを調べるとIBM CloudのCode Engineというサービスにデプロイするのが良さそうな雰囲気だったので、調べて試してみました。

ということで試していきます。

IBM Cloudコマンドのインストール

まずはCLIツールのインストールが必要です。

IBM Cloudを色々なプロジェクトで使うというよりも特定のプロジェクトで利用することがあるので、ローカルPCに環境を作るよりも特定のプロジェクトに紐づいたGitHub Codespaces環境にインストールしていきます。

GitHub Codespacesの環境はLinuxになるので以下で完了です。

curl -fsSL https://clis.cloud.ibm.com/install/linux | sh

バージョンの確認

$ ibmcloud -v
ibmcloud version 2.16.0+492aff3-2023-04-06T16:13:44+00:00

最初だけですが比較的簡単にインストールできました。

--ssoオプションでログイン

CLIにログインします。
--ssoオプションでワンタイムパスコードを使いました。

他のやり方でも良いと思いますが、これが最初に成功したのでこちらでメモしておきます。

$ ibmcloud login --sso

API endpoint: https://cloud.ibm.com

Get a one-time code from https://identity-1.ap-north.iam.cloud.ibm.com/identity/passcode to proceed.
Open the URL in the default browser? [Y/n] > y
The browser cannot be launched. Copy the URL and paste it into your browser window to get the one-time code.
One-time code > 

とこんな感じでコードを入力するプロンプトがでます。

GitHub Codespaces環境なのでデフォルトブラウザなどはなく、The browser cannot be launchedと表示されますね。

IBM Cloudのコンソールにログインして、ユーザー設定のCLIとAPIにログインを押します。

以下のようなワンタイムパスコードが表示されるのでターミナルに貼り付けてログインします。

スクリーンショット 2023-06-06 3.08.03.png

問題なければ以下のような表示になりログインできます。

Authenticating...
OK

Targeted account sugawara nobisuke's Account

次に

Select a region (or press enter to skip):
1. au-syd
2. in-che
3. jp-osa
4. jp-tok
5. kr-seo
6. eu-de
7. eu-gb
8. ca-tor
9. us-south
10. us-east
11. br-sao
Enter a number> 

と出ますがとりあえず何も選択せずにエンターキーでスキップします。

Code Engineのプラグインをインストールする

こちらのページにある通りに進めます。

以下でプラグインのインストールです。

$ ibmcloud plugin install code-engine

インストールが問題なくできたか確認

$ ibmcloud plugin list
Listing installed plug-ins...

Plugin Name       Version   Status   Private endpoints supported
code-engine[ce]   1.43.5             true

1.43.5のバージョンがインストールされた模様です。

$ ibmcloud ce help

を実行すると以下のような出力になります。ceがCode Engineの略称みたいですね。

NAME:
  code-engine, ce - Manage Code Engine components

Webコンソールからプロジェクトの作成

CLIから全てやっても良いと思うのですが、イマイチイメージが掴みにくかったのでプロジェクト作成はWebから進めてみました。

Code Engineのサイトから作成を押して進みます。

https://cloud.ibm.com/codeengine/projects
スクリーンショット 2023-06-09 3.57.45.png

ロケーションを選び、名前を付けて作成します。リソースグループはdefaultのままで大丈夫です。

スクリーンショット 2023-06-09 3.58.27.png

作成に数秒かかり、少し待つと以下のような表示になります。

スクリーンショット 2023-06-09 3.59.28.png

一旦これでプロジェクトを作ることが出来ました。

実際のアプリケーションはプロジェクトの中に紐づく単位となります。

  • プロジェクト
    • アプリケーション(Webアプリなど)
    • ジョブ(定期実行タスクなど)

という構成になっている模様です。

CLIでアプリケーション作成前準備

ここからCode Engineでアプリケーション作成前の準備になります。

  • リージョン指定
  • リソースグループ指定
  • プロジェクト指定

の3つの設定になります。

1. リージョン指定

リージョンを指定する必要がある模様です。

先ほどスキップしましたが、Code Engineでテストアプリケーションなどを作成してみます。

東京リージョンでプロジェクト作成した場合jp-tokというIDがロケーションに表示されてると思います。

スクリーンショット 2023-06-06 3.11.15.png

$ ibmcloud target -r jp-tok

特にエラーが出なければOKです。

Switched to region jp-tok


                   
API endpoint:      https://cloud.ibm.com
Region:            jp-tok
User:              xxxxxxx@gmail.com
.
.
.
略

といった出力になります。

2. リソースグループの指定

リソースグループも指定する必要がある模様です。

以下でリソースグループを調べます。

$ ibmcloud resource groups

以下のようにリソースグループが表示されます。

Name      ID                                 Default Group   State
default   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   true            ACTIVE

defaultしかない場合は以下のように設定できます。ID指定でも大丈夫そうでした。

$ ibmcloud target -g default

3. プロジェクトの指定

登録されているプロジェクトの一覧を表示してみます。

$ ibmcloud ce project list

僕の場合mybotというプロジェクトを作ってたのでこのような表示になりました。

Name            ID                                    Status  Enabled  Selected  Tags  Region   Resource Group  Age  
mybot     xxxxxxxxxxxxxxxx  active  true     false           jp-tok   default         161m  

プロジェクトの選択をします。mybotという名前だったので以下のような指定にしました。

$ ibmcloud ce project select --name mybot

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

n0bisukeBotという名前でアプリケーションの作成を行います。

(ここまでの名前付けだとmybotプロジェクト内にn0bisukeBotというアプリを作成します。)

デプロイ方法はいくつかありましたが、 ローカルのソースコードを直接デプロイする方法を試してみます。

参考: https://cloud.ibm.com/docs/codeengine?topic=codeengine-app-local-source-code

$ ibmcloud ce application create --name n0bisukeBot --build-source .

特にエラーもなくデプロイできました。。 だいたいエラーでたりする印象ですが一発でいけました。

デプロイ後の操作など

アプリケーションの更新

アプリケーションの更新をする際にはibmcloud ce application createではなくupdateを使えば良いみたいです。

$ ibmcloud ce application update --name n0bisukeBot --build-source .

簡単ですね。

環境変数の登録

CLIから環境変数の登録ができます。トークンなどを入れておけます。

$ ibmcloud ce application update --name n0bisukeBot  --env TOKEN=xxxxxx

お金をケチりたいのでミニマム構成にしてみる。

Code Engineはデフォルトで作成すると4GBくらいのメモリになり、ちょっとオーバースペックになります。

最小構成ではメモリ0.25GB、0.125 vCPUの指定ができますが、CLI経由じゃないとこの組み合わせは選べないかもしれません。createで作成する際に以下のようにオプションを指定して作成することでミニマム構成にできます。

参考: https://cloud.ibm.com/docs/codeengine?topic=codeengine-mem-cpu-combo

$ ibmcloud ce application create --name n0bisukeBot  --build-source . --max-scale=1 --memory=0.25G --cpu=0.125 --min-scale=1

また、--min-scaleを0にすることで、アクセスが無い時にはスリープ状態になって全くお金が掛からない状態にもできました。僕が試したときには2分~3分くらいでスリープ状態(インスタンス0)になっていました。

逆に起動させっぱなしにしたい場合は--min-scaleを1にしておけば、常時1つのインスタンスが立ち上がっていてスリープが無い状態も作れそうでした。

Code Engineの無料枠の計算がイマイチよくわかってませんが、以下の記事でもあるように特定の時間だけ立ち上げておいて夜間はスリープ状態にするような仕様のアプリケーションにしておけば月毎の無料枠内でも収まるかもしれません

参考: https://qiita.com/shikato/items/456c643d57e2d14f022f

所感とまとめ

意外と簡単にデプロイまですることができました。

どこでそんなに使ったか不明ですが半日くらい動かしてみて331円かかっていました。途中のテストデプロイ時などにメモリなどをリッチなインスタンスを作ってしまって一気に無料枠を超えてしまったのかな... とか予想しています。

無料枠で結構使えるような気はしていますが、少しでも金額かかるのが気になる人にはあまりおすすめできないかもしれません。

スクリーンショット 2023-06-09 4.13.09.png

2023/7/14に追記: 結果0円だった

割とすぐ止めたのもありますが、結果無料枠内だったから0になったのかわからないですが、7月に入ってから6月分を確認したら0円でした。0円でどこまでいけるのかな。。。

スクリーンショット 2023-07-14 0.10.17.png

誰かの参考になれば幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?