View a markdown version of this page

Überlegungen zu Kro für EKS - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überlegungen zu Kro für EKS

Informieren Sie sich über wichtige Überlegungen zur Verwendung der verwalteten EKS-Funktion für KRO, einschließlich der Frage, wann die Ressourcenzusammensetzung, RBAC-Muster und die Integration mit anderen EKS-Funktionen verwendet werden sollten.

Wann sollte Kro verwendet werden

kro wurde für die Erstellung wiederverwendbarer Infrastrukturmuster und benutzerdefinierter APIs entwickelt, die das komplexe Ressourcenmanagement vereinfachen.

Verwenden Sie kro, wenn Sie:

  • Erstellen Sie Self-Service-Plattformen mit vereinfachten APIs für Anwendungsteams

  • Standardisieren Sie die Infrastrukturmuster teamübergreifend (Datenbank + Backup + Überwachung)

  • Verwalten Sie Ressourcenabhängigkeiten und geben Sie Werte zwischen Ressourcen weiter

  • Erstellen Sie benutzerdefinierte Abstraktionen, die die Komplexität der Implementierung verbergen

  • Stellen Sie mehrere ACK-Ressourcen zu übergeordneten Bausteinen zusammen

  • Ermöglichen Sie GitOps Workflows für komplexe Infrastruktur-Stacks

Verwenden Sie Kro nicht, wenn:

  • Verwaltung einfacher, eigenständiger Ressourcen (verwenden Sie ACK- oder Kubernetes-Ressourcen direkt)

  • Sie benötigen eine dynamische Laufzeitlogik (kro ist deklarativ, nicht zwingend erforderlich)

  • Ressourcen haben keine Abhängigkeiten oder eine gemeinsame Konfiguration

kro zeichnet sich durch die Schaffung von „gepflasterten Pfaden“ aus — eigensinnige, wiederverwendbare Muster, die es Teams leicht machen, komplexe Infrastrukturen korrekt bereitzustellen.

RBAC-Muster

kro ermöglicht die Trennung von Problemen zwischen Plattformteams, die Instanzen erstellen, ResourceGraphDefinitions und Anwendungsteams, die Instanzen erstellen.

Verantwortlichkeiten des Plattformteams

Plattformteams erstellen und verwalten ResourceGraphDefinitions (RGDs), die benutzerdefinierte APIs definieren.

Erforderliche Berechtigungen:

  • Erstellen, aktualisieren, löschen ResourceGraphDefinitions

  • Verwalten Sie die zugrunde liegenden Ressourcentypen (Bereitstellungen, Dienste, ACK-Ressourcen)

  • Zugriff auf alle Namespaces, in denen RGDs verwendet werden

Beispiel für ein Plattformteam: ClusterRole

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: platform-kro-admin rules: - apiGroups: ["kro.run"] resources: ["resourcegraphdefinitions"] verbs: ["*"] - apiGroups: ["*"] resources: ["*"] verbs: ["get", "list", "watch"]

Eine ausführliche RBAC-Konfiguration finden Sie unter. Kro-Berechtigungen konfigurieren

Verantwortlichkeiten des Anwendungsteams

Anwendungsteams erstellen Instanzen von benutzerdefinierten Ressourcen, die durch RGDs definiert werden, ohne die zugrunde liegende Komplexität verstehen zu müssen.

Erforderliche Berechtigungen:

  • Instanzen von benutzerdefinierten Ressourcen erstellen, aktualisieren und löschen

  • Lesezugriff auf ihren Namespace

  • Kein Zugriff auf zugrunde liegende Ressourcen oder RGDs

Vorteile:

  • Teams verwenden einfache APIs auf hoher Ebene

  • Plattformteams kontrollieren die Implementierungsdetails

  • Geringeres Risiko einer Fehlkonfiguration

  • Schnelleres Onboarding für neue Teammitglieder

Integration mit anderen EKS-Funktionen

Zusammenstellung von ACK-Ressourcen

Kro ist besonders leistungsfähig, wenn es mit ACK kombiniert wird, um Infrastrukturmuster zu erstellen.

Allgemeine Muster:

  • Anwendung mit Speicher: S3-Bucket + SQS-Warteschlange + Benachrichtigungskonfiguration

  • Datenbank-Stack: RDS-Instanz + Parametergruppe + Sicherheitsgruppe + Secrets Manager Secret

  • Netzwerk: VPC + Subnetze + Routentabellen + Sicherheitsgruppen + NAT-Gateways

  • Datenverarbeitung mit Speicher: EC2-Instanz + EBS-Volumes + IAM-Instanzprofil

kro kümmert sich um die Reihenfolge der Abhängigkeiten, übergibt Werte zwischen Ressourcen (wie ARNs und Verbindungszeichenfolgen) und verwaltet den gesamten Lebenszyklus als eine einzige Einheit.

