Ü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

In diesem Thema werden wichtige Überlegungen zur Verwendung der EKS-Funktion für KRO behandelt, 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 und benutzerdefinierter Infrastrukturmuster entwickelt APIs , die das komplexe Ressourcenmanagement vereinfachen.

Verwenden Sie kro, wenn Sie:

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

  • Standardisieren Sie die Infrastrukturmuster für alle Teams (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 benutzerdefiniert definieren APIs.

Erforderliche Berechtigungen:

  • Erstellen, aktualisieren, löschen ResourceGraphDefinitions

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

  • Zugriff auf alle Namespaces, in denen sie verwendet werden RGDs

Beispiel ClusterRole für ein Plattformteam:

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 von definiert sind, RGDs ohne die zugrundeliegende 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, hochrangige APIs

  • 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 Zeichenketten 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 Instanzen 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 RGDs sowohl als auch Instanzen für kleinere Organisationen

Überlegungen:

  • RGDs Vor den Instanzen bereitstellen (Argo CD Sync Waves kann 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: Mehr als 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, RGDs um zu steuern, wo Instanzen erstellt werden können

Versionierung und Updates

Planen Sie die RGD-Entwicklung und die Instanzmigration ein.

RGD-Aktualisierungen:

  • Wichtige Änderungen: RGD wurde bereits aktualisiert (optionale Felder und neue Ressourcen mit includeWhen hinzufügen)

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

  • Veraltet: Veraltete Version mit Anmerkungen markieren, Zeitplan für die Migration RGDs mitteilen

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 Produktion

  • 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 RGDs Sie vor der Bereitstellung in der Produktion.

Strategien zur Validierung:

  • Schemavalidierung: kro validiert die RGD-Struktur automatisch

  • Testinstanzen: 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