This is a hands-on, technical workshop intended / hack to get comfortable working with Kubernetes, and deploying and 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.
📝 NOTE: if you've never used Kubernetes before, it is recommended to read the 'Introduction To Kubernetes' section in Kubernetes Technical Primer PDF
The application used will be one 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 most of the sections.
To start with the workshop, first you need to choose which path you'd like to follow, either using AKS or hosting Kubernetes yourself in a VM. If you are unsure you should pick AKS.
In this path you'll be using AKS to learn how to work with Kubernetes running as a managed service in Azure.
📝 NOTE: 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.
- 👷 CI/CD with Kubernetes - How to manage CI/CD pipelines using Github Actions.
In this path you'll learn to use Kubernetes as if you were running it on a on-premises machine, including configuring the computer with the required set up manually.
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.
- 👷 CI/CD with Kubernetes - How to manage CI/CD pipelines using Github Actions.
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)