Ein Kubernetes-Deployment ist ein Stapel YAML, der eine Form beschreibt, die er dir nie zeigt. Ein Ingress verweist per Name auf einen Service, der Service wählt Pods per Label aus, die Pods stammen aus einem Deployment, und irgendwo unterwegs werden eine ConfigMap und ein Secret eingebunden. Jede Verbindung ist ein String-Abgleich, vergraben in einer anderen Datei. Um zu verstehen, wie Traffic tatsächlich deinen Container erreicht, hältst du sechs Dokumente im Kopf und hoffst, dass du die Labels richtig zugeordnet hast.
Die Informationen sind alle da; sie werden nur nie gezeichnet. Also zeichne sie. Füge deine Manifeste in LetDraw ein, und es liest dieselben Felder wie Kubernetes (Selektoren, Namen, Referenzen) und ordnet ein Diagramm an, das zeigt, wie die Objekte verbunden sind. Aus einem Ordner voller YAML wird ein Bild, auf das du in einem Review zeigen kannst.
Die Manifeste beschreiben den Graphen bereits
Kubernetes ist im Kern ein Graph aus Objekten, die über Labels und Namen verdrahtet sind. Ein Ingress-Backend nennt einen Service; der Selektor eines Service passt auf die Labels einer Pod-Vorlage; ein Deployment besitzt diese Pods; Volumes referenzieren eine ConfigMap oder ein Secret per Name. Genau diese Referenzen sind die Kanten eines Diagramms. Du musst die Struktur nicht erfinden oder die Verbindungen erraten; sie stehen als wörtliche String-Abgleiche im YAML, und genau deshalb lassen sie sich sicher automatisch darstellen.
Einmal einfügen, ganzer Cluster
Du exportierst nichts Spezielles. Die Manifeste, die du ohnehin mit kubectl apply anwendest, sind die Eingabe. Hänge sie aneinander (oder nimm dieselbe Datei mit mehreren Dokumenten) und füge sie in "Aus Code generieren" ein; LetDraw parst die Objekte und zeichnet die Verbindungen, die es findet.
apiVersion: apps/v1 kind: Deployment metadata: { name: api } spec: replicas: 3 selector: { matchLabels: { app: api } } --- apiVersion: v1 kind: Service metadata: { name: api } spec: selector: { app: api } # ← matches the Deployment's pods ports: [{ port: 80, targetPort: 8080 }] --- apiVersion: networking.k8s.io/v1 kind: Ingress spec: rules: [{ http: { paths: [{ backend: { service: { name: api } } }] } }] # ← names the Service
Dieses selector: app: api und dieses service.name: api sind die Kanten. LetDraw folgt ihnen genauso wie der Cluster, also zeigt das Diagramm, wie Traffic wirklich fließt, nicht wie du dich daran erinnerst. Namespaces werden zu den Containern, in denen alles liegt, und die Icons machen jede Objektart auf einen Blick erkennbar.
Das YAML sagt, wie der Cluster verdrahtet ist. Das Diagramm ist genau diese Verdrahtung, sichtbar gemacht.
Jetzt ist es ein normales Diagramm
Sobald der Entwurf auf der Leinwand liegt, kannst du ihn gestalten, wie du willst. Hier wird das Bild zu etwas, das sich aufzuheben lohnt:
- Rauschen entfernen. Blende die Objekte aus, die nicht zur Geschichte gehören (die fünfzehnte ConfigMap, die in einem Onboarding-Diagramm niemand sehen muss), und stell den Request-Pfad in den Mittelpunkt.
- Knifflige Stellen kommentieren. Markiere, wo die Readiness Probe sitzt, welcher Service nur intern ist und woher das Secret tatsächlich kommt.
- Mehr als einen Namespace zeigen. Füge mehrere ein und lass die Grenzen das Multi-Tenant-Layout offensichtlich machen.
- Als Code behalten. Exportiere nach Mermaid oder D2 und leg es im Repo neben die Manifeste, damit das Diagramm mit dem Cluster ausgeliefert wird, den es beschreibt.
Sieh den Cluster, den du tatsächlich deployt hast
In der Lücke zwischen dem YAML, das du geschrieben hast, und dem Cluster, der läuft, verstecken sich Incidents: ein Selektor, der auf nichts passt, ein Service, der auf den falschen Port zeigt, eine Ingress-Route, die du vergessen hast. Wenn du die Manifeste zeichnest, werden diese Unstimmigkeiten zu etwas, das du sehen kannst, statt zu etwas, das du um 2 Uhr nachts entdeckst. Füge ein, was du ohnehin anwendest, erhalte ein Bild der Verbindungen und bewahre es neben dem Code auf, aus dem es entstanden ist.
Kopiere deine Manifeste, füge sie einmal ein und sieh zu, wie sich der Cluster von selbst zu einem Diagramm zusammensetzt.