Files
k8s-starter-pack/docs/glossary.md
T
Maxwell MorrisandClaude Sonnet 5 92c3ad3191 Initial commit: GitOps Starter Pack
A teaching-first, single-cluster GitOps setup: Talos Linux + Argo CD with
an app-of-apps layout, MetalLB pre-installed for real LoadBalancer IPs on
bare metal, a demo app, and a progressive docs/ walkthrough with a
CLAUDE.md tutor persona and guided bootstrap checklist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-22 17:30:45 +01:00

8.1 KiB

Glossary

Every term this repo uses, in plain English. If you hit a word in the docs or a YAML comment that isn't here, ask Claude to add it.

API server — The part of Kubernetes every other piece (and every kubectl command) talks to. It's the front door: all reads and writes to the cluster's state go through it.

Application (Argo CD) — A Custom Resource (see CRD, below) that Argo CD adds to Kubernetes. It tells Argo CD "watch this path in this Git repo, and keep the cluster matching it." Not a Kubernetes-native concept — it only exists once Argo CD is installed.

app-of-apps — The pattern this repo uses: one Application (itself called the app-of-apps) watches a folder of other Application manifests, so adding a new app is "add a file," not "run a new command." See docs/04-app-of-apps.md.

ARP (Address Resolution Protocol) — How devices on the same local network find each other's hardware addresses. MetalLB's L2 mode works by answering ARP requests for whichever IP address it's handed out, which is what makes that address reachable from the rest of your LAN.

bootstrap — The one-time setup that has to happen before the normal system can take over and manage itself. Used here for talosctl bootstrap (initializes etcd, once, ever) and more generally for the handful of manual steps — installing Argo CD, applying the app-of-apps — that get the GitOps loop started before Git takes over.

cluster — A group of one or more machines (nodes) working together as one Kubernetes system. This repo's cluster starts as a single node.

CNI (Container Network Interface) — The plugin responsible for giving Pods network connectivity and IP addresses. Talos ships Flannel, a CNI, by default — you don't install one yourself in this setup.

ConfigMap — A Kubernetes object that holds configuration data (text, small files) as its own resource, separate from the Pod that uses it. Lets you change configuration without rebuilding a container image. Used for the demo app's HTML page.

control plane — The set of components that run the cluster itself (API server, scheduler, etcd) as opposed to your applications. Normally kept on separate machines from your workloads; this repo's single-node setup deliberately blurs that line for simplicity — see talos/patch-controlplane.yaml.

CRD (Custom Resource Definition) — A way to teach Kubernetes about a new kind of object beyond its built-ins (Pod, Service, etc.). Argo CD's install adds a CRD for Application, which is what lets you write kind: Application in YAML at all.

declarative — Describing the state you want ("one copy of nginx running"), and letting software figure out and continuously enforce the steps to get and stay there — as opposed to imperative, where you issue the individual commands yourself ("start this container now"). Kubernetes, Talos, and Argo CD are all declarative; the one-time install steps in this repo (installing Argo CD itself, applying the app-of-apps) are the deliberate imperative exceptions that get the declarative system started.

Deployment — A Kubernetes object describing how many copies of a container should run and how to run them. You manage Deployments; they, in turn, manage the actual Pods.

etcd — The database Kubernetes' control plane uses to store all cluster state. talosctl bootstrap initializes it, once, on cluster creation.

GitOps — Using a Git repository as the source of truth for a system's desired state, with automation (here, Argo CD) continuously reconciling the real system to match it. The core idea this whole repo demonstrates.

Ingress — A Kubernetes object that routes external HTTP(S) traffic to services inside the cluster by hostname/path, via an Ingress controller. Not used in this repo's v1 — see docs/08-growing-up.md.

IPAddressPool — A MetalLB custom resource (see CRD) declaring which IP addresses it's allowed to hand out to LoadBalancer Services. Configured in apps/metallb/templates/ipaddresspool.yaml — see docs/05-metallb.md.

kubeconfig — A file holding the credentials and connection info kubectl (and other Kubernetes tools) use to talk to a specific cluster. Retrieved with talosctl kubeconfig in this setup.

L2Advertisement — A MetalLB custom resource that tells it to advertise addresses from a given IPAddressPool using ARP (see above) — "Layer 2 mode," MetalLB's simplest mode and the one this repo uses. Configured in apps/metallb/templates/l2advertisement.yaml.

LoadBalancer (Service type) — A Service that requests a real, dedicated external IP address, reachable directly from outside the cluster. On a cloud provider this provisions an actual cloud load balancer; on bare metal (this repo) MetalLB fills that role instead — see docs/05-metallb.md.

machine config — Talos's equivalent of a Kubernetes manifest, but for the operating system itself: a declarative file describing how a node should be configured, generated with talosctl gen config and sent to the node with talosctl apply-config.

manifest — A YAML (or JSON) file describing a Kubernetes object's desired state. Every .yaml file in apps/ is a manifest.

MetalLB — Software installed in this repo (apps/metallb.yaml) that gives bare-metal Kubernetes clusters the ability to hand out real IP addresses to LoadBalancer Services — a job a cloud provider would normally do. See docs/05-metallb.md.

namespace — A way to group related objects inside a cluster, like a folder. Lets you keep different apps' resources organized and manageable independently.

node — A single machine (physical or virtual) that's part of a Kubernetes cluster.

Pod — The smallest deployable unit in Kubernetes: one or more containers that run together, sharing network and storage. You'll rarely create Pods directly — a Deployment creates and manages them for you.

reconciliation — The repeating process of comparing desired state (Git, for Argo CD) against actual state (the live cluster) and correcting any difference. See the diagram in docs/00-what-is-all-this.md.

Secret — A Kubernetes object for holding sensitive data. Its values are only base64-encoded, not encrypted — never commit a raw Secret manifest containing real credentials to Git. See docs/08-growing-up.md for how to do this safely.

selfHeal — An Argo CD sync policy setting: if the live cluster drifts from what's in Git (e.g. someone runs kubectl edit), Argo CD reverts it back to match Git on its next pass, rather than only fixing drift when you manually trigger a sync.

Service — A Kubernetes object giving a stable network address for a set of Pods, even as individual Pods are created and destroyed. This repo uses a LoadBalancer Service for the demo app, backed by MetalLB — see apps/demo/service.yaml and docs/05-metallb.md.

sync — Argo CD's term for actually applying a change (a reconciliation pass that found and fixed a difference). "Synced" means the cluster currently matches Git.

sync-wave — An Argo CD annotation (argocd.argoproj.io/sync-wave) that stages the order resources are applied within one Application's sync: lower numbers first, and Argo CD waits for a wave to be healthy before starting the next. Used in apps/metallb/templates/ so MetalLB's own resources (including its CRDs) apply before the IPAddressPool/L2Advertisement that depend on them — see docs/05-metallb.md.

Talos Linux — The operating system this repo's node(s) run: built only to run Kubernetes, configured entirely declaratively over the network, with no SSH or shell. See docs/02-talos-bootstrap.md.

talosconfig — The credentials file talosctl uses to talk to a Talos node's API — the Talos-level equivalent of a kubeconfig.