如何在 Azure Spring Apps 中启用自己的持久性存储
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。
本文介绍了如何在 Azure Spring Apps 中启用自己的持久性存储。
在 Azure Spring Apps 中使用内置持久性存储时,应用程序生成的项目将上传到 Azure 存储帐户。 Microsoft 将控制这些项目的静态加密和生存期管理策略。
使用自己的持久性存储时,应用程序生成的项目将上传到你控制的存储帐户中。 你将控制静态加密策略、生存期管理策略和网络访问。 你需支付与该存储帐户相关的费用。
先决条件
- 现有 Azure 存储帐户和现有 Azure 文件共享。 如果要在 Azure 中创建存储帐户和文件共享,请参阅创建 SMB Azure 文件共享。
- Azure CLI 2.45.0 或更高版本。
重要
如果在自己的虚拟网络中部署了 Azure Spring Apps,并且希望只能从虚拟网络访问存储帐户,请参阅为 Azure 存储使用专用终结点和配置 Azure 存储防火墙和虚拟网络的允许从虚拟网络进行访问部分。
将自己的额外持久存储装载到应用程序
注意
更新持久性存储会重启应用程序。
使用虚拟网络集成时,请确保端口 80 和 445 处于打开状态。
使用以下步骤,将 Azure 存储帐户绑定为 Azure Spring Apps 中的存储资源,并利用自己的永久性存储创建应用。
转到服务“概述”页,然后选择左侧导航窗格中的“存储”。
在“存储”页上,选择“添加存储”。
在“添加存储”页上输入以下信息,然后选择“应用”。
设置 值 存储名称 存储资源的名称是 Azure Spring Apps 中的服务级别资源。 帐户名 存储帐户的名称。 帐户密钥 存储帐户密钥。 转到“应用”页,然后选择一个应用程序来装载持久性存储。
选择“配置”,然后选择“持久性存储”。
选择“添加持久性存储”。 添加下表中的值,然后选择“应用”。
设置 值 存储名称 前面输入的存储资源的名称。 永久性存储类型 AzureFileVolume 共享名 Azure 存储帐户中 Azure 文件共享的名称。 “装载路径” 独一无二的装载路径。 装载选项 可选 只读 可选 选择“保存”以应用配置更改。
最佳做法
在将自己的持久性存储添加到 Azure Spring Apps 时,请使用以下最佳做法。
要避免潜在的延迟问题,可将 Azure Spring Apps 实例和 Azure 存储帐户放在同一 Azure 区域。
在 Azure 存储帐户中,避免重新生成所使用的帐户密钥。 存储帐户包含两个不同的密钥。 通过分步方法确保在重新生成密钥期间,持久性存储仍可供应用程序使用。
例如,如果已使用密钥 1 将存储帐户绑定到 Azure Spring Apps,请使用以下步骤确保持久性存储仍然可用。
- 重新生成“密钥 2”。
- 更新存储资源的帐户密钥以使用重新生成的密钥 2。
- 重启从此存储资源装载持久性存储的应用程序。 使用
az spring storage list-persistent-storage
命令列出所有相关应用程序。 - 重新生成“密钥 1”。
如果删除 Azure 存储帐户或 Azure 文件共享,请删除应用程序中的相应存储资源或持久性存储,以避免出现错误。
如果要将文件写入每个单独的应用程序实例的相同路径,但将它们保存在单独的子目录中(从文件共享的角度来看),则可使用“SubPath”选项。 请注意,“SubPath”选项与“只读”不兼容,因为“SubPath”用于写入新文件,而“只读”用于读取现有文件。
常见问题
本部分解决了有关在 Azure Spring Apps 中使用自己的持久性存储的常见问题。
如果我启用了内置持久性存储,然后又启用了自己的存储作为额外的持久性存储,我的数据是否会迁移到我的 Azure 存储帐户中?
不能。 但是,我们将提供一份文档来帮助你尽快自己进行迁移。
保留的装载路径是什么?
Azure Spring Apps 保留以下装载路径:
- /tmp
- /persistent
- /secrets
- /app-insights/agents
- /etc/azure-spring-cloud/certs
- /app-insights/agents/settings
- /app-lifecycle/settings
可用的装载选项是什么?
我们目前支持以下装载选项:
uid
gid
file_mode
dir_mode
mountOptions
属性为可选。 这些装载选项的默认值为:["uid=0", "gid=0", "file_mode=0777", "dir_mode=0777"]我正在使用服务终结点将存储帐户配置为仅允许从我自己的虚拟网络进行访问。 为什么我在尝试将自定义持久性存储装载到我的应用程序时收到“权限被拒绝”错误?
服务终结点仅在子网级别提供网络访问。 请确保已将 Azure Spring Apps 实例使用的两个子网添加到服务范围终结点。