Skip to main content

Case Studies

Deploying a Sitecore Instance on a “Local” Kubernetes (k8s) Setup Pt2

Technology
In the first blog of this series (here), I laid the foundation of why I chose this POC and my investigation into potential tools such as MiniKube and Kind, and why these did not work for me. I eventually settled on AKS Edge Essentials from Microsoft. Now I will take a slightly deeper dive into how I put things together.

The Solution

Putting things together, was relatively straight forward.. sort of
  1. AKS creates the infrastructure such as Clusters and the Linux and Windows Nodes
  2. Use the existing K8s deployment yaml files from the Sitecore deployment files of my choosing. Not all the files will be used and I created some Powershell scripts to help with the installation at each phase
  3. Verifying the installation by connecting to the CM/CD service to see the Sitecore landing page and attempt to login.

AKS Edge Essentials

Using the ASK Edge Essentials was relatively easy due to the comprehensive documentation in the How-to section on their site.
For installation ensure that the msi file for the AKS executable and the windows node files are extracted into the folder you are using for the deployment, then do:
msiexec.exe /i "AksEdge-kXs-x.xx.x.msi" ADDLOCAL=CoreFeature,WindowsNodeFeature

After installation we need to consider what type of machine deployment we are doing. For my setup I used a Single Machine Cluster with both Linux and Windows Node (mixed workload cluster). The tool has a command tool which generates a json config file based on the deployment type and node type you specify.

New-AksEdgeConfig -DeploymentType SingleMachineCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null
After this, the infrastructure setup is started using:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

Sit back and watch the magic.

*Note*: A compatibility check will be executed which will verify your hardware resources during the setup, which may fail, so take note of the hardware requirements.
(Kubernetes Dashboard: By default the Kubernetes Dashboard is not enabled. See scripts in repo to install dashboard and create admin user to login.)

Sitecore Deployment

For the Sitecore part of this installation, I reused the standard Kubernetes deployment package that comes with comes with the Sitecore 10.3 Container Deployment under the k8s folder. However, I did not use all the yaml files, as that setup was geared to an Azure AKS type of deployment. I had to do some modifications and basically remove anything Azure AKS related.
Ended up with a folder structure similar to the following:
external– (Linux deployed services)
    • MSSQL Server
    • Redis
    • Solr
helm– Streamlines installation of Kubernetes applications
ingress-nginx – Cluster Load Balancing goodness
init – To bootstrap Sitecore and solr databases
license – For you valid Sitecore license file
secrets – files to store passwords and secret information used by your kubernetes deployment
volumes – used to configure mount points
So to not make installation a pain, and having to run the  kubectl command to load each and every configuration, I created Powershell scripts to be run in the order they are named to ensure a smooth and predictable installation flow.

Kubernetesfolderstructure

At the end of the day I had a working Kubernetes Dashboard showing all my workloads, Pods and Services

Kubernetesdashboard

And with some bit of port forwarding and hacking for the CM/CD (will discuss in the next part of this series)

Sitecorelanding

Sitecore Launcher

Sitecoredashboard

 

Next post, I will go through the issues I faced getting things up, and certain caveats to look for.

In the meantime feel free to check out the project Github repo here.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Karega Anglin

Software Engineer with over 10 years of experience in all things Software Development and Architecture. A humanitarian passionate about building things to improve society and people's lives. “Looking forward to the future, learning from the past, and enjoying working in the present.”

More from this Author

Follow Us