Azure Container Apps 容器重启问题解析
在监控 Azure Container Apps 的 Replica Count 副本数量时,发现指标出现了异常波动——这一现象通常表明容器实例触发了自动重启。

那么,究竟是什么原因导致了 Azure Container Apps 中的容器重启行为呢?
Azure Container Apps 重启原因与 Key Vault 机密更新机制
答案隐藏在 Azure Container Apps 的诊断日志之中。具体而言,在 ContainerAppSystemLogs_CL 系统日志表中,可以检索到名为 RevisionRestartWithNewSecrets 的事件记录。该事件表明,Key Vault 中的机密(Secret)发生了更新,而 Container App 为获取最新的机密值,主动执行了重启操作。
实际上,所有通过环境变量引用 Key Vault 机密的活动修订版本(active revision),在检测到 Secret 变更后均会自动触发重启,以确保应用始终使用最新的机密值。
这里的关键技术细节在于 Key Vault 机密 URI 的格式配置——通常存在两种引用方式:
https://myvault.vault.azure.cn/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931:引用指定版本的密钥,实现精确版本控制。https://myvault.vault.azure.cn/secrets/mysecret:动态获取最新版本的密钥,无需指定版本号。
当 URI 中未明确指定版本号时,Container App 将自动引用 Key Vault 中的最新 Secret 版本。一旦检测到新版本可用,应用会在 30 分钟内自动完成检索与加载。
简而言之,所有在环境变量中引用 Secret 的活动修订版本,均会通过自动重启机制来获取最新的机密值。
如果您希望完全掌控 Secret 版本的切换时机,建议在 URI 中明确指定具体的版本号。

因此,如果您希望手动控制 Container App 的 Secret 更新时机,避免因 Key Vault 机密变更而触发自动滚动重启(rollout restart),最简捷的方案是:在 URI 中固定 Key Vault 内 Secret 的版本号。当您准备就绪后,再手动更新版本号以触发重启。这正是上文图示中展示的第一种 URI 格式。
参考资料
Azure Container Apps 从密钥保管库引用机密官方文档:查看详细配置与操作指南
面对复杂云环境中的技术挑战,格物致知的智慧启示我们:浊而静之徐清,安以动之徐生。 在 Azure 云中,这一理念恰能得到印证!
