Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/benc-uk/kube-workshop

A hands-on workshop intended to get people comfortable in working with Kubernetes and deploying applications
https://github.com/benc-uk/kube-workshop

aks helm kubernetes kubernetes-deployment

Last synced: 3 months ago
JSON representation

A hands-on workshop intended to get people comfortable in working with Kubernetes and deploying applications

Awesome Lists containing this project

README

        

# Kubernetes Developer Workshop

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](https://github.com/benc-uk/kube-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](https://github.com/benc-uk/kube-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.

## Path 1: Azure Kubernetes Service (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](00-pre-reqs/readme.md) - Covering the pre set up and tools that will be
needed.
- [🚦 Deploying Kubernetes](01-cluster/readme.md) - Deploying AKS, setting up kubectl and accessing
the cluster.
- [📦 Container Registry & Images](02-container-registry/readme.md) - Deploying the registry and importing
images.
- [❇️ Overview Of The Application](03-the-application/readme.md) - Details of the application to be
deployed.
- [🚀 Deploying The Backend](04-deployment/readme.md) - Laying down the first two components and
introduction to Deployments and Pods.
- [🌐 Basic Networking](05-network-basics/readme.md) - Introducing Services to provide network access.
- [💻 Adding The Frontend](06-frontend/readme.md) - Deploying the frontend to the app and wiring it
up.
- [✨ Improving The Deployment](07-improvements/readme.md) - Recommended practices; resource limits,
probes and secrets.
- [🌎 Helm & Ingress](08-helm-ingress/readme.md) - Finalizing the application architecture using ingress.

### 🍵 AKS 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.

- [🤯 Scaling, Stateful Workloads & Helm](09-extra-advanced/readme.md) - Scaling (manual & auto),
stateful workloads and persitent volumes, plus more Helm.
- [🧩 Kustomize & GitOps](10-gitops-flux/readme.md) - Introduction to Kustomize and deploying apps
through GitOps with Flux.
- [👷 CI/CD with Kubernetes](11-cicd-actions/readme.md) - How to manage CI/CD pipelines using Github
Actions.

## Path 2: Single node K3S cluster on a VM

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](k3s/00-pre-reqs/readme.md) - Covering the pre set up and tools that
will be needed.
- [🚦 Deploying Kubernetes](k3s/01-cluster/readme.md) - Deploying the VM, setting up kubectl and accessing
the cluster.
- [📦 Container Registry & Images](k3s/02-container-registry/readme.md) - Deploying the registry and
importing images.
- [❇️ Overview Of The Application](03-the-application/readme.md) - Details of the application to be
deployed.
- [🚀 Deploying The Backend](04-deployment/readme.md) - Laying down the first two components and
introduction to Deployments and Pods.
- [🌐 Basic Networking](k3s/05-network-basics/readme.md) - Introducing Services to provide network
access.
- [💻 Adding The Frontend](k3s/06-frontend/readme.md) - Deploying the frontend to the app and wiring
it up.
- [✨ Improving The Deployment](k3s/07-improvements/readme.md) - Recommended practices; resource
limits, probes and secrets.
- [🌎 Ingress](k3s/08-ingress/readme.md) - Finalizing the application architecture using ingress.

All of the Kubernetes concepts & APIs explored and used are not specific to AKS, K3S or Azure.

## 🍵 K3s 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.

- [🤯 Scaling, Stateful Workloads & Helm](k3s/09-extra-advanced/readme.md) - Scaling (manual & auto),
stateful workloads and persitent volumes, plus more Helm.
- [🧩 Kustomize & GitOps](k3s/10-gitops-flux/readme.md) - Introduction to Kustomize and deploying apps
through GitOps with Flux.
- [👷 CI/CD with Kubernetes](/k3s/11-cicd-actions/readme.md) - 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](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
- [Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/)
- [ConfigMaps](https://kubernetes.io/docs/concepts/configuration/configmap/)
- [Debugging Pods with shell access and exec](https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/)
- Assigning Pods to Nodes with [selectors](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) and [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
- [Cluster Autoscaler in AKS](https://docs.microsoft.com/azure/aks/cluster-autoscaler)

### Other Projects

- Enable the [Kubernetes dashboard](https://github.com/kubernetes/dashboard)
- Enabling TLS with certificates from Let's Encrypt using [Cert Manager](https://cert-manager.io/docs/)
- Observability
- With [Prometheus](https://artifacthub.io/packages/helm/prometheus-community/prometheus) & [Grafana](https://artifacthub.io/packages/helm/grafana/grafana)
- Using [AKS monitoring add-on](https://docs.microsoft.com/azure/azure-monitor/containers/container-insights-overview)
- Using [Dapr](https://dapr.io/) for building portable and reliable microservices
- Adding a service mesh such as [Linkerd](https://linkerd.io/) or [Open Service Mesh](https://docs.microsoft.com/azure/aks/open-service-mesh-about)
- Setting up the [Application Gateway Ingress Controller (AGIC)](https://docs.microsoft.com/azure/application-gateway/ingress-controller-overview)