Zum Hauptinhalt springen

Blogs

Kubernetes flexibel erweitern: Eigene Ressources mit CRDs erstellen

Warum Standard-Kubernetes nicht immer ausreicht

Kubernetes ist die führende Plattform zur Orchestrierung von Containern. Doch die nativen Ressourcen wie Pods, Services und Deployments decken nicht alle Anforderungen komplexer IT-Infrastrukturen ab.

Was, wenn Unternehmen spezielle Workflows oder Compliance-Vorgaben haben, die sich mit den bestehenden Kubernetes-Ressourcen nicht direkt abbilden lassen? Custom Resource Definitions (CRDs) bieten die Lösung: Sie ermöglichen es, Kubernetes mit maßgeschneiderten Ressourcen zu erweitern – ohne den Kubernetes-Core anzupassen.

 

Was sind Custom Resource Definitions (CRDs)?

CRDs ermöglichen es, eigene Kubernetes-Ressourcen zu definieren, die sich wie native Kubernetes-Objekte verhalten. Diese können dann mit den gewohnten Kubernetes-Tools (kubectl, API, Helm) verwaltet werden.

Wichtige Merkmale von CRDs

Flexibilität: Unternehmen können individuelle Ressourcen für spezifische Anforderungen definieren.
Integration: Custom Resources werden wie Standard-Ressourcen in Kubernetes verwaltet.
Automatisierung: In Kombination mit Custom Controllers lassen sich komplexe Prozesse automatisieren.

Beispiel: Ein EasterEgg-CRD

Ein einfaches YAML-Beispiel für ein Custom Resource Definition (CRD):

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: eastereggs.kubeops.net
spec:
  group: kubeops.net
  versions:
    - name: v1
      served: true
      storage: true
  scope: Namespaced
  names:
    plural: eastereggs
    singular: easteregg
    kind: EasterEgg
    shortNames:
      - ee

Sobald dieses CRD registriert ist, können Kubernetes-Nutzer eigene EasterEgg-Ressourcen anlegen:

apiVersion: kubeops.net/v1
kind: EasterEgg
metadata:
  name: example-easteregg
spec:
  message: "Hello, this is an Easter Egg!"

Dieses Prinzip lässt sich auf beliebig komplexe Anwendungen übertragen – von individuellen Sicherheitsrichtlinien bis hin zur automatisierten Verwaltung von Workloads.

 

Wofür werden CRDs eingesetzt?

CRDs eröffnen zahlreiche Anwendungsfälle, insbesondere in regulierten und sicherheitskritischen Umgebungen.

1. Automatisierung mit Kubernetes Operators

CRDs bilden die Grundlage für Operators, die komplexe Anwendungen in Kubernetes verwalten. Beispiele:

  • Automatisierte Verwaltung von Datenbanken (PostgreSQL Operator)
  • Lifecycle-Management für Machine Learning-Modelle
  • Steuerung von Backup- und Recovery-Prozessen

2. Sicherheits- und Compliance-Erweiterungen

Unternehmen können Kubernetes mit CRDs so erweitern, dass es Security- und Compliance-Vorgaben automatisch durchsetzt. Beispiele:

  • Definieren von Netzwerk- und Zugriffskontrollen als Kubernetes-Ressourcen
  • Automatisierte Sicherheitsrichtlinien für sensible Anwendungen
  • Auditing-Mechanismen zur Erfüllung von NIS2- oder ISO 27001-Anforderungen

3. Branchen- und Geschäftslogik abbilden

Besonders für Unternehmen mit spezialisierten Anforderungen sind CRDs wertvoll:

  • Finanzsektor: "Transaction" als benutzerdefinierte Kubernetes-Ressource
  • Gesundheitswesen: "PatientRecord" für medizinische Datenverwaltung
  • Industrie: "DeviceConfiguration" für IoT-Systeme

 

Best Practices für CRDs

Damit CRDs sicher und effizient genutzt werden, sollten folgende Best Practices eingehalten werden:

Validierung mit OpenAPI-Schema

  • Überprüfung der Datenstruktur, um fehlerhafte Einträge zu vermeiden.
  • Verhindert inkonsistente oder unvollständige Konfigurationen.

Versionierung & Abwärtskompatibilität

  • CRDs sollten mehrere Versionen unterstützen (v1, v2 etc.).
  • Ältere Versionen erst nach einer Übergangszeit auslaufen lassen.

RBAC & Sicherheitsrichtlinien

  • Rollentrennung: Wer darf CRDs erstellen, ändern oder löschen?
  • Begrenzung der Sichtbarkeit über Namespaces.

Monitoring & Logging

  • Proaktive Überwachung von Custom Resources zur Fehleranalyse und Optimierung.
  • Logs & Metriken zur Performance-Überprüfung.

Subresources für bessere API-Interaktion

  • /status: Trennt Statusinformationen von Konfigurationsdaten.
  • /scale: Ermöglicht die Skalierung von Custom Resources über Kubernetes-Mechanismen.

 

Fazit: Kubernetes individuell erweitern – ohne Vendor Lock-in

Custom Resource Definitions bieten Unternehmen die Möglichkeit, Kubernetes an spezifische Anforderungen anzupassen, ohne auf externe Tools angewiesen zu sein. Besonders für regulierte Branchen und sicherheitskritische Umgebungen wie KRITIS, Behörden und Finanzdienstleistungen sind CRDs ein wichtiges Werkzeug, um Automatisierung, Sicherheit und Compliance direkt in Kubernetes abzubilden.