さくらのクラウドのAppRunを少し触ってみた

さくらインターネットからAppRunなる新サービスが登場
コンテナ基盤らしくβ期間中は無料とのことでしたので少し触ってみました

https://cloud.sakura.ad.jp/lp/apprun/

https://manual.sakura.ad.jp/cloud/manual-sakura-apprun.html

# まとめ

 - 良い点
     - シンプルで使いやすい
     - 起動が速い
 - 気になる点
     - Docker Hubのイメージが直接使用できない
     - ログやモニタリング機能がない
     - Hacobune、Arukas (サービス終了）
 - AWS LambdaのFunction URLsに近い印象
     - コンテナイメージを指定するだけ
     - 発行されるURLにアクセスして利用
     - インフラ側は気にする必要がない

# 目次

1. コンテナレジストリの準備
1. イメージをレジストリにプッシュ
1. AppRunアプリケーションの作成

## 1. コンテナレジストリの準備

AppRunで使えるイメージは「さくらのクラウド」に格納したイメージだけです。

そのためまずは格納先となる「さくらのクラウド」のレジストリを作成します。
Docker Hubも使えませんがイメージを Pull & Push することで利用可能です。

さくらクラウドにログインして「AppRun β」を選択

![alt](https://qiita-image.cloudremix.net/Sakura-Cloud-Home.jpg)

「コンテナレジストリ」を選択

![alt](https://qiita-image.cloudremix.net/AppRun-Home.jpg)

「追加」を選択

![alt](https://qiita-image.cloudremix.net/Adding-Container-Registry.jpg)

レジストリの名前や公開範囲を選択してレジストリを作成

公開範囲は「非公開」を選びました。
が、毎回の認証が面倒だったのでパブリックイメージなら「Push&Pull」のほうが楽です。

![alt](https://qiita-image.cloudremix.net/Container-registry-creation-screen.jpg)

認証情報を作成するため「名前」をクリックして詳細に飛びます。

![alt](https://qiita-image.cloudremix.net/Container-registry-creation-complete.jpg)

「ユーザ」タブを選択

![alt](https://qiita-image.cloudremix.net/Container-Registry-Details.jpg)

「追加」を選択

![alt](https://qiita-image.cloudremix.net/Container-Registry-Users.jpg)

ユーザ名とパスワードを入力して認証情報を作成します。

![alt](https://qiita-image.cloudremix.net/Adding-a-user-to-a-container-registry.jpg)

## 2. イメージをレジストリにプッシュ

AppRunで使用するイメージを用意
ログ機能がなくデバッグが難しいため確実に動作するイメージを選びます。

今回は[NGINX-Demos](https://github.com/nginxinc/NGINX-Demos)のイメージを使用しました。
アクセスするとServer nameなどを返すシンプルなデモアプリです。

![alt](https://qiita-image.cloudremix.net/NGINX-Demo.jpg)

ローカル端末にDockerをインストールしていないためAWS CloudShellでコマンド操作を行いました。
(さくらのクラウドシェルもDockerほしい)

NGINX-DemosイメージはDocker Hubで公開されているのでプル

```
docker pull nginxdemos/hello
```

さくらのレジストリにログイン。
ユーザ名とパスワードを聞かれるのでさっき作ったものを入力
（`Login Succeeded`と表示されるはず）

```
docker login cloudremix.sakuracr.jp
```

タブを付け替えてプッシュ

```
docker tag nginxdemos/hello cloudremix.sakuracr.jp/nginxdemos:latest
docker push cloudremix.sakuracr.jp/nginxdemos:latest
```

## 3. AppRunアプリケーションの作成

本題のアプリケーションを作成します。
とはいっても、イメージ指定以外は特に変更する必要ありませんが

AppRunのページから「アプリケーションを作成」を選択

![alt](https://qiita-image.cloudremix.net/AppRun-Home-Start.jpg)

ポートやイメージ情報を入力してアプリケーションを作成

![alt](https://qiita-image.cloudremix.net/Adding-an-application-to-AppRun.jpg)

アプリケーションが作成され、正常に起動するとステータスが「正常」になります。
エラーになった場合は「失敗」とだけ表示されます。（エラー理由などは見れない）

![alt](https://qiita-image.cloudremix.net/AppRun-Green.jpg)

作成した段階でアクセス用の「公開URL」も作成されます。

次のようなURLで独自ドメインは使用できないようです。

```
https://app-example.ingress.apprun.sakura.ne.jp
```

公開URLにアクセスするとデモアプリが表示されます。
かんたん

![alt](https://qiita-image.cloudremix.net/NGINX-Demo.jpg)

ちなみに作成直後はこんな感じ。

![alt](https://qiita-image.cloudremix.net/AppRun-processing-the-application.jpg)

バージョンタブはこんな感じ
トラフィックの割合を指定できるためカナリアリリースも可能です。

![alt](https://qiita-image.cloudremix.net/AppRun-version-information.jpg)

パケットフィルタタブはIPアドレス制限のこと。
プレフィックス長は「1～32」を自由に選択可能です。

![alt](https://qiita-image.cloudremix.net/AppRun-Packet-Filter.jpg)

他に設定項目や表示項目はないようです。

更新する際は作成と同じように設定します。
（レジストリのパスワードは毎回入力が必要）

![alt](https://qiita-image.cloudremix.net/Apprun-Application-Updates.jpg)

## 別で気なったこと

「さくらのクラウド」のレジストリって消しても消えない？
（管理コンソールから消しても普通にPullできる）