Azure / Azure-Functions

1.12k stars 198 forks source link

Guidance on rolling update without downtime #1831

Open pragnagopa opened 3 years ago

pragnagopa commented 3 years ago

copying from https://github.com/Azure/app-service-announcements-discussions/issues/175#issuecomment-768867233

cc: @saibaskaran57

Hey everyone,

Could someone share how could we perform the Platform upgrade from Azure Functions v2 -> v3 without any downtimes?

There are two issues I'm currently facing in terms of the platform upgrade: 1) ARM template changes on FUNCTIONS_EXTENSION_VERSION from ~2.0 to ~3 causes downtime with HTTP 503 Service Unavailable I did a simple ping check(every 100ms) on my Azure functions when ARM template is being deployed. I could reproduce this using both Powershell & Azure resource group deployment azure pipeline task as show below: functionupgrade

2) I've changed my strategy to upgrade using Functions deployment staging slots first before making a swap. However, the FUNCTIONS_EXTENSION_VERSION app settings did not bring forward to production slot during this swap. Just to test this out, in my staging slot I updated FUNCTIONS_EXTENSION_VERSION from ~2.0 to ~3 and created a new app settings called NewVar. From the screenshot below, only NewVar is brought forward to production slot. swaptest

How can we ensure the function app is upgraded with seamless approach without causing service downtime?

Thanks.

saibaskaran57 commented 3 years ago

Thank you @pragnagopa . Appreciate for your help.

pragnagopa commented 3 years ago

@anthonychu - Are you aware of any best practices doc for zero downtime deployment while using slots?

saibaskaran57 commented 3 years ago

Hello @pragnagopa @anthonychu ,

Do we have any best practices document for the above? I'm leveraging Azure App Service for my function deployment. I suppose deployment slots always help us to solve this type of issues but for this scenario, it does not as the FUNCTIONS_EXTENSION_VERSION is not swapped.

Thanks.