AppRun専有型にて、プライベートネットワークでアプリケーションコンテナを起動する
先日さくらインターネットにて、コンテナデプロイサービスAppRun専有型がリリースされました。
本サービスにおいて、プライベートネットワークにて動作するコンテナをデプロイする手順を記載します。
AppRun専有型とは
マニュアルより抜粋
AppRun専有型は、コンテナを共用ホスト上の専有VMにデプロイするサービスです。トラフィックの変動や高負荷時でも性能の維持が可能です。自動スケール、負荷分散、ヘルスチェックにより効率的で安定した運用を実現します。高い可用性と構成管理の自動化、専有の実行環境がクラウドネイティブなアプリケーション運用をシンプルにします。
https://cloud.sakura.ad.jp/products/apprun-dedicated/
構成図

手順
コンテナイメージの準備
プライベートネットワークにてコンテナを立ち上げる場合は、さくらのコンテナレジストリにイメージをpushしておく必要があります。
コンテナレジストリタブにて、追加をクリックします。

コンテナレジストリ名を入力し、作成をクリックします。

イメージには今回こちらを使います。
イメージをビルドし、レジストリにpushします。
docker build -t apprun-http-test.sakuracr.jp/debug-httpd:latest
docker push apprun-http-test.sakuracr.jp/debug-httpd:latest
サービスプリンシパルの準備
クラスタ作成時に指定するサービスプリンシパルを作成します。
このサービスプリンシパルを用いてコンテナが動作するVMを起動します。
サービスプリンシパルタブにて、サービスプリンシパルの作成をクリック

サービスプリンシパル名を入力し、作成をクリック

作成したサービスプリンシパルにアクセス権を付与します。
IAMポリシータブにてアクセス権の付与をクリックします。

先ほど作成したサービスプリンシパルを選択します。

さくらのクラウド>作成・削除を選択します。
これにてサービスプリンシパルにアクセス権を付与できました。

SEGの準備
サービスエンドポイントゲートウェイ(SEG)を有効化したスイッチを作成します。
SEGとは、さくらのクラウドが提供しているマネージドサービス(ex. AppRun専有型)へ安全にプライベートネットワーク経由で接続できるようにする「スイッチ」の拡張機能です。
まず、スイッチを作成します。追加をクリックします。

名前を入力し、作成をクリックします。

スイッチ一覧にて作成したスイッチを選択し、サービスエンドポイントゲートウェイタブで有効化をクリックします。

IPv4アドレスとネットマスクを入力し、有効化をクリックします。

SEGが有効化されました。接続先マネージドサービスの変更をクリックします。

コンテナレジストリ欄に先ほど作成したレジストリを入力します。また、AppRun専有型コントロールプレーンにチェックをいれ、変更をクリックします。
これでこのスイッチを通してAppRun専有型のコントロールプレーンおよび指定したコンテナレジストリに接続できるようになります。

クラスタの作成
AppRun専有型のコンパネに移動します。
クラウドホームから移動できます。

まずクラスタを作成します。クラスタを追加をクリックします。

各項目を入力します。サービスプリンシパルには先ほど作成したサービスプリンシパルを選択し、作成をクリックします。

クラスタが作成されました。

オートスケーリンググループの作成
次はクラスタ内にオートスケーリンググループを作成します。
オートスケーリンググループを追加をクリックします。

ゾーンはスイッチを作成したゾーンを指定してください。

NIC設定のアップストリームで、SEGを有効化したスイッチを選択します。
また、サブネットマスク、デフォルトゲートウェイにはSEGの設定画面で設定したネットマスク、IPv4アドレスを入力します。

作成をクリックし、しばらくするとワーカノードが起動します。

これにてプライベートネットワークにてワーカノードが起動しました。
ロードバランサの作成
次はロードバランサを作成します。オートスケーリンググループ画面から、ロードバランサを追加をクリックします。

ロードバランサの設定を入力します。
今回はロードバランサのeth0は共有セグメントに接続し、eth1はSEGを有効化したスイッチを選択します。
これにてロードバランサノードとワーカノードがネットワーク上で接続することになります。

作成をクリックすることで、ロードバランサノードが作成されます。

アプリケーションの作成
ここからはワーカノード上で動くアプリケーションを作成します。
アプリケーションを追加をクリックします。

アプリケーション名を入力し、作成するをクリックします。

アプリケーションが作成されました。

アプリケーションバージョンの作成
次はアプリケーションバージョンを作成します。
バージョンを追加をクリックします。

バージョン情報を入力します。
イメージには先ほどpushしたイメージを指定します。

また、ロードバランサを利用する設定にしています。

作成をクリックします。これでアプリケーションバージョンが作成されます。
作成したバージョンをアクティブに変更します。

しばらくすると、稼働コンテナ数が1になります。

動作確認
実際にロードバランサにアクセスしてリクエストしてみます。
今回はAレコードの設定をしていないので、IPを直接指定してリクエストします。
ロードバランサノードのIPは、ロードバランサの詳細ページに記載されています。

リクエストすると、200が返却され、アプリケーションが動作していることが確認できました。
> curl -v 'http://xxx.xx.xxx.xx' -H "Host:appruntest.example.com"
* Trying xxx.xx.xxx.xx:80...
* Connected to xxx.xx.xxx.xx (xxx.xx.xxx.xx) port 80 (#0)
> GET / HTTP/1.1
> Host:appruntest.example.com
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Content-Length: 760
< Content-Type: application/json
< Date: Mon, 15 Dec 2025 07:39:36 GMT
<
参考資料
Discussion