Kubernetes Developer Workshop
Welcome to the 'Kubernetes Developer Workshop', a highly technical & hands on set of exercises intended to get you comfortable working with Kubernetes, and deploying applications within it. This workshop is very much aimed at software engineers & developers with little or zero Kubernetes experience, but wanting to get hands on and learn how to deploy and manage their code in a Kubernetes.
It should take roughly 6~8 hours to complete the main set of sections, but this is very approximate. This Kubernetes Technical Primer can act as a companion to the workshop to be read through, referenced or used to get an initial grounding on the concepts.
The installation, administration, network configuration & day-2 operations of Kubernetes itself, are not covered in this workshop. This is very much a developer focused workshop, so if you want to learn about the low level & operational side of Kubernetes you might want to look elsewhere.
The workshop focuses on an application that has already been written and built, so no application code will need to be written.
If you get stuck, the GitHub source repo for this workshop contains example code, and working files for all of the sections.
Azure Kubernetes Service (AKS)
You'll be using AKS to learn how to work with Kubernetes running as a managed service in Azure.
Workshop sections & topics:
- 00: ⚒️ Workshop Pre Requisites - Covering the pre set up and tools that will be needed
- 01: 🚀 Deploying Kubernetes - Deploying AKS, setting up kubectl and accessing the cluster
- 02: 📦 Container Registry & Images - Deploying the registry and importing images
- 03: ❇️ Overview Of The Application - Details of the application to be deployed
- 04: 🚀 Deploying The Backend - Laying down the first two components and introduction to Deployments and Pods
- 05: 🌐 Basic Networking - Introducing Services to provide network access
- 06: 💻 Adding The Frontend - Deploying the frontend to the app and wiring it up
- 07: ✨ Path to Production Readiness - Recommended practices; resource limits, probes and secrets
- 08: 🏆 Production Readiness Continued - More recommended practices; ConfigMaps & Volumes
- 09: 🌎 Helm & Ingress - Finalizing the application architecture using ingress
Some familarity with Azure is required for sections 1 and 2, but after that the focus is on Kubernetes itself.
🍵 Optional Sections
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.
- 10: 🤯 Scaling & Stateful Workloads - Scaling (manual & auto), stateful workloads, persitent volumes, plus more Helm.
- 11: 🧬 GitOps & Flux - Introduction to Kustomize and deploying apps through GitOps with Flux.
- 12: 🏗️ DevOps & CI/CD with Kubernetes - How to manage CI/CD pipelines using Github Actions.
📖 Extra Reading & Teach Yourself Exercises
A very brief list of potential topics and Kubernetes features you may want to look at after finishing:
Kubernetes Features
- Init containers
- Jobs
- Debugging Pods with shell access and exec
- Assigning Pods to Nodes with selectors and taints
- Cluster Autoscaler in AKS
Other Projects
- 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 Istio
- Setting up the Application Gateway for Containers
🗝️ Archived: K3S Path
If you wish to learn how to set up and run Kubernetes on a single VM, simulating an on-premises environment, then you can follow the K3S version of this workshop. This is no longer actively maintained and will be out of date, but is kept for reference purposes. Refer to the archived K3S section for more details.