From PaaS to AKS. Or actually, from running Sitecore on a full PaaS architecture using Web Apps, based on the Sitecore Azure Quickstart Templates (or my own ARM set derived from that), to a containerized Sitecore deployment using the Kubernetes specification files supplied by Sitecore, running on AKS (Azure Kubernetes Services). That’s the journey I want to share with you. I am hooked on fully automated (re-)deployments following the Infrastructure-as-Code principle, and have done a lot of work on the ARM templates and accompanying Continuous Integration setups using Azure DevOps to facilitate zero downtime blue green deployments. I can see the power and flexibility containers bring, and I’d love to try them out, but I am still missing some of the treats and guidance of the good ol’ ARM templated PaaS Web Apps setup.
Filling the gap
It occurred to me that a lot of examples using containers – it not all – are built upon showing the simpler XM topology, and also use the provided container images for the External Data Services, which are not meant for production purposes. That is great for playing around with a K8s setup when you’re new to it, and it also helps a great deal in getting to understand the principles of deploying a containerized setup in AKS, but it does leave some gaps. Gaps that I intend to fill and initiate a discussion about:
- How do I host and facilitate my External Data Services (EDS) outside the Kubernetes cluster?
- What does a full XP production deployment look like?
- Coming from swapping staging slots in Web Apps, how do blue green deployments work in a K8s cluster?
- And how to migrate your Sitecore production environment from a PaaS architecture to containerized architecture running on AKS?
This blog is the first in a series about building a production ready Continuous Integration setup using K8s containers on AKS.
My objectives for this setup and series are the following:
- A fully IaC descriptive setup with everything scripted
- A set of production ready External Data Services to start with
- Integrating Azure Key Vault for secret management
- Understanding and implementing zero downtime blue green deployments
- Share my YAML pipelines and Azure DevOps configuration
Where to start
The Sitecore Installation Guide for Production Environments with Kubernetes is a very valuable guide and I encourage you to start with that. It contains a lot of important information, explanations and links to go through when setting up your K8s cluster. Also, Bart Plasmeijer did a great talk on the Sitecore Symposium 2020 about containers on AKS, accompanied with some example scripts on how to set up such an environment.
In addition to that, I like to share some of my scripts and findings on how to build a full Continuous Integration setup using K8s in the upcoming weeks and months. I will share my work as we go and gain more experience on the topic. Let’s have some fun!
The following blog posts are part of this series. I will update the list each time a new article is being published:
- PaaS to AKS: scripts & secrets – kicking off with improved auxiliary scripts and an explanation on how to use Azure Key Vault to deploy secrets to your AKS cluster securely
- PaaS to AKS: ARM for EDS, a blog post about setting up production ready External Data Services using ARM templates
- PaaS to AKS: an overview of the entire provisioning process, in preparation to setting up the DevOps pipelines
- PaaS to AKS: more scripts! added to the boilerplate to further automate the initial provisioning process of deploying Sitecore to AKS
I am aware that AKS partly is considered a PaaS architecture, but when referring to PaaS in this series, I am referring to a full PaaS setup using Web Apps and the Sitecore Azure Quickstart Templates.