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.
Find a file
2026-08-18 21:57:08 +02:00
docs Cosmetic change, a spce or something slipped in. 2026-07-20 12:07:34 +02:00
kind Tier 1 setup skeleton activated. Lets build VMs. 2026-07-17 09:34:45 +02:00
terraform Documentation: Added outputs.tf and a template work_inits.md to help with the dynamic IPs we are going to get each time we bring up new VMs. Roadmap and readme got updated then too. 2026-07-18 14:33:28 +02:00
.gitignore Gitignore: Updated gitignore. Added docs-files that should not be tracked as they are personal project-based docs. No sensitives in there but this is a public repo, so keep it clear of bloat. 2026-07-19 10:53:11 +02:00
LICENSE.md Initial commit, added MIT License until README has been drafted. 2026-07-16 09:40:01 +02:00
README.md README updated, with note about current testing being external in a Proxmox environment. 2026-08-18 21:57:08 +02:00

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 kubeadm bring-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/.tfvars passed 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 destroy as the last step, every session) — this repo automates spin-up/teardown, not a persistent cluster.
  • Scope: kubeadm cluster 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).