This is a hands-on, technical workshop intended / hack to get comfortable working with Kubernetes and deploying & configuring applications. It should take roughly 6~8 hours to complete the main set of sections, but this is very approximate. This workshop is intended partially as a companion to this Kubernetes Technical Primer which can be read through, referenced or used to get an initial grounding on the concepts.
This workshop is very much designed for software engineers & developers with little or zero Kubernetes experience, but wish to get hands on and learn how to deploy and manage applications. It is not focused on the administration, network configuration & day-2 operations of Kubernetes itself, so some aspects may not be relevant to dedicated platform/infrastructure engineers.
The application used will be one that has already been written and built, so no application code will need to be written.
There are two approaches you can take with this workshop below
If you get stuck, the GitHub repo for this workshop contains example and working files for most of the sections
This section assumes a relative degree of comfort in using Azure for sections 2 and 3.
Sections / modules:
- ⚒️ Workshop Pre Requisites - Covering the pre set up and tools that will be needed.
- 🚦 Deploying Kubernetes - Deploying AKS, setting up kubectl and accessing the cluster.
- 📦 Container Registry & Images - Deploying the registry and importing images.
- ❇️ Overview Of The Application - Details of the application to be deployed.
- 🚀 Deploying The Backend - Laying down the first two components and introduction to Deployments and Pods.
- 🌐 Basic Networking - Introducing Services to provide network access.
- 💻 Adding The Frontend - Deploying the frontend to the app and wiring it up.
- ✨ Improving The Deployment - Recommended practices; resource limits, probes and secrets.
- 🌎 Helm & Ingress - Finalizing the application architecture using ingress.
These can be considered bonus sections, and are entirely optional. It is not expected that all these sections would be attempted, and they do not run in order.
- 🤯 Scaling, Stateful Workloads & Helm - Scaling (manual & auto), stateful workloads and persitent volumes, plus more Helm.
- 🧩 Kustomize & GitOps - Introduction to Kustomize and deploying apps through GitOps with Flux
Sections / modules:
- ⚒️ Workshop Pre Requisites - Covering the pre set up and tools that will be needed.
- 🚦 Deploying Kubernetes - Deploying the VM, setting up kubectl and accessing the cluster.
- 📦 Container Registry & Images - Deploying the registry and importing images.
- ❇️ Overview Of The Application - Details of the application to be deployed.
- 🚀 Deploying The Backend - Laying down the first two components and introduction to Deployments and Pods.
- 🌐 Basic Networking - Introducing Services to provide network access.
- 💻 Adding The Frontend - Deploying the frontend to the app and wiring it up.
- ✨ Improving The Deployment - Recommended practices; resource limits, probes and secrets.
- 🌎 Ingress - Finalizing the application architecture using ingress.
All of the Kubernetes concepts & APIs explored and used are not specific to AKS, K3S or Azure.
These can be considered bonus sections, and are entirely optional. It is not expected that all these sections would be attempted, and they do not run in order.
- 🤯 Scaling, Stateful Workloads & Helm - Scaling (manual & auto), stateful workloads and persitent volumes, plus more Helm.
- 🧩 Kustomize & GitOps - Introduction to Kustomize and deploying apps through GitOps with Flux
A very brief list of potential topics and Kubernetes features you may want to look at after finishing:
- Init containers
- Jobs
- ConfigMaps
- Debugging Pods with shell access and exec
- Assigning Pods to Nodes with selectors and taints
- Cluster Autoscaler in AKS
- Enable the Kubernetes dashboard
- Enabling TLS with certificates from Let's Encrypt using Cert Manager
- Observability
- With Prometheus & Grafana
- Using AKS monitoring add-on
- Using Dapr for building portable and reliable microservices
- Adding a service mesh such as Linkerd or Open Service Mesh
- Setting up the Application Gateway Ingress Controller (AGIC)