Repo purely for CKA-practice. I like to keep repos public if there is no real reason to stay private, that is part of the whole idea with Open Source! :) Feel free to use this for your own training, but MIT license applies: if you use this, refer to the origins.
- HCL 100%
| docs | ||
| kind | ||
| terraform | ||
| .gitignore | ||
| LICENSE.md | ||
| README.md | ||
cka-iac — On-Demand CKA Practice VM Lab
Status: paused (2026-08-14). Tier 2 practice has moved to an external Proxmox environment for now. This repo and its files are kept as-is in case the on-demand cloud VM approach is revived later.
Home for the mymh.dev homelab's CKA exam practice environment — per ADR-002 and ADR-007 in homelab-docs. A parallel training track, not part of the mymh.dev platform. Full project context, decisions, and runbooks live in homelab-docs; this repo's own docs cover only how to use its tooling. Covers both practice tiers from ADR-007:
- Tier 1 (
kind, local) — working study checklist,docs/kind_playground.md, tracked and public in case it's useful to someone else prepping for the same exam. - Tier 2 (on-demand cloud VMs) — this repo's actual IaC: Terraform + cloud-init for
kubeadmbring-up, HA control-plane, etcd backup/restore, and node/OS-level troubleshooting practice.
Repository structure
cka-iac/
├─ docs/
│ ├─ kind_playground.md # Tier 1 study checklist (kind)
│ ├─ playbook.md # Tier 2 manual setup steps (UpCloud account/subaccount/tokens)
│ └─ roadmap.md # Single-file progress tracker + idea dump for this whole repo
├─ kind/
│ └─ cka-practice.yaml # Tier 1 multi-node kind cluster config (control-plane + 2 workers)
├─ terraform/
│ ├─ cloud-init/ # cloud-init templates (empty until Tier 2 VM work starts)
│ ├─ .terraform.lock.hcl # Provider version/checksum lock — committed, unlike .terraform/ itself
│ ├─ main.tf # The 3 practice servers (control-plane + 2 workers)
│ ├─ outputs.tf # Server IPs — `terraform output` instead of dashboard digging
│ └─ versions.tf # Terraform + provider version constraints
├─ LICENSE.md
└─ README.md # This file
Rules for this repo
- No file — tracked or untracked — ever contains a real IP, MAC address, hostname, or credential. Environment-specific values are runtime parameters (env vars/CLI args/
.tfvarspassed at apply time), never committed. - Terraform state is never committed — configure a local or remote backend at apply time, not checked into the repo.
- VMs are on-demand and disposable: provisioned per practice session, destroyed immediately after (
terraform destroyas the last step, every session) — this repo automates spin-up/teardown, not a persistent cluster. - Scope:
kubeadmcluster bring-up, HA control-plane, etcd backup/restore, and node/OS-level troubleshooting practice — the CKA domains a container-based (kind) cluster can't faithfully simulate. See ADR-007.
Out of scope
- The mymh.dev platform itself: on-prem provisioning (
homelab-iac), Talos cluster configs (homelab-cluster-config), ArgoCD app-of-apps (homelab-gitops). - Decision records and runbooks (
homelab-docs).
Documentation
- Decisions: ADRs in
homelab-docs(ADR-002, ADR-007) - Operational procedures: runbooks in
homelab-docs - Progress: roadmap/journal in
homelab-docs
License
Licensed under the MIT License — free to use, share, and adapt with attribution (keep the copyright notice).