※Azure Container Apps のボリューム マウント機能について、この投稿時点ではパブリック プレビューでの提供となっています。そのため、一般提供 (GA) のタイミングで手順や挙動が変更になる場合があります。
Build 2022 に GAした「Azure Container Apps (ACA)」について、Azure Container Instances や Azure App Service for container のように Azure Files を用いてボリュームとしてマウント、永続ストレージとして使用できる機能がパブリック プレビューで公開されています。
ACA で永続ストレージが利用できることで、同一のコンテナー アプリ環境上に存在する他の ACA や他のシステムからデータをアクセスすることが可能になるため、この機能について試した結果を纏めました。
Azure Files を用いたボリューム マウント機能について
Azure Files を用いたボリューム マウント機能は、コンテナー アプリ環境と Azure Files をストレージ アカウント キーを用いて接続した後で、ACA でマウントする形となります。
また、Azure Files に接続する際にはアクセス モード (ReadWrite/ReadOnly) 設定を行うことができるようになっています。
なお Microsoft Docs 上では Azure CLI および ARM Template から設定、デプロイすることが可能となっていますが、bicep からでも可能であることを確認しています。
bicep から設定する場合は、以下のテンプレート情報を確認してください。
resource symbolicname 'Microsoft.App/managedEnvironments/storages@2022-03-01' = { ... properties: { azureFile: { accessMode: 'string' accountKey: 'string' accountName: 'string' shareName: 'string' } } }
resource symbolicname 'Microsoft.App/containerApps@2022-03-01' = { ... properties: { ... template: { containers: [ { ... volumeMounts: [ { mountPath: 'string' volumeName: 'string' } ] } ] ... } } }
Azure Files の前提について
- SKU : Standard (汎用v2)、Premium (File Storage) どちらも使用可能
- プロトコル : SMB のみ、NFS は使用不可
- 接続 : ストレージ アカウント キーのみ
確認結果
どのコンテナー アプリ環境 (カスタム VNet なし/カスタム VNet あり (内部)/カスタム VNet あり (外部)) についても、Azure Files を用いたボリューム マウント機能は利用可能であることを確認できました。
なお、どのコンテナー アプリ環境でもストレージ アカウントのパブリック IP からアクセスされているように見受けらたのは気になりました。
※ストレージのファイアウォール機能を使っても制限できていないように見えました (なぜか接続できてしまう)。
GA 時には直るかなぁ
カスタム VNet なし
カスタム VNet あり (内部)
カスタム VNet あり (外部)
パフォーマンスについて
どのコンテナー アプリ環境 (カスタム VNet なし/カスタム VNet あり (内部)/カスタム VNet あり (外部))であったり、ストレージ アカウントの SKU (Standard (汎用v2, トランザクション最適化)/Premium (File Storage, Premium)) でパフォーマンスに違いがあるかどうかについては、確認する限りではあまり見受けられませんでした。
※100 MiB のファイルの読み書きを実施
インスタンス リソースが低かった (コア数 : 0.25, メモリ : 0.5 GiB) ということもあるかもしれませんが、実際の運用に影響があるかどうかについては、自分の目で確かめてくれ! (小並感