Sometimes we will need to upgrade the Stack Settings for an App Service.
The general idea is that you update the Stack Settings and then the App owners can use Azure Devops/Github to deploy their application into this new App Service. From what I can tell it is only a metadata thing in that having the wrong or right stack does not appear to make a difference to the App Service.
I’ve been trying to investigate what it really means. Here are some links I have been reading:
- OS Runtime
- Language Support Policy
- AzureRmWebAppDeployment@4 which is what we use
- Zip Deploy
- Stack Overflow post
If you choose to “Export Template” for an App Service, you will see that “Stack Settings” really only coorelate to a field called
linuxFxVersion which can be found under
properties.linuxFxVersion. When you lookup these settings they are only referenced by a linux App Service Plan. There is also this Github Wiki that semi explains things but I still have questions about mismatches.
As far as implementing these stack version changes, I have used two methods:
- Upgrade the App Stack version Terraform and then run an apply to upgrade the App Svc itself. Then have developers push new code that matches that stack afterwards. This is the “in-place upgrade” option.
The preferred option is to deply a new App Service and then have the developers push their code to it. Then we cut over traffic from the old App Service to the new which is the preferred “blue green method”.