Kurzfassung
Eine CRD (Custom Resource Definition) ist ein Kubernetes-Erweiterungsmechanismus, der es Operatoren und Platform-Teams ermöglicht, neue Ressourcentypen in die Kubernetes-API einzuführen, sodass domänenspezifische Abstraktionen nativ von Kubernetes verwaltet werden können.
Was ist eine CRD?
Kubernetes wird mit integrierten Ressourcentypen wie Pods, Deployments und Services ausgeliefert. Eine Custom Resource Definition ermöglicht es Teams, völlig neue Ressourcentypen zu definieren, die Kubernetes mit demselben Lifecycle-Management wie integrierte Ressourcen behandelt – erstellen, lesen, aktualisieren, löschen und beobachten.
CRDs sind die Grundlage für das Kubernetes-Operator-Muster. Sobald eine CRD registriert ist, kann ein Controller (Operator) auf Instanzen dieser benutzerdefinierten Ressource reagieren und den gewünschten Zustand herstellen – beispielsweise die Bereitstellung eines Datenbank-Clusters, wenn eine Database-Ressource erstellt wird.
CRDs werden im Platform Engineering häufig verwendet, um Entwicklern übergeordnete Abstraktionen bereitzustellen. Anstatt mit Kubernetes-Primitiven zu arbeiten, kann ein Entwickler eine Application- oder Environment-Ressource erstellen, die ein plattformseitiger Operator in die entsprechende Infrastruktur übersetzt.
Warum ist eine CRD relevant?
- Erweiterbarkeit: CRDs ermöglichen es jedem Team, Kubernetes mit domänenspezifischen APIs zu erweitern, ohne den Kern zu verändern
- Operator-Muster: CRDs sind der Baustein für Kubernetes-Operatoren, die das Management komplexer zustandsbehafteter Anwendungen automatisieren
- Plattform-Abstraktionen: Platform-Engineering-Teams nutzen CRDs, um entwicklerfreundliche APIs auf Kubernetes-Basis bereitzustellen