VNET統合したAzure StorageをAzure App Serviceへマウントしてみる

2021.09.19

いわさです。

Azure App Service on Linux へAzureストレージをマウント出来るようになったので先日ためしました。

手持ちのストレージアカウントの中で、プライベートエンドポイントを設定しファイアウォールでVNETを制限したストレージアカウントがあったので、同じようにストレージマウントを使うことが出来るのか気になったので試してみました。

プライベートエンドポイント未設定ストレージをマウント

まずは先日の記事と同様にファイル共有ストレージをマウントします。

  _____
  /  _  \ __________ _________   ____
 /  /_\  \___   /  |  \_  __ \_/ __ \
/    |    \/    /|  |  /|  | \/\  ___/
\____|__  /_____ \____/ |__|    \___  >
        \/      \/                  \/
A P P   S E R V I C E   O N   L I N U X

Documentation: http://aka.ms/webapp-linux
PHP quickstart: https://aka.ms/php-qs
PHP version : 8.0.3
Note: Any data outside '/home' is not persisted
root@f4e61f555773:/home# df -h
Filesystem                                                                             Size  Used Avail Use% Mounted on
none                                                                                    48G   29G   18G  63% /
tmpfs                                                                                   64M     0   64M   0% /dev
tmpfs                                                                                  962M     0  962M   0% /sys/fs/cgroup
shm                                                                                     62M     0   62M   0% /dev/shm
//10.0.160.13/volume-21-default/0f8fe6f23edb9b23a3f4/18434a78ccb34dbf9debba5f346d1de8 1000G   16G  985G   2% /home
/dev/sda1                                                                               62G   40G   23G  64% /var/ssl
//iwasastorage20210908.file.core.windows.net/iwasafiles                                5.0T     0  5.0T   0% /hogemnt
/dev/loop0p1                                                                            48G   29G   18G  63% /etc/hosts
udev                                                                                   944M     0  944M   0% /dev/tty
tmpfs                                                                                  962M     0  962M   0% /proc/acpi
tmpfs                                                                                  962M     0  962M   0% /proc/scsi
tmpfs                                                                                  962M     0  962M   0% /sys/firmware
root@f4e61f555773:/home#

マウント後、試しにファイルを作成してみましょう。

root@f4e61f555773:/home# cd /hogemnt/
root@f4e61f555773:/hogemnt# touch hoge.txt

作成されていますね。

ストレージにプライベートエンドポイントを設定する

では、作成されたストレージにプライベートエンドポイントの設定をしていきたいと思います。

まずは、事前にVNETを作成しておきましょう。
プライベートエンドポイントで作成したVNETを設定します。

ファイアウォールで作成したVNETを選択しておきます。

確認してみましょう。

Last login: Wed Sep  8 14:51:35 2021 from 172.16.0.3
  _____
  /  _  \ __________ _________   ____
 /  /_\  \___   /  |  \_  __ \_/ __ \
/    |    \/    /|  |  /|  | \/\  ___/
\____|__  /_____ \____/ |__|    \___  >
        \/      \/                  \/
A P P   S E R V I C E   O N   L I N U X

Documentation: http://aka.ms/webapp-linux
PHP quickstart: https://aka.ms/php-qs
PHP version : 8.0.3
Note: Any data outside '/home' is not persisted
root@f4e61f555773:/home# df -h
Filesystem                                                                             Size  Used Avail Use% Mounted on
none                                                                                    48G   29G   18G  63% /
tmpfs                                                                                   64M     0   64M   0% /dev
tmpfs                                                                                  962M     0  962M   0% /sys/fs/cgroup
shm                                                                                     62M     0   62M   0% /dev/shm
//10.0.160.13/volume-21-default/0f8fe6f23edb9b23a3f4/18434a78ccb34dbf9debba5f346d1de8 1000G   16G  985G   2% /home
/dev/sda1                                                                               62G   40G   23G  64% /var/ssl
/dev/loop0p1                                                                            48G   29G   18G  63% /etc/hosts
udev                                                                                   944M     0  944M   0% /dev/tty
tmpfs                                                                                  962M     0  962M   0% /proc/acpi
tmpfs                                                                                  962M     0  962M   0% /proc/scsi
tmpfs                                                                                  962M     0  962M   0% /sys/firmware
root@f4e61f555773:/home# cd /hogemnt
root@f4e61f555773:/hogemnt# ls
ls: reading directory '.': Host is down

見えなくなりました!

App ServiceをVNET統合させる

App Serviceを先程作成したVNETへ接続します。

App Serviceのサブネットをストレージ側のファイアウォールに追加します。

もう一度マウント状況を確認してみます。

  _____
  /  _  \ __________ _________   ____
 /  /_\  \___   /  |  \_  __ \_/ __ \
/    |    \/    /|  |  /|  | \/\  ___/
\____|__  /_____ \____/ |__|    \___  >
        \/      \/                  \/
A P P   S E R V I C E   O N   L I N U X

Documentation: http://aka.ms/webapp-linux
PHP quickstart: https://aka.ms/php-qs
PHP version : 8.0.3
Note: Any data outside '/home' is not persisted
root@eb0482ef40b3:/home# df -h
Filesystem                                                                             Size  Used Avail Use% Mounted on
none                                                                                    48G   29G   18G  63% /
tmpfs                                                                                   64M     0   64M   0% /dev
tmpfs                                                                                  1.7G     0  1.7G   0% /sys/fs/cgroup
shm                                                                                     62M     0   62M   0% /dev/shm
/dev/sda1                                                                               62G   40G   23G  64% /var/ssl
//iwasastorage20210908.file.core.windows.net/iwasafiles                                5.0T     0  5.0T   0% /iwasafiles
//10.0.160.13/volume-21-default/0f8fe6f23edb9b23a3f4/9346e322652d4b37aa2faeea5317c539 1000G   16G  985G   2% /home
/dev/loop0p1                                                                            48G   29G   18G  63% /etc/hosts
udev                                                                                   1.7G     0  1.7G   0% /dev/tty
tmpfs                                                                                  1.7G     0  1.7G   0% /proc/acpi
tmpfs                                                                                  1.7G     0  1.7G   0% /proc/scsi
tmpfs                                                                                  1.7G     0  1.7G   0% /sys/firmware
root@eb0482ef40b3:/home# nslookup iwasastorage20210908.file.core.windows.net
Server:         127.0.0.11
Address:        127.0.0.11#53

Non-authoritative answer:
iwasastorage20210908.file.core.windows.net      canonical name = iwasastorage20210908.privatelink.file.core.windows.net.
Name:   iwasastorage20210908.privatelink.file.core.windows.net
Address: 10.0.0.4

root@eb0482ef40b3:/home# cd /iwasafiles/
root@eb0482ef40b3:/iwasafiles# ls
hoge.txt
root@eb0482ef40b3:/iwasafiles# touch hoge2.txt
root@eb0482ef40b3:/iwasafiles#

プライベートIPアドレスで名前解決出来ています。
プライベートエンドポイントを経由してストレージへ接続出来ていそうですね。

まとめ

ストレージマウント機能について、VNET構成の場合でもうまく接続出来るのか気になったので試してみましたが、問題なく接続することが出来ました。