Azure Container Apps で Azure Files ボリュームをマウントする
概要
Azure Container Apps におけるストレージ マウントには、以下の種類があります。
- エフェメラル ストレージ
- コンテナー スコープのストレージ
- レプリカ スコープのストレージ
- Azure Files ボリューム
1 つ目のエフェメラル ストレージは、その名前の通りなのですが一時的なものになります。
一方で、2 つ目の Azure Files ボリュームは永続的なものであり、別のレプリカ、リビジョン、コンテナー アプリにて同じファイル共有をマウントする事も可能です。詳細についてはこちらの公式ドキュメントに記載がありますが、今回は実際に、Azure Files ボリュームのマウントを行ってみます。
詳細
Step 1 - Container Apps 環境にストレージ定義を作成する
事前に使用するストレージ アカウントにファイル共有を作成しておきます。今回は、acashare001 という名の ファイル共有を作成しました。
Conatiner Apps 環境にストレージ定義を作成します。
--azure-file-share-name
には、上記ストレージ アカウントで作成したファイル共有名を指定します。
また、--storage-name
には、Container Apps 環境における任意の定義名をつけます。今回は mystorage001 にします。
az containerapp env storage set --name <Container Apps 環境名> --resource-group <リソース グループ名> --storage-name <Container Apps 環境での任意の定義名> --azure-file-account-name <ストレージ アカウント名> --azure-file-account-key <ストレージ アカウントのキー> --azure-file-share-name <ストレージ アカウントに作成したファイル共有名> --access-mode ReadWrite
ポータルで Container Apps 環境の Azure Files ブレードを確認すると、作成した構成を確認する事ができます。(定義はポータル上で作成する事も可能です)
Step 2 - Azure Files ボリュームをマウントするようにコンテナー アプリを構成する
アプリ コンテナーリソースについて YAML 定義を使って更新しますが、まず、yaml ファイルに現在のアプリの仕様をエクスポートします。
az containerapp show -n <コンテナー アプリ名> -g <リソース グループ名> -o yaml > app.yaml
そして、mount volume に関する点を修正します。
今回は以下のように編集しています。編集が終わったら保存し、更新した内容を反映させます。
Tips:
以下は名前を一致させます。今回は myvolume にしています。
volumeMounts:
- volumeName: myvolume
volumes:
- name: myvolume
また、storageName は、Conatiner Apps 環境で定義したものをセットします。
今回は、mystorage001 です。
storageName: mystorage001
編集した yaml ファイルでコンテナー アプリを更新します。
az containerapp update --name <コンテナー アプリ名> --resource-group <リソースグループ名> --yaml app-updated.yaml
Step 3 - 設定の反映と実際にマウントできている事を確認する
設定した内容は、以下の通りコンテナーアプリのコンテナー ブレードにて、ボリューム マウント タブを開き確認できます。
コンテナー アプリのコンソールから実際に df -h
で確認した結果は以下の通りです。
まとめ
上記の通り Container Apps 環境に定義を作成し、その後個別のアプリ コンテナーリソースについて YAML 定義を使って更新する事で、簡単に Azure Files ボリュームをマウントする事ができました。ぜひ利用してみてください。
以下公式ドキュメントも参考になると思いますので、記載しておきます。
Discussion