Sitecore Production Environment on Azure Kubernetes Services – Series

Recently I got a chance to setup multiple Sitecore environments for a customer. Initially the idea was to setup Sitecore on Azure Web Apps, but over course of multiple discussions, it became apparent that Azure Kubernetes Services (AKS) was the way to go to be future proof.

It was a difficult few weeks during which the technical implementation team had to overcome a number of technical challenges along with a lot of learnings, but at the end it was great to see how everything came together to have those environments up and running as expected.

Problem Statement

So, we setup some Sitecore environments, what’s so special about that? Why this article in the first place? Well, it’s to share the learnings that came of those sleepless nights and anxious days of trying to deploy, running into issues, troubleshooting and finally fixing and moving to next one.

As part of this series, I plan to focus specifically on Production environment setup and explain about:

I plan to write this as a four part series and focus on one part at a time.

Initial Findings

When it was decided to go for AKS based deployment of sitecore, we explored the options and alternatives and found these prominent resources – Installation Guide for Production Environment with Kubernetes and From Sitecore PaaS to AKS – a series, along with others, some of which I will put under references at the end of this article.

The installation guide from Sitecore is well documented, but comes short if you are actually trying to deploy a production environment, mostly because of external data sources and associated complexities which are not explained there.

The article series from Rob was extremely helpful to fill in the gaps and even provide very helpful scripts for automating a bunch of steps which would otherwise require a lot of manual and erroneous steps.

Solution Design

The production environment looks something like this. This gives some good idea about how those components are connected to each other and their communication.

Azure Components

It contains the following components:

  • A Virtual Network with 3 Subnets
  • An Internal Load Balancer for Solr VMs
  • Azure Firewall
  • Application Gateway
  • Azure Content Delivery Network (CDN)
  • AKS Cluster
  • Azure Keyvault
  • Azure Container Registry
  • External Data Sources (SQL, Redis and Solr)

The details about implementation of all these components, except the external data sources, will be covered in the Part 1 of this series.

External Data Sources

Setting up External Data Sources, specially Solr, come with their own set of challenges, so it deserves it’s own article. That I will cover as Part 2 of this series

Sitecore Deployment

Once the Azure resources are deployed, we need to deploy Sitecore in the AKS cluster. This requires us to prepare the deployment files for production environment first. Some of the steps not included in Sitecore documentation are about:

  • High availability
  • Custom resource limits on Pods
  • Updating the image path to point to our own
  • Using Azure Application Gateway Ingress (AGIC)
  • Issues related to Initialization of SQL and Solr
  • SSL Certificates

These will be covered in Part 3 of this series.

Azure Devops

And finally, I plan to summarize and put everything together using Azure Devops in Part 4 to give you a complete picture of the solution.

  • Deploy all Azure components using Devops pipeline
  • Deploy Sitecore using Devops pipeline

Summary

So this article is just about the first line of thought about what all I intend to cover, but will serve as a starting point for the future articles in this series. I will update the links of those articles in this post as and when those are published. Keep an eye on my LinkedIn posts or Twitter handle for the updates, if interested.

Enjoy,
Anupam

You may also like

Leave a Reply

Your email address will not be published. Required fields are marked *