◇はじめに
先日さくらインターネットさんから、アプリケーション実行基盤「AppRun β版」のトライアルを開始する旨のアナウンスがありました。
コンテナ実行基盤サービスの1種のようですが、他のクラウドも含めて触ったことがなかったので、試してみました。
なお、現在提供されているβ版は無料で利用可能です。
◇構築環境
公式のマニュアルにあるクイックスタートをそのまま試してもいいのですが、今回は以前ローカルで作成したコンテナを使って試してみました。
今回は前に作った、Grafana+Infinityプラグインを動かすコンテナを使います。
当時書いた記事はこちらです。
◇導入手順
基本的には、公式のチュートリアルに沿って進んでいきます。
事前準備(アカウント、クレジットカード登録)
アカウントを持っていない場合、まずはアカウントの登録が必要になります。
自分は以前にさくらのクラウドシェルを試す際に会員登録をしていたため、今回はそちらのアカウントを使用しています。
アカウント登録の手順は公式サイトに手順が載っています。
また、今回使用するAppRun β版は無料で使えますが、クレジットカードの登録は必要となります。
※クレジットカード登録していないと、コンテナレジストリのサービスアクセス時にエラーとなる
こちらも公式のマニュアルに従って登録します。
コンテナレジストリのリポジトリ作成
まず、AppRunで実行するためのコンテナイメージを格納するための準備をします。
AppRunで実行するコンテナイメージは、さくらのクラウド内のコンテナレジストリに配置する必要があります。
こちらも基本的に公式の手順に従って進めていきます。
こちらの記事も参考になったので、共有します。
まず、コンテナレジストリの画面から追加ボタンを押します。

名前などの必要事項を入力していきます。
なお、コンテナレジストリ名は他の人が使っている名称は使えません。
「公開設定」は、今回は認証なしでPush & Pull
ができる設定にしています。
ほかの方にアクセスされたくない場合は、非公開
設定を選択してください。

確認画面が出るので、「作成」ボタンを選択します。

コンテナレジストリ一覧表示画面に戻り、作成したコンテナレジストリのステータスが「成功」になっていればOKです。

次に公式のチュートリアルでは、ユーザの作成を行っていますが、今回は誰でもPush & Pull
ができる公開設定にしているため、ユーザ作成はスキップします。
今回作成したコンテナレジストリは既に削除しています。
認証なしの設定にした場合、誰でもイメージをPushできる状態になるので、取扱は注意してください。
コンテナイメージの準備&レジストリへの格納
今回は以前に別記事で作成したコンテナを使ってコンテナイメージを作成します。
コンテナからイメージを作成する際のDockerコマンドは、docker commit
コマンドを使います。
まず、イメージ化したいコンテナIDを調べるため、docker ps
コマンドを実行します。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
調べたIDに対して、docker commit
コマンドを実行します。
なお、その際に公式にも記載されているように、イメージ名の命名方法にルールがありますので、ご注意ください。
コンテナレジストリにpushするイメージ名は [レジストリ名].sakruacr.jp/[任意のイメージ名]:[タグ] である必要があります。pushするイメージは docker tag コマンドでイメージ名を変更します。
docker commit {{CONTAINER_ID}} yankee-grafana-infinity.sakuracr.jp/my-grafana:latest
コマンド実行が完了したら、イメージ一覧表示コマンドを実行してイメージが追加されていることを確認します。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
yankee-grafana-infinity.sakuracr.jp/my-grafana latest {{IMAGE_ID}} 2 days ago 485MB
docker commit
コマンドの詳細は公式ドキュメントをご覧ください。
コンテナイメージができたら、docker push
コマンドでコンテナレジストリにpushします。
$ docker push yankee-grafana-infinity.sakuracr.jp/my-grafana
Using default tag: latest
The push refers to repository [yankee-grafana-infinity.sakuracr.jp/my-grafana]
・・・
latest: digest: sha256:xxxx size: 2622
上記コマンドでも動作しましたが、本来はイメージ名:latest
という形でタグ名も記載するようでした。
今回は、公開設定にしているため、上記コマンドだけでOKですが、非公開設定にした場合は公式ドキュメントに沿って、docker login
コマンドを先に実行する必要があります。
ここまでで、コンテナレジストリへのイメージの格納は完了です。
なお、コンテナレジストリのメニュー上からはイメージが格納されたか判断がつかないため、CLI上のログで判断してます。
AppRun β上にアプリケーション作成
いよいよAppRunでアプリケーションを作成していきます。
この部分も公式ドキュメントにしたがって作業していきます。
まず、「アプリケーションの作成」をクリックし、各種設定を入力します。

アプリケーション名以外は公式と同じ設定としました。
後述しますが、ポート設定を間違っており、このままではアクセスできませんでした。

コンテナの構成情報の設定画面では、先ほどコンテナレジストリに格納したコンテナイメージを指定します。
コンテナレジストリアクセス設定は非公開設定にしている場合は入力が必要です。
リソース設定はメモリーのみデフォルトの512MiBから1GiBに変更しています。

パケットフィルター設定はデフォルトはオフですが、今回は念のため有効にして、送信元IPアドレスを制限しています。

ここまできたら、「作成する」をクリックすればアプリが構成されて起動するはずです。
起動したが、アクセスできない
しばらくすると、公開URLが表示されたため、そちらにアクセスしましたがGrafanaのログイン画面に入れませんでした。
改めて自分が登録したコンテナイメージの構成ファイル(compose.yaml)を確認すると、開放ポート番号が3000となっており、AppRun側で設定していた8080と食い違っていたことが原因でした。
services:
grafana:
image: grafana/grafana-oss:11.3.1
container_name: grafana-11
restart: unless-stopped # 自動再起動ポリシー
environment:
- GF_INSTALL_PLUGINS=yesoreyeram-infinity-datasource # Infinityプラグインをインストール
ports:
- "3000:3000" # ホスト:コンテナ
volumes:
- grafana_storage:/var/lib/grafana # 永続化データの保存
volumes:
grafana_storage: {}
そこで、アプリケーション構成の変更画面から、ポート番号を3000に変更しました。

改めてアプリケーション作成を行い、しばらくするとステータスが正常になるため、公開URLにアクセスします。

Grafanaのログイン画面が出れば成功です。
Grafanaへのログイン確認&Infinityプラグインのインストール確認
最後に念のため、GrafanaにログインしてInfinityプラグインがインストールされているかまで確認します。
Grafanaログイン画面でUsername、Passwordともにadmin
でログインしてみます。

Grafanaにログイン出来たら、Infinityプラグインがインストールされているかを確認します。
トップ画面の左側メニューからConnections
を選択し、検索窓からInfinity
で検索します。
Infinityプラグインが表示されたら選択します。


Infinityプラグインの画面を開いて、右上にUninstall
ボタンが表示されていれば、Infinityプラグインが正しくインストールされています。

◇おわりに
コンテナ(アプリケーション)実行基盤サービスを初めて使ってみましたが、思ったり簡単に使うことができました。
どちらかというと、コンテナレジストリの方(dockerコマンドの使い方含む)が慣れるのに少し勉強が必要かなという感じです。
特にHTTPS対応の設定を自分で行う必要がないのが非常に助かります!
他のクラウドサービスも含めて、この辺のサービス(PaaS,CaaS,FaaS)はあまり触れていない、そもそも各社が提供しているサービスの違いがあまりわかっていないため、今後もう少し触ってみたいと思います。
最後に、今回使用した、さくらのクラウド AppRun β版ではフィードバックを募集しているので、自分なりに気になった点をフィードバックしたいと思います。