我们在消费计划中有一个 Azure Function v3 实例,其中包括一个暂存槽,以减少部署期间的停机时间。
我们的部署流程是:
我们正在使用 Azure Pipelines 将代码 .NET Core 3.1 部署到暂存槽;这是此步骤的 YAML 定义:
- task: AzureFunctionApp@1
displayName: 'Deploy to Staging Slot'
inputs:
azureSubscription: '****'
appType: functionApp
appName: '****'
package: '$(System.ArtifactsDirectory)/Build.zip'
deployToSlotOrASE: true
slotName: 'staging'
resourceGroupName: '****'
我已经禁用了这一步之后的所有步骤,只运行了这一步。在 Azure Pipelines 中完成该步骤后,主应用程序(即生产槽)将重新启动,我开始收到 503 Service Unavailable 大约 5 秒,然后冷启动。
我不明白的是如何将代码部署到暂存槽而不交换会导致生产槽重启。
我已经确定禁用了自动交换,所以情况并非如此。
如何解释和修复?我们正在尝试完全删除 503 并实现零停机部署。
更新:我已经尝试将 WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG
添加到暂存和生产槽。没有任何区别。
答案 0 :(得分:0)
也许在您部署时,某些非插槽特定的应用设置可能会触发某些更改,而这些更改特定于非插槽应用设置。这些 app setting
可能会触发 production slot
的重启。
提案:
您可能需要检查您的应用设置,如果部署期间更改的应用设置未触发Production Slot
的重启,您可能需要检查日志以获取更多详细信息。