Files
rootnode-academy/content/root/root-05-kubernetes-foundations/m00-mental-model/04-guided-exercise-namespaces.md
T
ced4568andClaude Sonnet 5 25409d3bd7 feat(root): author Kubernetes foundations curriculum
root-05-m00-kubernetes-mental-model — a new, full gold-standard-pattern
front-door module for ROOT 05: what Kubernetes solves, the desired-state
model, the control-plane/worker split, and Pods/Namespaces/labels
through kubectl. Lesson, demonstration (watching a Pod get replaced
after manual deletion), knowledge check, guided exercise (planning a
Namespace layout), a real Lab (namespaces-basics), and a reflection —
sequenced ahead of the existing bare kubectl-fluency lab bank.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-08-26 09:05:40 -05:00

3.2 KiB

Guided Exercise: Planning a Namespace Layout

This is a paper-and-thinking exercise — work through it before the Lab, not during it.

The scenario

You're setting up a small Kubernetes cluster for a class project with three teams (frontend, backend, data), each running their own set of Pods, and you also need a shared area for tools everyone uses (a shared logging dashboard, for example).

Your task

Sketch out, on paper or in a scratch file:

  1. What Namespaces would you create, and why? (Hint: think about who needs to see what, and whether any team's mistake — e.g. deleting the wrong Pod by accident — should be able to affect another team.)
  2. If frontend team members should be able to manage their own Pods but NOT touch backend's or data's, what does that suggest about how Namespaces relate to access control? (You'll learn the actual mechanism, RBAC, in ROOT 09 — for now just reason about why Namespace boundaries make that kind of restriction possible at all.)
  3. Would you put the shared logging dashboard in one of the three team Namespaces, or somewhere else? Justify your answer.
  4. If two teams both need to run something they each call web, what would happen if they were in the SAME Namespace? What changes if they're in separate Namespaces?

A reasonable answer to check yourself against

  1. Three Namespaces (frontend, backend, data) — one per team, so each team's objects are isolated from the others and a mistake in one Namespace (deleting the wrong Pod, applying a bad manifest) can't accidentally affect a different team's workloads.
  2. Namespace boundaries are what RBAC rules can be scoped TO — "this person can manage Pods in the frontend Namespace" is a real, common permission model. Without separate Namespaces, you'd have to distinguish access by resource name pattern instead of by boundary, which is far more error-prone.
  3. A separate Namespace (e.g. shared-tools or platform) — it isn't owned by any one team, and mixing it into a team's Namespace would make it unclear who's responsible for it or accidentally couple its lifecycle to that team's.
  4. In the SAME Namespace, object names must be unique — a second web Deployment would either fail to create or overwrite the first, depending on how it's applied. In SEPARATE Namespaces, both frontend/web and backend/web can coexist without conflict — the Namespace is part of what makes a name unique, not just the name itself.

If your answer differed meaningfully from this, re-read the lesson's Namespace section before continuing to the Lab.

Instructor Notes

Facilitation: Good as a 2-3 person small-group discussion in a live classroom before revealing the reasonable answer — question 4 in particular often produces a genuine "oh" moment once students realize name uniqueness is Namespace-scoped, not cluster-wide.

Approximate timing: 10 minutes live with discussion; 10 minutes self-paced.

Optional extension: ask what would need to be true for the data team to be ALLOWED to read (but not modify) something in shared-tools — a good bridge to RBAC's read vs. write verbs, covered properly in ROOT 09.