This tutorial walks you through using Kubernetes the hard way.
This guide is not for people looking to learn how to deploy and operate Kubernetes clusters. If that's you, then check out Kubernetes The Hard Way.
Usage Kubernetes The Hard Way is optimized for learning, which means taking the long route to ensure you understand each task required to deploy and operate a web app on Kubernetes.
- Clone of this GitHub repository
- Kubernetes cluster
- Kubernetes user account
- Vault cluster
- Vault user account
- Go
- Write a web app in Go
- TODO: Build a Go binary
- TODO: Go Modules for Dependency Management
- TODO: Unit Tests
- Health check endpoint (for Kubernetes Readiness Check)
- Graceful Termination with Connection Draining on SIGTERM
- Linting
- TODO: YAML linting
- TODO: JSON linting
- TODO: Shell linting
- TODO: Goimports (incl go fmt) linting
- Container Image Building
- TODO: Docker Hub Image GitOps using GitHub Actions
- TODO: Image builds for master and version tags
- TODO: Image builds for branches (for end-to-end testing)
- TODO: Image builds for CI (for test tool installation)
- Multi-stage builds for smaller images
- GitHub Actions
- GitHub Actions config GitOps
- TODO: Trigger on PRs/branches
- TODO: Integration tests on Kubernetes for master and branches
- TODO: Deployment Promotion Dev -> Staging -> Prod
- TODO: Container Image Garbage Collection (new image on every push)
- TODO: Automated Canary Deployment Testing
- TODO: Terraform Module GitOps
- Vault
- TODO: App Secrets in Vault (Kubernetes read, Team write)
- Kubernetes
- Zero Downtime Deployments
- Ingress Load Balancing
- Pod Disruption Budget
- Deployment Rollout Strategy
- Liveness & Readiness Checks
- TODO: App-specific Kubernetes Service Account
- TODO: Daytona sidecar App Secrets injection
- TODO: Resource requests & limits (cpu, memory, ephemeral-storage)
- TODO: Ephemeral Storage EmptyDir Volume
- TODO: Version Rollbacks
- TODO: Horizontal Autoscaling
- TODO: Vertical Autoscaling
- Templating (envsubst)
- DNS
- Namecheap DNS GitOps
- TODO: Blackbox Endpoint Monitoring (ex: CULA)
- TODO: Metrics Dashboards
- TODO: Monitoring & Alerting
- TODO: Distributed Tracing
- Create a Kubernetes namespace
- Configure Kubernetes RBAC authorization for your user to manage resources in the Kubernetes namespace
- Configure Vault authorization for your user to manage secrets in a secrets workspace (ex:
secret/project/${PROJECT}/*
). - Configure a Vault Kubernetes Auth Backend to allow Kubernetes pods to login to Vault using a Kubernetes Service Account.