🐕

AppRun専有型にて、プライベートネットワークでアプリケーションコンテナを起動する

に公開

先日さくらインターネットにて、コンテナデプロイサービスAppRun専有型がリリースされました。
本サービスにおいて、プライベートネットワークにて動作するコンテナをデプロイする手順を記載します。

AppRun専有型とは

マニュアルより抜粋

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

構成図

alt text

手順

コンテナイメージの準備

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

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

イメージには今回こちらを使います。
イメージをビルドし、レジストリにpushします。

docker build -t apprun-http-test.sakuracr.jp/debug-httpd:latest 
docker push apprun-http-test.sakuracr.jp/debug-httpd:latest

サービスプリンシパルの準備

クラスタ作成時に指定するサービスプリンシパルを作成します。
このサービスプリンシパルを用いてコンテナが動作するVMを起動します。

サービスプリンシパルタブにて、サービスプリンシパルの作成をクリック
alt text
サービスプリンシパル名を入力し、作成をクリック
alt text

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

SEGの準備

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

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

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

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

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

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

クラスタの作成

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

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

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

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

オートスケーリンググループの作成

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

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

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

作成をクリックし、しばらくするとワーカノードが起動します。
alt text
これにてプライベートネットワークにてワーカノードが起動しました。

ロードバランサの作成

次はロードバランサを作成します。オートスケーリンググループ画面から、ロードバランサを追加をクリックします。
alt text

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

アプリケーションの作成

ここからはワーカノード上で動くアプリケーションを作成します。
アプリケーションを追加をクリックします。
alt text
アプリケーション名を入力し、作成するをクリックします。
alt text
アプリケーションが作成されました。
alt text

アプリケーションバージョンの作成

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

バージョン情報を入力します。
イメージには先ほどpushしたイメージを指定します。
alt text
また、ロードバランサを利用する設定にしています。
alt text
作成をクリックします。これでアプリケーションバージョンが作成されます。
作成したバージョンをアクティブに変更します。
alt text

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

動作確認

実際にロードバランサにアクセスしてリクエストしてみます。
今回はAレコードの設定をしていないので、IPを直接指定してリクエストします。
ロードバランサノードのIPは、ロードバランサの詳細ページに記載されています。
alt text
リクエストすると、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
<

参考資料

https://manual.sakura.ad.jp/cloud/manual-apprun-dedicated.html
https://manual.sakura.ad.jp/cloud/network/switch/seg.html
https://manual.sakura.ad.jp/cloud/appliance/container-registry/index.html

さくらインターネット株式会社

Discussion