首页 > 解决方案 > Azure Functions:部署到暂存槽重新启动生产槽

问题描述

我们在消费计划中有一个 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到登台和生产槽。没有什么不同。

标签: azureazure-functionsazure-deployment-slots

解决方案


推荐阅读