さくらのAppRun正式版がリリースされる、その前に
簡単にアプリケーションをデプロイできるコンテナ実行環境、さくらのAppRun正式版リリースが2025年12月9日に迫っています。
このお知らせを見ていただくと分かるとおり、これまでβ版、CR版をご利用中で正式版リリース後も引き続きご利用になりたい場合は、大事な注意点があります。
・β版及びCR版サービスにて作成されたアプリケーションはすべて削除されます。
・コンテナレジストリサービスに保存されているイメージは削除されません。お手数ですが、正式サービス化以降に必要なアプリケーションは再度作成をお願いします。
・正式サービス化以降に作成されたアプリケーションの公開URLは、β版及びCR版サービスにて作成されたアプリケーションの公開URLと同一とすることはできません。
2025年12月9日のリリース時点で、現在デプロイされているアプリケーションはすべて削除されてしまいます! (猶予期間はありません)。
コンテナイメージは削除されないため、同じ設定で正式版リリース後にデプロイし直せば、(URLは変わってしまうものの)引き続き同じアプリケーションを実行することができます。
⚠️ CPU/Memoryの組み合わせについては、CR版までと正式版で利用可能なスペックに変更が行われる予定です。リリース後に ドキュメント を参照してください
正式版リリース後も同じアプリケーションをデプロイするためには?
AppRun のアプリケーションを、公式の Terraform provider や、拙作の apprun-cli で管理している場合は、デプロイし直すだけで同じアプリケーションを作り直せます。Infrastructure as Code (IaC)、素晴らしいですね。
もしコントロールパネルから作成していた、という場合、同じ設定を記憶を元に再現するのは大変です。アプリケーションは正式版リリースの直前に削除されてしまう可能性があるため、画面で設定を見比べながら…というのも不可能な可能性があります。
ということで、せっかくなのでこの機会にAppRunのアプリケーションをコードで管理してはいかがでしょうか。
apprun-cli でコード化して再現する
apprun-cli は、筆者(fujiwara)が開発し、OSSとして公開しているAppRunのデプロイツールです。AppRunアプリケーションのデプロイ(deployコマンド)はもちろん、存在しているアプリケーションのコード(JSON/Jsonnet)化(init)、デプロイ前の差分確認(diff)、複数バージョンのトラフィック切り替え(traffics)など便利な機能が揃っています。
では早速、アプリケーションをコード化してみましょう。
- インストール方法はドキュメントを参照してください
- 事前に、APIキー を発行し、環境変数
SAKURACLOUD_ACCESS_TOKENとSAKURACLOUD_ACCESS_TOKEN_SECRETに設定してください- アクセスレベルは「アクセス不可」以外を選択してください
- 「AppRun」のアクセス権にチェックを入れてください
apprun-cli init --name アプリケーション名 を実行すると、さくらのクラウド上のAppRunアプリケーションをコード化したJSONが出力されます。
$ apprun-cli init --name example
2025/12/03 21:58:47 INFO initializing app=example
2025/12/03 21:58:48 INFO found id=21f326da-dcc2-406d-ac2e-64b15f641f33
{
"components": [
{
"deploy_source": {
"container_registry": {
"image": "example.sakuracr.jp/example:latest"
"password": null,
"server": "example.sakuracr.jp",
"username": "apprun"
}
},
"env": [],
"max_cpu": "1",
"max_memory": "512Mi",
"name": "example",
"probe": null
}
],
"max_scale": 1,
"min_scale": 0,
"name": "example",
"port": 80,
"timeout_seconds": 300,
"packet_filter": {
"is_enabled": false,
"settings": []
}
}
ファイルにリダイレクトして保存しましょう。ここでは example.json というファイルに書き込んでいます。
$ apprun-cli init --name example > example.json
2025/12/03 21:58:47 INFO initializing app=example
2025/12/03 21:58:48 INFO found id=21f326da-dcc2-406d-ac2e-64b15f641f33
これだけで、AppRunアプリケーションをコード化できました!
ただしコンテナレジストリに認証をかけている(ユーザー名とパスワードで保護している)場合、.components[0].deploy_source.container_registry.password の値が null になっていることに注意してください。これは、AppRunのAPIでは設定されたパスワードを返却しないためです。
{
"components": [
{
"deploy_source": {
"container_registry": {
"image": "example.sakuracr.jp/example:latest"
"password": null, // <--- 本来値が入っているはずだが null
"server": "example.sakuracr.jp",
"username": "apprun"
}
},
デプロイするためには、password にも値を埋める必要があります。認証情報をハードコードするのは望ましくないため、ここでは REGISTORY_PASSWORD という名前の環境変数から値を読むように変更します。
{{ must_env `環境変数名` }}
という記法を使うと、apprun-cli 実行時に環境変数の値を埋め込んでデプロイすることができます。
--- example.json.org 2025-12-03 22:22:17.646741363 +0900
+++ example.json 2025-12-03 22:22:37.497359719 +0900
@@ -4,7 +4,7 @@
"deploy_source": {
"container_registry": {
"image": "fujiwara.sakuracr.jp/printenv:v0.2.3",
- "password": null,
+ "password": "{{ must_env `REGISTRY_PASSWORD` }}",
"server": "fujiwara.sakuracr.jp",
"username": "apprun"
}
実際のアプリケーションと example.json に差異がないかは diff コマンドで確認できます(ただし、パスワードの差分だけは確認できません)。apprun-cli diff --app example.json を実行し、特に差分が表示されなければOKです。
$ apprun-cli diff --app example.json
2025/12/03 22:30:29 INFO loading application file=example.json
2025/12/03 22:30:29 DEBUG fetching list applications page=1
2025/12/03 22:30:30 INFO comparing local=example.json remote=21f326da-dcc2-406d-ac2e-64b15f641f33
別のアプリケーション名でデプロイしてみる
これで正式版リリース後には、apprun-cli deploy --app example.json を実行するだけで、同じアプリケーションが再現できるはずです。
(⚠️ CPU/Memoryの組み合わせについては、CR版までと正式版で利用可能なスペックに変更が行われる予定です。リリース後に ドキュメント を参照して、利用可能な組み合わせに修正してください)
とはいえそれまでに一度も試さないのは不安なので、ここでは example.json 内の name を変更して、「同じ構成の別の名前のアプリケーション」としてデプロイしてみましょう。
以下のように、name を example → example2 に変更します。
--- example.json.org 2025-12-03 22:22:17.646741363 +0900
+++ example.json 2025-12-03 22:33:13.496693806 +0900
@@ -4,7 +4,7 @@
"deploy_source": {
"container_registry": {
"image": "fujiwara.sakuracr.jp/printenv:v0.2.3",
- "password": null,
+ "password": "{{ must_env `REGISTRY_PASSWORD` }}",
"server": "fujiwara.sakuracr.jp",
"username": "apprun"
}
@@ -23,7 +23,7 @@
],
"max_scale": 1,
"min_scale": 0,
- "name": "example",
+ "name": "example2",
"port": 80,
"timeout_seconds": 300,
"packet_filter": {
そして apprun-cli deploy --app example.json を実行すると、example2 という別アプリケーションとしてデプロイできます。(実行前に環境変数 REGISTRY_PASSWORD を設定するのを忘れずに)
$ apprun-cli deploy --app example.json
2025/12/03 22:36:58 INFO loading application file=example.json
2025/12/03 22:36:58 INFO deploying app=example2 allTraffic=true
2025/12/03 22:36:58 INFO creating app=example2
2025/12/03 22:37:00 INFO created id=ff5f653e-9470-4db7-89f2-df38e3f07561
2025/12/03 22:37:01 INFO updated packet filter result="{\"is_enabled\":false,\"settings\":[]}"
apprun-cli status でデプロイされたアプリケーションの状態を確認できます。表示される public_url のURLにアクセスして、同じアプリケーションが動作していることを確認してみてください。コントロールパネルにも、example2 というアプリケーションが表示されているはずです。
$ apprun-cli status --app example.json
2025/12/03 22:38:12 INFO loading application file=example.json
{
"created_at": "2025-12-03T22:37:00.718862+09:00",
"id": "ff5f653e-9470-4db7-89f2-df38e3f07561",
"name": "example2",
"public_url": "https://app-ff5f653e-9470-4db7-89f2-df38e3f07561.ingress.apprun.sakura.ne.jp",
"status": "Healthy"
}
まとめ
- 2025年12月9日、AppRun正式版リリースにともない、現在CR版でデプロイ中のアプリケーションはすべて削除されます(猶予期間はありません)
- 正式版でも引き続き同じアプリケーションをデプロイしたい場合、事前にコード化しておくことをお勧めします
- apprun-cli を使うと、簡単に既存アプリケーションをコード化し、設定変更や作り直しを簡単に行えます。どうぞご利用ください
Discussion