【IBM Cloud】Code Engineをいろいろいじってみた① - プロジェクト、アプリケーションの作成

### はじめに

IBM CloudのCode Engineを使っていろいろ試してみた内容をまとめました。Code Engineについての自分の勉強のために操作してみたため、同じくこれからCode Engineを活用される方向けとなる基礎内容の記事です。
今回の内容にはIBM Cloudの[アカウント](https://cloud.ibm.com/docs/account?topic=account-accounts)（無料利用可能）が前提となっています。
### Code Engineとは？
#### 概要
IBM Cloud® Code Engine (略称「Code Engine」) は、ソース中心の最新のコンテナー化サーバーレス・アプリおよびジョブを作成できるようにすることを目的として、IBMによって開発されたプラットフォームです。コードを実行したい開発者のニーズに対応するように設計されており、アプリケーションのコードを分析し、コンテナイメージの作成とデプロイを自動的に行います。
現在、日本国内では東京リージョンと大阪リージョンともに対応しています。
![スクリーンショット 2022-09-13 15.28.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/f9e1ba18-d726-1c7d-beb2-c1ec4e13e5c9.png)

#### 主な特徴
Code Engineの主な特徴としては、以下のようになります。
- インフラ管理・クラスタ管理が不要
    - アプリのソースコードを瞬時にデプロイ
    - ソースコードをもとに自動ビルド・デプロイ

- 複数のワークロードに対応
    - アプリケーション（HTTPベースのアプリ）
    - バッチジョブ
    - ファンクション（イベント駆動）
    - コンテナ

- 柔軟なスケール（ゼロ・スケール）
    - インフラ管理なしにアプリを柔軟にスケール可能
    - アプリが利用されていない場合はゼロ台にスケールダウンすることが可能

- 真の意味での従量課金
    - アプリ、ビルドで利用したリソース量に対する支払い
    - ゼロ・スケールに対応しているため、真の意味でアプリが利用されているときだけのお支払い
#### Code Engineのデプロイ方法について
Code Engineを使ってデプロイする方法は３つがあります。
① アプリコードを用いてビルド＋デプロイする
② Docker Fileを用いてビルド＋デプロイする
③ コンテナイメージを用いてデプロイする
今回は、③のコンテナイメージを使ってデプロイしてみました。

### Code Engine操作の流れ
#### 1. IBM Cloudにログインし、Code Engineプロジェクトを作成
IBM Cloudの[Portal Site](https://cloud.ibm.com/login?state=%2F&sessionExpired=true)にログインしてください。無料のLiteアカウントを作成することもできます。
![スクリーンショット 2022-07-11 16.26.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ecace0e3-da2d-ee4a-7154-98336b7e9d0e.png)
ダッシュボードが表示されましたら、左上の`ナビゲーション・メニュー`をクリックし、`Code Engine`カテゴリーに入ります。
![スクリーンショット 2022-09-12 14.11.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/a913511e-ee9d-3232-764a-b086fd492bda.png)
![スクリーンショット 2022-09-12 14.11.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/61fffba6-723b-afa3-fd7c-ca0f5d2805b0.png)
プロジェクトを作成するため、`プロジェクト`ボタンをクリックし、`作成`をクリックします。
![スクリーンショット 2022-09-12 14.12.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/cdf70a67-b8b9-213b-df72-9d458f222cfa.png)
![スクリーンショット 2022-09-12 14.12.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/9af6a546-c687-1f99-0255-cef121390273.png)
プロジェクト作成画面でロケーションを選択し、プロジェクト名を設定します。また、リソース・グループも選択します。
今回は東京リージョン(jp-tok)を選択しており、リソース・グループはすでに作成していた個人のものに設定しています。
設定が終了したら、右下の`作成`ボタンをクリックします。
![スクリーンショット 2022-09-13 15.53.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/e094d5fa-052f-dba3-f3fe-58ae83e721b1.png)
無事作成できたら、リストから作成したプロジェクトが見え、ステータスもアクティブになっています。プロジェクトをクリックしてアクセスします。
![スクリーンショット 2022-09-13 15.57.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/0e4c556b-b449-089e-f13c-e3501070f8c3.png)
#### 2. アプリケーションの作成
次はアプリケーションを作成する流れについてです。作成したプロジェクトにアクセスしますと、左上に`アプリケーション`ボタンがあるのでクリックします。
![スクリーンショット 2022-09-12 14.13.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/6c0a5288-ea2f-7cef-9b03-077119b00dcb.png)
アプリケーションの作成画面で、アプリケーション名や実行するコードの選択、イメージ参照の入力、その他ポートやユーザーIDの選択、エンドポイントの定義などができます。今回は全てデフォルトに選択しており、イメージ参照も下に記載されているサンプルイメージ`icr.io/codeengine/helloworld`で構成しています。
イメージ参照の部分に`icr.io/codeengine/helloworld`を入力し、`イメージの構成`をクリックすると設定画面が表示されます。今回はデフォルトに設定し下の`完了`ボタンをクリックします。
![スクリーンショット 2022-09-12 14.48.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/d1ea0ddf-9487-329d-08e0-e0768fb3f5e8.png)
設定が完了したら右下の`作成`ボタンをクリックします。
![スクリーンショット 2022-09-12 14.13.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/d5adee4a-dfc0-15ce-b6fc-9d5334c30e98.png)
アプリケーションが作成されたことを確認し、スタータすも`対応可能`になりましたら、アプリケーション・リンクの`URLを開く`をクリックします。
![スクリーンショット 2022-09-12 14.51.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/2a05e73b-f376-e9f3-93ac-82fe26f73aa4.png)
アプリケーションが作成されたことが確認できます。
![スクリーンショット 2022-09-12 14.52.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/6fb3fa82-1951-834a-bcde-99ebfb81c02a.png)

#### 3. アプリケーションの操作
もう一度アプリケーション画面に戻り、今回はアプリケーション名をクリックして詳細にアクセスします。
![スクリーンショット 2022-09-13 16.15.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/05aadd79-4d81-1608-dc3e-31d720a75bae.png)
アプリケーションの詳細画面が表示されましたら、`概要`タブの真ん中にあるグラフを確認してみます。現在は特にアクション内容がなかったため、`アクティブなインスタンスはありません`とのメッセージがありますが、アプリケーションの操作を行うとこちらにグラフが表示されるようになります。その確認のため、右上の`アプリケーションのテスト`をクリックし、`要求の送信`をクリックします。
![スクリーンショット 2022-09-12 18.22.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/e12f968e-dcdb-7b5a-1fa1-8479bd4f8cde.png)
![スクリーンショット 2022-09-13 16.25.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/c9a2957c-b5f5-1b59-f469-718d8698dfb1.png)
そうすると、先ほどアプリケーションのURLで確認したコードが表示されながら、グラフにインスタンスがリアルタイムで表示されることが確認できます。
![スクリーンショット 2022-09-13 16.26.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/59759a0c-f847-98a0-b9c4-3813fc6dfbab.png)
その他、`構成`タブではコード、ランタイム、環境変数、コマンドのオーバーライドに関する情報の確認と編集ができ、`Endpoints`タブではエンドポイントの設定を行うことも可能です。
![スクリーンショット 2022-09-13 16.35.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ea9cbd9c-9487-7e13-b480-78f663fe13ab.png)
![スクリーンショット 2022-09-13 16.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/67010011-a904-9991-6e37-e1665fc3e28d.png)
最後に料金の見積もりを確認してみます。右上の`コストの見積もり`をクリックします。
![スクリーンショット 2022-09-13 16.38.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/9c388922-0c59-32ae-3dfa-f74ef63194d5.png)
アプリケーションを作成する際のスペックや設定などが表示されますが、ここで設定を変更することも可能です。その後、`コストの計算`をクリックすると１ヶ月当たりのコストを確認することができます。
より詳しい料金設定については、[こちら](https://cloud.ibm.com/docs/codeengine?topic=codeengine-pricing)をご参考ください。
![スクリーンショット 2022-09-13 16.38.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/b4cd444e-fb58-e3f1-f28f-c3439dc96631.png)
![スクリーンショット 2022-09-13 16.38.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/20f5993f-39d6-5e45-e52a-9aed813b6b6b.png)
### まとめ
今回はIBM Cloud上でCode Engineを実行し、プロジェクトの作成やコンテナイメージを使ってアプリケーションを作成する基本的な流れについて整理しました。サンプルイメージとしては非常に簡単なものだったため目立つ操作はできませんでしたが、別途イメージリソースを入手し構成したらより高度なアプリケーションをデプロイすることができるかと思います。
次回はCode Engineの他デプロイ方法についてや、監視ツールなどのIBM Cloud製品と連携などを操作し、その流れについて整理いたします。
### 注意点
1. イメージ参照の際、タグに何かを入力するとエラーが発生してしまいます。
アプリケーションを初めて作成する際、イメージ参照のタグに`test`と入力しましたが、アプリケーションのデプロイができませんでした。作成される際には何も指定せずにデプロイした方が良いかと思います。
（エラーの原因や仕組みなどが明確に分かり次第、更新いたします。）
![スクリーンショット 2022-09-12 14.13.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/744d5332-0299-329c-2507-2b60fdea334e.png)
![スクリーンショット 2022-09-12 14.21.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/1a358dd6-afcc-3db9-099f-0eefc95107a4.png)
2. Code Engineの操作と記事の作成はリアルタイムで行われていないため、時間のずれがございます。

3. このアカウントではディスカウントが適用されているため、表示価格が通常の定価と異なる場合があります。また、サービス料金はドル-円為替レートに基づいて課金されるため、同じサービスでも料金の変動がございます。

### 参考
- [IBM Cloud Docs - Code Engine](https://cloud.ibm.com/docs/codeengine?topic=codeengine-getting-started)