Kick off Kubernetes for Sitecore

A presentation at Pittsburgh Sitecore User Group in November 2020 in by Rob Earlam

Slide 1

Slide 1

Kick off Kubernetes for Sitecore Rob Earlam Technical Evangelist - Sitecore November 2020 @RobEarlam

Slide 2

Slide 2

Rob Earlam Sitecore Technical Evangelist https://robearlam.com https://github.com/robearlam https://twitter.com/robearlam https://www.linkedin.com/in/rob-earlam/ © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners.

Slide 3

Slide 3

What is Kubernetes (K8s) “Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.” https://kubernetes.io/docs © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 4

Slide 4

Why do you need K8s? • Service discovery and load balancing • Storage orchestration • Automated rollouts and rollbacks • Self-healing • Secret and configuration management © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 5

Slide 5

K8s Concepts Cluster Cluster Node A cluster is the Kubernetes Node foundation. All the Kubernetes objects that represent your containerized applications all run on Pod Pod Pod Pod top of a cluster. © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 6

Slide 6

K8s Concepts Node Node A Node is a worker machine in Kubernetes and may be either a virtual or a physical machine, depending on the cluster. Pod Pod Container Container Container Container © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 7

Slide 7

K8s Concepts Pod Pod A Pod is the smallest and simplest unit in the Kubernetes object model. One or Container Container Container Container multiple containers that are working closely together are bundled in a Pod together. © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 8

Slide 8

K8s Concepts Deployment “I want three pods running my application” Deployment A Deployment represents a desired state for one or more pods. Pod Pod Pod Container Container Container Container Container Container © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 9

Slide 9

K8s Concepts Container A container image is a ready-to-run software package, containing everything needed to run an application. Container Application Dependencies / Libraries Configuration Other requirements © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 10

Slide 10

K8s Concepts Service Node Node A Service provides an abstract way Service to expose an application running on a set of Pods as a network service. Pod Pod Pod © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. Pod @RobEarlam

Slide 11

Slide 11

K8s Concepts Ingress An API object that manages external access to the services in a Node Node cluster, typically HTTP. Service Service Pod Pod Pod © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. Pod @RobEarlam

Slide 12

Slide 12

K8s Concepts Namespace Node Node Service Namespace A namespace is used to group Pod Pod related resources within a cluster. Pod Pod Namespace Node Node Service Service Pod Pod Pod © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. Pod @RobEarlam

Slide 13

Slide 13

Secrets • Kubernetes Secrets let you store and manage sensitive information, such as: • Passwords • OAuth tokens • SSH keys • Storing confidential information in a Secret is safer and more flexible than storing it directly in a Container Image. © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 14

Slide 14

K8s Concepts Control Plane (1..n) Deployment Node 1 Node 2 Node n 10.0.0.1 Docker Kubelet Docker Kubelet Docker © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. Kubelet @RobEarlam

Slide 15

Slide 15

K8s Concepts Control Plane (1..n) Deployment Node 1 Node 2 Node n 10.0.0.1 Docker Kubelet Docker Kubelet Docker © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. Kubelet @RobEarlam

Slide 16

Slide 16

K8s Concepts Control Plane (1..n) Deployment Node 1 Node 2 Node n 10.0.0.1 Docker Kubelet Docker Kubelet Docker © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. Kubelet @RobEarlam

Slide 17

Slide 17

What is Azure Kubernetes Service (AKS)? Microsoft’s Managed K8s Service • Elastic Provisioning • Integrated with VSCode • Identity Management through AAD • Available in 36+ regions • Available with both Linux & Windows nodes © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 18

Slide 18

Sitecore on AKS What’s available? • Full set of Kubernetes Specifications • Complete installation guide • Available today on https://dev.sitecore.net/ What is and isn’t supported? • Application containers fully supported • Data storage containers need to be a in separate Node Pool © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 19

Slide 19

Demo Time! @RobEarlam

Slide 20

Slide 20

Closing Thoughts • Leverage industry standard Kubernetes Tooling • Make sure you secure your cluster • Plan how to setup your Data Storage roles in production • SQL, Solr, Redis • Read Microsoft’s AKS best practices - https://docs.microsoft.com/enus/azure/aks/best-practices • MVP Site - https://github.com/Sitecore/MVP-Site © 2001-2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners. @RobEarlam

Slide 21

Slide 21

Thank you FOR DISCUSSION PURPOSES ONLY. Sitecore Confidential and Proprietary. ©2020 Sitecore Corporation A/S. Sitecore® and Own the Experience® are registered trademarks of Sitecore Corporation A/S. All other brand names are the property of their respective owners.