Kubernetes als Steuerungsebene für alles: Crossplane v2
Was wäre, wenn Entwickler eine Datenbank bestellen könnten, so wie sie eine App bereitstellen?
Was wäre, wenn Entwickler eine Datenbank bestellen könnten, so wie sie eine App bereitstellen?

Hier ist eine häufige Situation. Ein Entwickler braucht eine Datenbank für einen neuen Dienst. Sie öffnen ein Ticket. Jemand im Einsatzteam schreibt Terraform, öffnet eine Anfrage, wartet auf die Überprüfung, wendet sie an und sendet die Verbindungsdetails zurück. Zwei Tage später kann der Entwickler endlich anfangen.
Crossplane stellt eine andere Frage: Was wäre, wenn der Entwickler einfach eine kleine YAML-Datei schreiben könnte, so wie sie ihre App bereitstellen, und eine ordnungsgemäß konfigurierte Datenbank wenige Minuten später bekommt?
Kubernetes ist in einer Sache sehr gut: Sie beschreiben, was Sie wollen, und die Controller arbeiten weiter, bis die Realität übereinstimmt. Crossplane erweitert diese Idee über Container hinaus. Es fügt Controller hinzu, die Cloud-Ressourcen erstellen und verwalten: Datenbanken, Eimer, Warteschlangen, Netzwerke, DNS-Einträge. Sie schreiben YAML, Crossplane spricht mit AWS, Azure oder Google Cloud und hält die Ressource im von Ihnen beschriebenen Zustand.
Das wirklich Interessante ist nicht die Verwaltung von Roh-Cloud-Ressourcen. Es ist... Erstellen Sie Ihre eigenen APIs Ich habe sie über ihnen.
Mit Crossplane definiert das Plattformteam eine einfache, firmenspezifische Ressource, zum Beispiel Database, wobei nur die Felder, die Entwickler interessieren sollten:
apiVersion: platform.example.com/v1alpha1
kind: Database
metadata:
name: orders-db
namespace: shop
spec:
engine: postgres
size: small
Hinter den Kulissen Zusammensetzung macht das zu allem, was das Unternehmen braucht: eine RDS-Instanz mit der richtigen Version, Verschlüsselung, Backups, eine Subnetzgruppe, Sicherheitsgruppenregeln, Überwachung und ein Kubernetes-Geheimnis mit den Verbindungsdetails. Der Bauherr sieht fünf Zeilen. Das Plattformteam kontrolliert die anderen 200.
Das Schema dieser benutzerdefinierten Ressource ist in einem Die Definition der CompositeResource (XRD)- Ich weiß . Das ist, wo Sie setzen, was erlaubt ist: vielleicht nur small, medium und largeVielleicht nur Postgres.
Crossplane ermöglicht es dem Plattformteam, "wie wir Datenbanken hier machen" in eine API statt einer Wiki-Seite zu verwandeln.
Crossplane v2 vereinfachte das Modell in einigen wichtigen Punkten:
Wenn Sie vor ein paar Jahren Crossplane ausprobiert haben und es schwer gefunden haben, ist V2 einen zweiten Blick wert.
Diese Frage kommt immer auf, und die ehrliche Antwort ist: Sie sind gut in verschiedenen Dingen.
Terraform (oder OpenTofu) ist ideal für Infrastruktur, die das Plattformteam besitzt und absichtlich ändert: Netzwerke, Cluster, Konten. Es läuft, wenn du es machst, zeigt einen Plan und stoppt.
Überlaufflugzeug ist großartig für Self-Service-Ressourcen, die viele Teams oft benötigen: Datenbanken, Eimer, Warteschlangen pro Dienst. Es läuft kontinuierlich, fixiert automatisch Drift und passt in GitOps mit Argo CD oder Flux.
Viele Teams verwenden beides. Terraform baut das Fundament, einschließlich des Clusters, das Crossplane betreibt. Crossplane bietet die Selbstbedienungsschicht oben.
Wenn ich Crossplane zum ersten Mal probieren würde, würde ich den Bereich klein halten:
Database mit zwei Feldern.Database in einem Namespace und sehen Sie, wie es in Ihrer Cloud-Konsole erscheint.Dann zeig es einem Entwickler und frage ihn, ob es nützlich ist. Dieses Gespräch ist wertvoller als jedes Architekturdiagramm.
kubectl describe und Crossplane's Spurenwerkzeug früh.Meine Meinung: Crossplane glänzt, wenn man es als eine Möglichkeit betrachtet, seine eigene Plattform-API zu erstellen, nicht nur eine andere Möglichkeit, Infrastruktur zu schreiben.
Desly