🌸

さくらのAppRun正式版がリリースされる、その前に

に公開

簡単にアプリケーションをデプロイできるコンテナ実行環境、さくらのAppRun正式版リリースが2025年12月9日に迫っています。

https://cloud.sakura.ad.jp/news/2025/11/07/apprun-service-release/

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

このお知らせを見ていただくと分かるとおり、これまでβ版、CR版をご利用中で正式版リリース後も引き続きご利用になりたい場合は、大事な注意点があります。

・β版及びCR版サービスにて作成されたアプリケーションはすべて削除されます。
・コンテナレジストリサービスに保存されているイメージは削除されません。お手数ですが、正式サービス化以降に必要なアプリケーションは再度作成をお願いします。
・正式サービス化以降に作成されたアプリケーションの公開URLは、β版及びCR版サービスにて作成されたアプリケーションの公開URLと同一とすることはできません。

2025年12月9日のリリース時点で、現在デプロイされているアプリケーションはすべて削除されてしまいます! (猶予期間はありません)。

コンテナイメージは削除されないため、同じ設定で正式版リリース後にデプロイし直せば、(URLは変わってしまうものの)引き続き同じアプリケーションを実行することができます。

⚠️ CPU/Memoryの組み合わせについては、CR版までと正式版で利用可能なスペックに変更が行われる予定です。リリース後に ドキュメント を参照してください

正式版リリース後も同じアプリケーションをデプロイするためには?

AppRun のアプリケーションを、公式の Terraform provider や、拙作の apprun-cli で管理している場合は、デプロイし直すだけで同じアプリケーションを作り直せます。Infrastructure as Code (IaC)、素晴らしいですね。

もしコントロールパネルから作成していた、という場合、同じ設定を記憶を元に再現するのは大変です。アプリケーションは正式版リリースの直前に削除されてしまう可能性があるため、画面で設定を見比べながら…というのも不可能な可能性があります。

ということで、せっかくなのでこの機会にAppRunのアプリケーションをコードで管理してはいかがでしょうか。

apprun-cli でコード化して再現する

https://github.com/fujiwara/apprun-cli

apprun-cli は、筆者(fujiwara)が開発し、OSSとして公開しているAppRunのデプロイツールです。AppRunアプリケーションのデプロイ(deployコマンド)はもちろん、存在しているアプリケーションのコード(JSON/Jsonnet)化(init)、デプロイ前の差分確認(diff)、複数バージョンのトラフィック切り替え(traffics)など便利な機能が揃っています。

では早速、アプリケーションをコード化してみましょう。

  • インストール方法はドキュメントを参照してください
  • 事前に、APIキー を発行し、環境変数 SAKURACLOUD_ACCESS_TOKENSAKURACLOUD_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 を変更して、「同じ構成の別の名前のアプリケーション」としてデプロイしてみましょう。

以下のように、nameexampleexample2 に変更します。

--- 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