Kubernetes and Helm Tutorials - Table of Content (Cluster Setup, Workloads, Storage, Ingress, CI/CD, Monitoring, 50+ Guides)
This page is the index of every Kubernetes and Helm tutorial on jhooq.com, in the order I would follow if I were learning Kubernetes from scratch - build a cluster first, get the dashboard up, deploy a real Spring Boot application, then storage, ingress, CI/CD and monitoring, and finally package everything as a Helm chart.
The tutorials were originally written against Kubernetes 1.18 to 1.26 and are being refreshed for the current releases (Kubernetes 1.37 and Helm 4 as of this update). Where a command or output changed, the post says so. Most posts also have the matching YouTube video embedded.
Table of Content
- Setting up a Kubernetes cluster
- Kubernetes Dashboard
- Deploying applications - Pods, Deployments, probes, secrets
- Storage - Persistent Volumes and Persistent Volume Claims
- Networking - Ingress
- CI/CD on Kubernetes with Jenkins
- Monitoring - Prometheus and Grafana
- Helm charts
- Fixing the common Kubernetes and Helm errors
1. Setting up a Kubernetes cluster
You need a cluster before anything else. Pick one - kubeadm on VMs if you want to understand every component, Kubespray for a production-like HA cluster, Minikube if you just want to start learning on your laptop.
- Part-1 : 14 steps to install Kubernetes on Ubuntu with kubeadm (Vagrant VMs)
- Part-2 : How to setup Kubernetes on CentOS 8 and CentOS 7
- Part-3 : Kubespray - 12 steps for installing a production-ready HA Kubernetes cluster
- Part-4 : Upgrade Kubernetes using Kubespray
- Part-5 : Install Kubernetes with Minikube
- Kubernetes cheat sheet for day-to-day DevOps operations (kubectl commands)
- Kubernetes updates - what changed in the recent releases
2. Kubernetes Dashboard
3. Deploying applications - Pods, Deployments, probes, secrets
- Part-8 : Deploy a Spring Boot microservice on a local Kubernetes cluster
- Part-9 : Deploy a Spring Boot microservice on GKE (Google Cloud Platform)
- Implementing Kubernetes liveness, readiness and startup probes with a Spring Boot application
- How to use Kubernetes Secrets?
- Share Kubernetes Secrets between namespaces
- kubectl get YAML - export the YAML of deployed Kubernetes resources
- Kubernetes Pod keeps getting recreated after delete? Find the owner and delete it properly
- How to delete all Kubernetes Pods?
- Delete a Kubernetes Pod stuck in Terminating state
- Validating Kubernetes configurations with Datree
4. Storage - Persistent Volumes and Persistent Volume Claims
- Part-10 : How to use Persistent Volumes and Persistent Volume Claims in Kubernetes
- How to delete a PV (Persistent Volume) and PVC (Persistent Volume Claim) stuck in Terminating state
- Fixing - pod has unbound immediate PersistentVolumeClaims / cannot bind to requested volume: incompatible accessMode
- How to fix ProvisioningFailed - persistentvolume-controller no volume plugin matched
- Fixing - cannot bind to requested volume: storageClassName does not match
5. Networking - Ingress
6. CI/CD on Kubernetes with Jenkins
7. Monitoring - Prometheus and Grafana
8. Helm charts
Helm is the package manager for Kubernetes. These posts go from installing Helm to writing, templating and deploying your own charts.
- Getting started with Helm - install Helm 4, write your first Hello World chart, add repositories
- Building your first Helm chart with Spring Boot microservices
- Convert Kubernetes deployment YAML into Helm chart YAML
- Pass environment variables into a Helm chart
- How to create multiple values files inside a Helm chart (dev, staging, prod)
- Helm dry run - helm install --dry-run, --dry-run=server, helm template, and when to use which
- Helm chart - how to add and install plugins
- Helm chart - WordPress installation with MariaDB on Kubernetes
- How to use Helmfile for managing Helm charts
9. Fixing the common Kubernetes and Helm errors
- kubeadm - error execution phase preflight [preflight] some fatal errors occurred
- kubeadm - ERROR Swap: running with swap on is not supported, please disable swap
- Kubespray - ansible_memtotal_mb minimal_master_memory_mb assertion failed
- Kubespray - error: client etcd cluster is unavailable or misconfigured
- Helm - unknown flag --name / Error: must either provide a name or specify --generate-name
- Helm - failed to create Secret: invalid metadata.name, a DNS-1123 subdomain must consist of lower case alphanumeric characters
For the infrastructure side of the same stack, the Terraform table of content covers provisioning the servers these clusters run on, and the Docker series covers building the images you deploy. The official references are the Kubernetes documentation and the Helm documentation.