最近は仕事で ASE を使ったりしていて、ここしばらく更新が無いと思っていたら、かなり大きなアップデートがやってきました。ARM な VNET へのデプロイと ILB への対応です。
ARM な VNET へのデプロイは置いといて、ILB への対応で完全に VNET 内からしかアクセスが出来ない Web Apps を作成できるようになりました。エンプラ向きな感じで、社内ポータルやアプリケーションを ASE に構築して、ExpressRoute でインターネット経由せずにアクセスとか出来ます。
内部 IP から ASE にアクセスを昔試したことがありましたが、公式サポートされたということで、実際に試してみることにしました。ASE は高いので検証が地味に大変です。
ASE を ILB 付きで作成
ドキュメントにある VNET Configuration ですが、サブスクリプションに VNET が最低でも 1 つ存在しないと出てこないというのが地味に罠っぽかったです。仕方ないので予め VNET を作っておきました、
追加された VNET Configuration を開くと VIP Type を External と Internal から選択できます。External がこれまで ASE で対応していたもので、Internal が ILB を使う設定になります。
Internal を選ぶとサブドメインを求められるので、適当に入れておきます。ここで入力したサブドメインが ASE 全体で使われるものになります。
設定を保存すると、ASE の Name 部分に表示されていたサブドメインが p.azurewebsites.net から、入力したサブドメインに変わっていることが分かります。
これで作成準備が完了したので、実際に ASE を作成します。2 時間ほどかかるので、気長に待ちましょう。
ILB に証明書を設定
ASE の作成が完了すると、ブレードが開けるようになってます。開くと上の方に ILB に Certificate が必須という警告が出ているので、自己証明書を作成してアップロードします。
この設定を行っておかないと HTTPS での通信に問題が出ます。
自己証明書は makecert を使ってワイルドカードとして作成しました。最終的にアップロードするのは PFX ファイルになるので、適切に変換しておく必要があります。
上の画像では *.ilbase-test.jp 向けにしか用意していないですが、Kudu へのアクセスには *.scm.ilbase-test.jp 向けの証明書が必要になるので、その点だけ注意しておきたいです。
証明書のアップロードを行うと、設定の完了までに少し時間がかかります。Scale Operation という表現だったので、最初に見た時にはに少し驚きました。
ちなみに ASE のプロパティを開くと VIP と Outbound IP を確認できるので、この 2 つを利用して DNS の設定と NSG の設定を行えるようになっています。VIP は ILB のアドレスを指しています。
ここまでの設定を行うと、やっと Web Apps を作成できる状態となります。
ASE 上に Web Apps を作成する
Web Apps の作成自体はこれまでと変わらずですが、App Service Plan を作成するときに Location として作成した ASE を選択します。
ちゃんとホスト名が ASE で設定したものになっていることが、ここでも確認できます。
Web Apps の作成が終わると URL が表示されますが、今回の ASE は Internal 専用なので、当然ながらインターネットから URL を叩いても表示されません。
したがって確認をするためには VNET に参加した仮想マシンから行います。ちなみに ASE と同じサブネットに VM を追加してしまうと通信が出来なくなるので、別のサブネットを作って参加するようにします。*1
まずは動作確認なので hosts ファイルに VIP とホスト名を追加して試します。
10.0.0.8 kosmosebi.ilbase-test.jp
後はブラウザから URL を叩いて、いつも通りの Web Apps デフォルトのページが表示されたら動作確認は完了です。HTTPS での接続は VM に証明書をインストールしておけば、エラーは出なくなります。
HTTP / HTTPS の両方でページが表示されました。ASE の作成に時間はかかりますが、ここまでほぼポータルだけの作業で完了するのが Azure の特徴という感じですね。
VNET に DNS サーバーを追加する
VNET に参加しているマシンから ASE 上の Web Apps に簡単にアクセスするためには、DNS サーバーを追加していくつかの A レコードを設定する必要があります。今回の場合だと、以下の 4 つを追加します。
- *.ilbase-test.jp
- *.scm.ilbase-test.jp
- ftp.ilbase-test.jp
- publish.ilbase-test.jp
今回は簡単に Windows Server の DNS サーバー機能を使って、A レコードの追加を行いました。
このサーバーを DNS として設定すると、VNET に接続した別のマシンからでも ASE 上の Web Apps にそのままアクセスできるようになります。結構ネットワークの知識が要求される感じです。
ここまで行って、やっと ASE をイントラ向けアプリケーション向けに使えるようになります。
中身は Web Apps と全く同じなので Visual Studio や Git を使ったデプロイなど、同じように行えるのが最大のメリットですね。少し高いですがオンプレの管理をするよりお得だと思います。