- Learning Kubernetes from the true kubernetes course
- Custom examples demonstrating the learnings
- A project to run GitHub Actions, build Docker images and deploy images into pods
- Two GitHub builds, one for a MUD game, the other for a TUI app
- Kubernetes deployment for the the MUD game
- Everything is in workbook.sh and runbook.sh for learnings and reproducibility
^ Docker in docker (dind) building an image. Then deploying image to a repository in the cluster.
^ Playing my friends mud game, deployed infra & container. Accessed from pod with open ports.
- Workbooks -
workbooks.sh
show the journey I took to make the product. Including, some of the mistakes I made along the way. - Runbooks -
runbook.sh
are the simplified set of commands to recreate the project from scratch. The commands are to be run individually and not in a batch.
Workbook Includes lecture notes and commands to run examples
- Pods
- Names, Labels, Querying with labels
- Namespaces, creating with namespaces
- Controllers
- ReplicaSet
- Scaling up, Naked pods
- Deployment
- Rollouts, Diagnostics & Revisions
- Daemon Set
- ReplicaSet
- Services
- Service
- Expose, Service Discovery, NodePort
- LoadBalancer
- No selector, Session affinity
- Service
- Additional Kubectl commands
- patch, apply, attach, copy, port-forward, top
- Liveness Probes
- Handlers, Probe types
- Lifecycle
- PostStart, PreStop
- handlers
- Volumes
- Empty Dir
- types, hostPath, dynamic volumes
- Persistent Volumes
- lifecycle, access modes, storage classes
- Persistent Volume Claim
- Pod Claim
- Local Storage
- Empty Dir
- Jobs
- Stateful Pods
- DNS, ClusterIP, Rescheduling Order, number names
- Secrets
- Assigned Secret
- files, certificates or generic values
- access by volume, env vars
- Config Maps
- Ingress
- for http, tls termination, name-based virtual hosting
- NetworkPolicy
- egress, ingress, rules w/ ip tables
- Security Context
- read only root, kernel capabilities, runAsUser
- Resource Limits
- unit types, upper/lower bounds, node requests
- quality of service types
- limits & requests
- pod eviction
- Horizontal AutoScaling
- object, metrics, controllers, custom metrics
- Affinity
- Taints & Tolerances
- types of effects
- add labels to nodes
A mini project which creates a GitHub build isolated inside of Kubernetes.
- Docker in Docker
- builds docker images
- publishes them to the repo
- GitHub agent
- runs workflow commands triggered by GitHub
- can trigger builds on docker
- can make deployments to the node
- Registry
- Stores the built images
- Accessible by the node to deploy
- Improve resource allocation
- Add liveliness
- Central logging would be good