Deine erste eigene App per YAML — mit Sicherheitsnetz, bevor du schreibst.
Jetzt der erste schreibende Befehl. Wir machen es so, wie man es im Job tut: in einem eigenen Namespace, mit Vorschau, ohne Risiko fürs Bestehende.
Jedes Objekt hat dieselben vier Top-Level-Felder:
apiVersion: apps/v1 # welche API-Version
kind: Deployment # welcher Objekttyp
metadata: # Name, Namespace, Labels
name: web
spec: # der gewünschte Soll-Zustand
replicas: 2
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: nginx:1.27
ports:
- containerPort: 80
„Was — Wie heißt's — Was soll's sein“: apiVersion+kind (was),
metadata (wie heißt's), spec (was soll's sein). Diese Struktur hat jedes Objekt.
Drei Schritte, immer in dieser Reihenfolge:
| Schritt | Befehl | Warum |
|---|---|---|
| 1. Validieren | apply --dry-run=server | Server prüft das YAML, schreibt aber nichts. |
| 2. Vorschau | kubectl diff -f | Zeigt genau, was sich ändern würde. |
| 3. Anwenden | kubectl apply -f | Gleicht den Cluster an dein Manifest an. |
--dry-run=client prüft nur lokal die Form (gut zum YAML-Erzeugen).
--dry-run=server schickt es an den API-Server, der es echt validiert (Admission, Schema) — aber nichts speichert. Im Zweifel server.
Ein eigener Namespace lernen hält deine Übungen sauber getrennt vom Rest des Clusters.
# 0) Sicherheit: wo bin ich?
kubectl config current-context
# 1) Übungs-Namespace anlegen
kubectl create namespace lernen
# 2) Manifest erzeugen lassen (imperativ → YAML), NICHT anwenden
kubectl create deployment web --image=nginx:1.27 -n lernen \
--dry-run=client -o yaml > web.yaml
# 3) web.yaml ansehen/anpassen (z.B. replicas: 2)
# 4) Validieren — schreibt nichts
kubectl apply -f web.yaml --dry-run=server
# 5) Anwenden
kubectl apply -f web.yaml
# 6) Kontrolle (Lektion 2 lässt grüßen)
kubectl get deploy,pods -n lernen
apply nochmal aufrufen schadet nicht — gleicht nur ab. Es ist wie ein Thermostat,
nicht wie ein Lichtschalter: du sagst „so soll es sein“, nicht „tu das jetzt einmal“.
apply zweimal aus. Folge?apply und create?“,
„Wie räume ich die Übung wieder auf?“ (Vorschau: Lektion 9) oder
„Was bedeutet nginx:1.27 vs. nginx:latest?“