Custom Resource Definitions (CRDs)
Lernen Sie, wie Custom Resource Definitions die Kubernetes-API um eigene Ressourcentypen erweitern – die Grundlage, auf der Operators aufbauen.
Custom Resource Definitions (CRDs) ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Die Kubernetes-API erweitern
Integrierte Objekte wie Pods und Deployments sind nicht die Grenze. Mit einer Custom Resource Definition (CRD) können Sie Kubernetes völlig neue Ressourcentypen beibringen.
Was ist eine Custom Resource?
Eine Custom Resource (CR) ist eine Instanz eines von Ihnen definierten Typs. Sobald eine CRD installiert ist, erstellen Sie CRs mit kubectl genauso wie native Objekte.
Aufbau einer CRD
Eine CRD definiert die neue Ressourcenart, ihre API-Gruppe, Version und ihren Geltungsbereich (Namespace-bezogen oder clusterweit).
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: backups.data.example.com
spec:
group: data.example.com
scope: Namespaced
names:
plural: backups
singular: backup
kind: BackupDas Schema definieren
Ein OpenAPI-Schema validiert die Felder Ihrer Custom Resource und weist ungültige Spezifikationen bereits beim Erstellen zurück.
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
schedule:
type: string
retention:
type: integerEine Custom Resource erstellen
Nachdem die CRD angewendet wurde, erstellen Sie Instanzen Ihres neuen Typs.
apiVersion: data.example.com/v1
kind: Backup
metadata:
name: nightly-db
spec:
schedule: '0 2 * * *'
retention: 7Mit CRs über kubectl arbeiten
Custom Resources sind gleichberechtigte Ressourcen. Sie listen sie auf, beschreiben und löschen sie mit den vertrauten Befehlen.
kubectl get backups
kubectl describe backup nightly-db
kubectl delete backup nightly-dbKurznamen und Druckspalten
Sie können Kurznamen und benutzerdefinierte Tabellenspalten definieren, um die Arbeit mit CRs angenehmer zu machen.
names:
shortNames: ['bk']
additionalPrinterColumns:
- name: Schedule
type: string
jsonPath: .spec.scheduleCRDs sind nur Daten
Eine CRD speichert selbst lediglich Daten in etcd. Nichts verarbeitet diese Daten. Damit ein Backup tatsächlich ausgeführt wird, benötigen Sie einen Controller, der diese Ressourcen überwacht.
Die Verbindung zu Operators
Ein Operator ist ein Controller zusammen mit einer oder mehreren CRDs. Die CRD definiert den gewünschten Zustand; der Controller gleicht den tatsächlichen Zustand kontinuierlich daran an. CRDs bilden die Grundlage, auf der Operators aufbauen.
CRDs versionieren
CRDs unterstützen mehrere Versionen mit Konvertierung, sodass Sie Ihre API weiterentwickeln können. Genau eine Version ist als Speicherversion in etcd gekennzeichnet.
versions:
- name: v1beta1
served: true
storage: false
- name: v1
served: true
storage: trueWann Sie CRDs verwenden sollten
- Sie möchten ein Domänenkonzept deklarativ modellieren, etwa Backup, Datenbank oder Zertifikat
- Sie entwickeln einen Operator, um Abläufe zu automatisieren
- Sie möchten, dass Benutzer Ihre App mit vertrauten kubectl-Workflows verwalten
Kurztest
Testen Sie Ihr Verständnis von CRDs.
Zusammenfassung
Sie haben gelernt, dass CRDs die Kubernetes-API um benutzerdefinierte Typen erweitern, die durch ein OpenAPI-Schema validiert und mit normalen kubectl-Befehlen verwaltet werden. Eine CRD allein speichert lediglich Daten. Zusammen mit einem Controller entsteht ein Operator, der den gewünschten Zustand kontinuierlich abgleicht.
Häufig gestellte Fragen
Ist die Lektion „Custom Resource Definitions (CRDs)“ kostenlos?
Ja — der vollständige Text von „Custom Resource Definitions (CRDs)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Custom Resource Definitions (CRDs)“?
Lernen Sie, wie Custom Resource Definitions die Kubernetes-API um eigene Ressourcentypen erweitern – die Grundlage, auf der Operators aufbauen. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Custom Resource Definitions (CRDs)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- StatefulSets für zustandsbehaftete Apps
- DaemonSets für Node-spezifische Aufgaben
- Kubernetes-Operatoren verstehen
- Custom Resource Definitions (CRDs)