技術部システム開発課の蔵坪と申します。
弊社では、2022年4月より利用拠点とクラウド間を閉域ネットワークで接続するサービス「AcroBiz Cloud Connect(アクロビズ クラウド コネクト)」を提供しております。
今回、AcroBiz Cloud Connect(クラウド閉域ネットワーク接続サービス)を利用し、オンプレミスのGitLabサーバからAzureのApp Serviceへのデプロイを試してみました。
AcroBiz Cloud Connectとは
2022年4月より弊社で提供している利⽤拠点とクラウド間のネットワークを閉域で接続するサービスです。
Azure App Serviceとは
Microsoftが提供しているAzureのPaaS (Platform-as-a-service) の一つです。
今回の検証した構成
注意点
オンプレミスとAzureのクラウドの環境を専用線で接続するために、ExpressRoute サービス(Azure への専用プライベート ネットワーク ファイバー接続)が必要になりますが、今回はExpressRouteサービスが既に存在している(Azureと閉域接続が完了している)前提での検証になります。
Webアプリの作成
Azureポータルにログインし、App Serviceのトップから、作成をクリックします。
情報を入力し、作成します。
作成されたリソースの概要にアクセスし、URLに記載されているアドレスをクリックするとApp Serviceの初期ページが表示されます。
https://synapse-crm-test.azurewebsites.net/
この時点では、インターネットを経由したアクセスになります。
ネットワークの設定
App Serviceのリソースのネットワーク画面を開き、VNET統合をクリックします。
VNETの追加をクリックします。
情報を入力し、VNET統合を作成します。
次にプライベートエンドポイント追加します。
App Serviceのネットワークにアクセスし、プライベートエンドポイントをクリックします。
追加をクリックします。
情報を入力し、プライベートエンドポイントを作成します。この時、選択するサブネットは、オンプレミスと接続している仮想ネットワークで、サブネットを用意しておく必要があります。
この時点で、App Serviceのエンドポイント(受付)がプライベートIPアドレスになり、インターネット上からアクセスできなくなります。
概要にアクセスし、URLに記載されているアドレスをクリックします。403のForbiddenページが表示され、アクセスできません。
オンプレミス環境からはアクセスするためには、PCのhostsファイルに以下の記述が必要になります。
10.XXX.XXX.XXX synapse-crm-test.azurewebsites.net synapse-crm-test.scm.azurewebsites.net
オンプレミス環境からアクセスできるようになりました。
デプロイ
弊社は、オンプレミスのGitLabサーバを利用しておりますので、今回、App Serviceから、GitLabのURLを直接指定して、デプロイしてみます。
Privateリポジトリなので、事前に対象プロジェクトでデプロイトークン(read_repository)を発行しておきます。
デプロイトークンの発行手順は、以下をご確認ください。
リポジトリのURLは以下の形式になります。
https://デプロイユーザ:デプロイトークン@オンプレのGitLabサーバのホスト名/HTTPのクローン用のアドレス
ホスト名がオンプレミスのホスト名になっておりますが、こちらは、仮想ネットワークの設定で、オンプレミス環境のDNSサーバを参照しているため、App Serviceから名前解決ができます。
デプロイセンターにアクセスし、情報を入力し、保存をクリックします。
しばらく待つと、デプロイが完了します。
無事、オンプレミス環境からASP.NET COREのサンプルアプリページがが見れるようになりました。
DNSの状態について
この時点で、DNSの名前解決は以下になっております。
場所 | ホスト | IPアドレス |
---|---|---|
インターネット上からの名前解決 | synapse-crm-test.azurewebsites.net | 20.XXX.XXX.XXX |
オンプレミス環境からの名前解決 | synapse-crm-test.azurewebsites.net | 20.XXX.XXX.XXX |
どちらもグローバルのIPアドレスが返ってきます。
プライベートエンドポイントを作成する際に、プライベートDNSゾーン統合するで「はい」を選択したので、プライベートDNSサービスにprivatelink.azuruwebsites.netのゾーンが自動的に作成されおり、そちらでは、ローカルIPが設定されています。
プライベート DNSは、仮想ネットワークに属しているAzure内のリソース(VM等)からしか利用できません。この状態では、オンプレミス環境からApp Serviceにアクセスするためには、端末のhostsファイルにIPアドレスを記載するか手段がありません。
今回、検証できませんでしたが、hostsファイル無しで、オンプレミス環境から名前解決をしたい場合、Azure DNS Private Resolverサービスを利用することが一番手軽そうでした。
さいごに
今回の検証にあたって、DNS部分のところが、なかなか仕組みが理解できず、調査に時間がかかりましたが、それ以外のところについては、あまり悩まずに簡単に作業できました。
運用するためには、まだまだハードルがあると思いますが、一つ一つ解決していきたいと思います。