💨

Azure Container Apps で Azure Files ボリュームをマウントする

2023/12/24に公開

概要

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 ボリュームをマウントする事ができました。ぜひ利用してみてください。
以下公式ドキュメントも参考になると思いますので、記載しておきます。

https://learn.microsoft.com/ja-jp/azure/container-apps/storage-mounts-azure-files?tabs=bash

Discussion