The next topic in this series is IIS App Pools and Websites. Vinicius and I discuss the challenges with managing multiple application pools and how to address them with containers at our Microsoft Ignite Talk. Scaling up an IIS app pool brings challenges because perhaps you only need one of those app pools scaled up. Having everything reside on the same node means you scale up all of the app pools ( more management overhead). Another common way is to segregate applications on virtual machines but that brings additional costs with more VMS to run and manage. A much simpler and cost-effective way is to break out your application pools onto individual containers.
You can choose to run a single container with multiple IIS app pools but there can be more benefits by managing them independently.
Here is the architecture we are referring to in our example, where we can have each IIS app pool and/or website in its own container with secrets stored and hard coded configurations stored in configmap. More on those two services in the next post! If we migrate our app pool to its own container we can now scale that up and down as needed without bringing more management overhead and cost.
Using Azure Migrate, we can segregate your IIS application(s) from a virtual machine. This can allow for easier management and is a design choice not a technical limitation.
Azure Migrate App Containerization
You can install this application on a Windows machine to discover and migrate your application. The requirements can be found here.
After downloading, installing and launching the application you will see. Here we want to select ASP.NET web apps and target containers on AKS
The prerequisites are accepting license terms, connectivity checks, etc you can read the complete guide here and how to sign into your Azure account
Next up you’ll Discover and Validate the server you want to migrate from by entering the IP or FQDN and credentials that can authenticate
Click continue to discover your application(s). Once complete, you will see the below image
Now we can separate the existing websites into different target containers. Again, this brings the benefit of managing changes/updates independently versus impacting all of the applications
Build Container Image
Here we can use our existing container registry to store the container image for the application. You can also choose to create a new Azure Container Registry. Azure Migrate has created the dockerfile necessary to deploy my discovered Application.
Here you can provide an AKS (Azure Kubernetes Service) cluster to deploy to or create a new one for this migration.
Now we have to specify the Secret Store, Azure File share if a persistent volume is needed and the deployment configuration. For more details on this read here
Finally, we can deploy the application that we have discovered. Azure Migrate will provide the necessary permissions and generate the deployment YAML file for the application.
It really is that simple to migrate off of your server! IIS is definitely an application that can benefit from the flexibility of containers.
Feel free to comment or ask questions on the process on this post. You can also watch the demo and talk here
If you missed the first post, be sure to see how Vinicius went over SSL Lifecycle management using Azure Key Vault and Web Application Routing for AKS.