Beispiele für das Zusammenstellen von ACK-Ressourcen finden Sie unter. ACK-Konzepte

GitOps mit Argo CD

Verwenden Sie die EKS-Funktion für Argo CD, um sowohl RGDs als auch Instanzen aus Git-Repositorys bereitzustellen.

Organisation des Repositorys:

  • Plattform-Repo: Enthält, die vom Plattformteam ResourceGraphDefinitions verwaltet werden

  • Anwendungs-Repos: Enthalten Instanzen von benutzerdefinierten Ressourcen, die von App-Teams verwaltet werden

  • Gemeinsames Repo: Enthält sowohl RGDs als auch Instanzen für kleinere Organisationen

Überlegungen:

  • Stellen Sie RGDs vor den Instanzen bereit (Argo CD Sync Waves können helfen)

  • Verwenden Sie separate Argo-CD-Projekte für Plattform- und Anwendungsteams

  • Das Plattformteam kontrolliert den Zugriff auf das RGD-Repository

  • Anwendungsteams haben nur Lesezugriff auf RGD-Definitionen

Weitere Informationen zu Argo CD finden Sie unter. Arbeiten mit Argo CD

Organisieren ResourceGraphDefinitions

Organisieren Sie RGDs nach Zweck, Komplexität und Eigentümerschaft.

Nach Zweck:

  • Infrastruktur: Datenbank-Stacks, Netzwerke, Speicher

  • Anwendung: Web-Apps, APIs, Batch-Jobs

  • Plattform: Gemeinsame Dienste, Überwachung, Protokollierung

Nach Komplexität:

  • Einfach: 2-3 Ressourcen mit minimalen Abhängigkeiten

  • Moderat: 5-10 Ressourcen mit einigen Abhängigkeiten

  • Komplex: Über 10 Ressourcen mit komplexen Abhängigkeiten

Benennungskonventionen:

  • Verwenden Sie beschreibende Namen:webapp-with-database, s3-notification-queue

  • Fügen Sie bei wichtigen Änderungen die Version in den Namen ein: webapp-v2

  • Verwenden Sie konsistente Präfixe für verwandte RGDs:, platform- app-

Namespace-Strategie:

  • RGDs sind clusterbezogen (nicht namespaces)

  • Instanzen haben einen Namespace

  • Verwenden Sie Namespace-Selektoren in RGDs, um zu steuern, wo Instanzen erstellt werden können

Versionierung und Updates

Planen Sie die RGD-Entwicklung und die Instanzmigration ein.

RGD-Aktualisierungen:

  • Non-breaking Änderungen: RGD an Ort und Stelle aktualisieren (optionale Felder hinzufügen, neue Ressourcen mit includeWhen hinzufügen)

  • Bahnbrechende Änderungen: Erstelle ein neues RGD mit einem anderen Namen (webapp-v2)

  • Veraltet: Markiere alte RGDs mit Anmerkungen, teile den Zeitplan für die Migration mit

Migration von Instanzen:

  • Erstellen Sie neue Instanzen mit aktualisiertem RGD

  • Stellen Sie sicher, dass neue Instanzen korrekt funktionieren

  • Löschen Sie alte Instanzen

  • kro verarbeitet die Aktualisierungen der zugrunde liegenden Ressourcen automatisch

Bewährte Verfahren:

  • Testen Sie RGD-Änderungen zunächst in Umgebungen außerhalb der Produktionsumgebung

  • Verwenden Sie für größere Änderungen die semantische Versionierung in RGD-Namen

  • Dokumentieren Sie wichtige Änderungen und Migrationspfade

  • Stellen Sie Migrationsbeispiele für Anwendungsteams bereit

Validierung und Testen

Validieren Sie RGDs, bevor Sie sie in der Produktion einsetzen.

Strategien zur Validierung:

  • Schemavalidierung: kro validiert die RGD-Struktur automatisch

  • Dry-run Instanzen: Erstellen Sie Testinstanzen in Entwicklungs-Namespaces

  • Integrationstests: Stellen Sie sicher, dass zusammengesetzte Ressourcen zusammenarbeiten

  • Durchsetzung von Richtlinien: Setzen Sie Zugangscontroller ein, um Unternehmensstandards durchzusetzen

Häufig zu testende Probleme:

  • Abhängigkeiten und Reihenfolge von Ressourcen

  • Werteübergabe zwischen Ressourcen (CEL-Ausdrücke)

  • Bedingte Einbeziehung von Ressourcen (includeWhen)

  • Weitergabe des Status anhand der zugrunde liegenden Ressourcen

  • RBAC-Berechtigungen für die Instanzerstellung

Upstream-Dokumentation

Ausführliche Informationen zur Verwendung von kro finden Sie unter

Nächste Schritte