

 **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.

# EKS-Fähigkeiten
<a name="capabilities"></a>

**Tipp**  
[Erste Schritte: [ACK-Fähigkeit erstellen](create-ack-capability.md) \$1 [Argo-CD-Funktion erstellen \$1 Kro-Fähigkeit](create-argocd-capability.md) erstellen](create-kro-capability.md) 

Amazon EKS Capabilities ist ein mehrschichtiger Satz vollständig verwalteter Cluster-Funktionen, mit denen Entwickler schneller arbeiten und die Komplexität der Erstellung und Skalierung mit Kubernetes verringern können. EKS-Funktionen sind native Kubernetes-Funktionen für die deklarative kontinuierliche Bereitstellung, das AWS Ressourcenmanagement sowie die Erstellung und Orchestrierung von Kubernetes-Ressourcen, die alle vollständig von verwaltet werden. AWS Mit EKS Capabilities können Sie sich mehr auf den Aufbau und die Skalierung Ihrer Workloads konzentrieren und die betriebliche Belastung dieser grundlegenden Plattformdienste auf diese abwälzen. AWS Diese Funktionen werden innerhalb von EKS und nicht in Ihren Clustern ausgeführt, sodass Sie wichtige Plattformkomponenten auf Ihren Worker-Knoten nicht mehr installieren, warten und skalieren müssen.

Zu Beginn können Sie eine oder mehrere EKS-Funktionen auf einem neuen oder vorhandenen EKS-Cluster erstellen. Dazu können Sie die AWS CLI, EKS AWS-Managementkonsole APIs, eksctl oder Ihre bevorzugten infrastructure-as-code Tools verwenden. EKS-Funktionen sind zwar so konzipiert, dass sie zusammenarbeiten, es handelt sich jedoch um unabhängige Cloud-Ressourcen, die Sie je nach Anwendungsfall und Anforderungen auswählen können.

Alle von EKS unterstützten Kubernetes-Versionen werden für EKS-Funktionen unterstützt.

**Anmerkung**  
EKS-Funktionen sind in allen AWS Handelsregionen verfügbar, in denen Amazon EKS verfügbar ist. Eine Liste der unterstützten Regionen finden Sie unter [Amazon EKS-Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/eks.html) in der AWS Allgemeinen Referenz.

## Verfügbare Funktionen
<a name="_available_capabilities"></a>

### AWS Controller für Kubernetes (ACK)
<a name="shared_aws_controllers_for_kubernetes_ack"></a>

ACK ermöglicht die Verwaltung von AWS Ressourcen mithilfe von Kubernetes APIs, sodass Sie S3-Buckets, RDS-Datenbanken, IAM-Rollen und andere AWS Ressourcen mithilfe von benutzerdefinierten Kubernetes-Ressourcen erstellen und verwalten können. ACK gleicht Ihren gewünschten Status kontinuierlich mit dem aktuellen Status ab und korrigiert alle Abweichungen im Laufe der Zeit AWS, um sicherzustellen, dass Ihr System einwandfrei funktioniert und Ihre Ressourcen wie angegeben konfiguriert sind. Sie können AWS Ressourcen zusammen mit Ihren Kubernetes-Workloads mithilfe derselben Tools und Workflows verwalten, wobei mehr als 50 AWS Dienste unterstützt werden, darunter S3, RDS, DynamoDB und Lambda. ACK unterstützt konto- und regionsübergreifendes Ressourcenmanagement und ermöglicht so komplexe Systemverwaltungsarchitekturen mit mehreren Konten und Clustern. ACK unterstützt schreibgeschützte Ressourcen und die Einführung von schreibgeschützten Ressourcen und erleichtert so die Migration von anderen Infrastruktur-as-Code-Tools zu Ihren Kubernetes-basierten Systemen.

 [Erfahren Sie mehr über ACK →](ack.md) 

### Argo CD
<a name="_argo_cd"></a>

Argo CD implementiert eine GitOps basierte kontinuierliche Bereitstellung für Ihre Anwendungen und verwendet Git-Repositorys als Informationsquelle für Ihre Workloads und den Systemstatus. Argo CD synchronisiert automatisch Anwendungsressourcen aus Ihren Git-Repositorys mit Ihren Clustern und erkennt und behebt Abweichungen, um sicherzustellen, dass Ihre bereitgestellten Anwendungen dem gewünschten Status entsprechen. Sie können Anwendungen in mehreren Clustern von einer einzigen Argo-CD-Instanz aus bereitstellen und verwalten, wobei die automatische Bereitstellung aus Git-Repositorys erfolgt, wann immer Änderungen festgeschrieben werden. Die gemeinsame Verwendung von Argo CD und ACK bietet ein grundlegendes GitOps System, das die Verwaltung der Abhängigkeit von Arbeitslasten vereinfacht und Systemdesigns unterstützt, einschließlich Cluster- und Infrastrukturmanagement im großen Maßstab. Argo CD lässt sich zur Authentifizierung und Autorisierung in AWS Identity Center integrieren und bietet eine gehostete Argo-Benutzeroberfläche zur Visualisierung des Anwendungszustands und des Bereitstellungsstatus.

 [Erfahren Sie mehr über Argo CD →](argocd.md) 

### kro (Kube Resource Orchestrator)
<a name="_kro_kube_resource_orchestrator"></a>

Mit kro können Sie benutzerdefinierte Kubernetes erstellen, die mehrere Ressourcen zu Abstraktionen auf höherer Ebene zusammensetzen APIs , sodass Plattformteams wiederverwendbare Muster für gängige Ressourcenkombinationen — Cloud-Bausteine — definieren können. Mit kro können Sie sowohl Kubernetes als auch AWS Ressourcen zu einheitlichen Abstraktionen zusammenfassen und dabei eine einfache Syntax verwenden, um dynamische Konfigurationen und bedingte Logik zu ermöglichen. kro ermöglicht es Plattformteams, Self-Service-Funktionen mit geeigneten Leitplanken bereitzustellen, sodass Entwickler komplexe Infrastrukturen mithilfe einfacher, speziell entwickelter Systeme bereitstellen und APIs gleichzeitig organisatorische Standards und Best Practices einhalten können. KRO-Ressourcen sind einfach Kubernetes-Ressourcen und werden in Kubernetes-Manifesten spezifiziert, die in Git gespeichert oder per Push übertragen werden können zu OCI- kompatible Register wie Amazon ECR für eine breite organisatorische Verteilung.

 [Erfahren Sie mehr über Kro →](kro.md) 

## Vorteile der EKS-Fähigkeiten
<a name="_benefits_of_eks_capabilities"></a>

Die Funktionen von EKS werden vollständig von verwaltet AWS, sodass keine Installation, Wartung und Skalierung grundlegender Cluster-Services erforderlich sind. AWS kümmert sich um Sicherheitspatches, Updates und Betriebsmanagement, sodass sich Ihre Teams auf die Entwicklung und AWS nicht auf den Clusterbetrieb konzentrieren können. Im Gegensatz zu herkömmlichen Kubernetes-Add-Ons, die Cluster-Ressourcen verbrauchen, werden Funktionen in EKS und nicht auf Ihren Worker-Knoten ausgeführt. Dadurch werden Clusterkapazität und Ressourcen für Ihre Workloads freigegeben und gleichzeitig der Betriebsaufwand für die Verwaltung von Cluster-Controllern und anderen Plattformkomponenten minimiert.

Mit EKS-Funktionen können Sie Bereitstellungen, Ressourcen, benutzerdefinierte AWS Kubernetes-Ressourcen und Kompositionen mithilfe von nativem Kubernetes und Tools wie verwalten. APIs `kubectl` Alle Funktionen funktionieren im Kontext Ihrer Cluster und erkennen und korrigieren automatisch Konfigurationsabweichungen sowohl bei Anwendungs- als auch bei Cloud-Infrastrukturressourcen. Sie können Ressourcen für mehrere Cluster, AWS Konten und Regionen von einem einzigen Kontrollpunkt aus bereitstellen und verwalten und so den Betrieb in komplexen, verteilten Umgebungen vereinfachen.

Die EKS-Funktionen sind für GitOps Workflows konzipiert und bieten deklaratives, versionskontrolliertes Infrastruktur- und Anwendungsmanagement. Änderungen fließen von Git durch das System und bieten Audit-Trails, Rollback-Funktionen und Workflows für die Zusammenarbeit, die sich in Ihre bestehenden Entwicklungspraktiken integrieren lassen. Dieser Kubernetes-native Ansatz bedeutet, dass Sie nicht mehrere Tools verwenden oder infrastructure-as-code Systeme außerhalb Ihrer Cluster verwalten müssen, und es gibt eine einzige Informationsquelle, auf die Sie sich verlassen können. Ihr gewünschter Status, der in der deklarativen Konfiguration von Kubernetes mit Versionskontrolle definiert ist, wird in Ihrer gesamten Umgebung kontinuierlich durchgesetzt.

## Preisgestaltung
<a name="_pricing"></a>

Mit EKS-Funktionen gibt es keine Vorabverpflichtungen oder Mindestgebühren. Ihnen wird jede Capability-Ressource für jede Stunde, in der sie in Ihrem Amazon EKS-Cluster aktiv ist, in Rechnung gestellt. Bestimmte Kubernetes-Ressourcen, die von EKS Capabilities verwaltet werden, werden ebenfalls nach einem Stundensatz abgerechnet.

Aktuelle Preisinformationen finden Sie auf der [Amazon EKS-Preisseite](https://aws.amazon.com/eks/pricing/).

**Tipp**  
Sie können den AWS Cost Explorer und die Kosten- und Nutzungsberichte verwenden, um die Kapazitätskosten getrennt von anderen EKS-Gebühren zu verfolgen. Sie können Ihre Kapazitäten mit Clusternamen, Fähigkeitstyp und anderen Details zur Kostenzuweisung kennzeichnen.

## So funktionieren die Funktionen von EKS
<a name="_how_eks_capabilities_work"></a>

Jede Funktion ist eine AWS Ressource, die Sie auf Ihrem EKS-Cluster erstellen. Nach der Erstellung wird die Funktion in EKS ausgeführt und vollständig von verwaltet AWS.

**Anmerkung**  
Sie können für jeden Typ (Argo CD, ACK und Kro) eine Capability-Ressource für einen bestimmten Cluster erstellen. Sie können nicht mehrere Capability-Ressourcen desselben Typs auf demselben Cluster erstellen.

Sie interagieren mit den Funktionen in Ihrem Cluster mithilfe von Standard-Kubernetes APIs und Tools:
+ Wird verwendet`kubectl`, um benutzerdefinierte Kubernetes-Ressourcen anzuwenden
+ Verwenden Sie Git-Repositorys als Informationsquelle für Workflows GitOps 

Für einige Funktionen werden zusätzliche Tools unterstützt. Beispiel:
+ Verwenden Sie die Argo-CD-CLI, um Repositorys und Cluster in Ihrer Argo-CD-Funktion zu konfigurieren und zu verwalten
+ Verwenden Sie die Argo-CD-Benutzeroberfläche, um Anwendungen zu visualisieren und zu verwalten, die von Ihrer Argo-CD-Funktion verwaltet werden

Die Funktionen sind so konzipiert, dass sie zusammenarbeiten, aber unabhängig voneinander und vollständig aktiviert sind. Sie können je nach Bedarf eine, zwei oder alle drei Funktionen aktivieren und Ihre Konfiguration aktualisieren, wenn sich Ihre Anforderungen weiterentwickeln.

Alle EKS-Compute-Typen werden für die Verwendung mit EKS-Funktionen unterstützt. Weitere Informationen finden Sie unter [Verwaltung von Datenverarbeitungsressourcen mithilfe von Knoten](eks-compute.md).

Informationen zur Sicherheitskonfiguration und Einzelheiten zu IAM-Rollen finden Sie unter[Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md). Architekturmuster für mehrere Cluster finden Sie unter. [Überlegungen zu den EKS-Fähigkeiten](capabilities-considerations.md)

## Häufige Anwendungsfälle
<a name="_common_use_cases"></a>

 **GitOps für Anwendungen und Infrastruktur** 

Verwenden Sie Argo CD, um Anwendungen und Betriebskomponenten bereitzustellen, und ACK, um Clusterkonfigurationen zu verwalten und Infrastruktur bereitzustellen, beide aus Git-Repositorys. Ihr gesamter Stack — Anwendungen, Datenbanken, Speicher und Netzwerke — wird als Code definiert und automatisch bereitgestellt.

Beispiel: Ein Entwicklungsteam überträgt Änderungen an Git. Argo CD stellt die aktualisierte Anwendung bereit und ACK stellt eine neue RDS-Datenbank mit der richtigen Konfiguration bereit. Alle Änderungen sind überprüfbar, reversibel und in allen Umgebungen konsistent.

 **Plattformentwicklung mit Self-Service** 

Verwenden Sie kro, um benutzerdefinierte APIs ACK- und Kubernetes-Ressourcen zu erstellen. Plattformteams definieren genehmigte Muster anhand von Leitplanken. Anwendungsteams verwenden einfache, übergeordnete Methoden, APIs um komplette Stacks bereitzustellen.

Beispiel: Ein Plattformteam erstellt eine "WebApplication" API, die einen Deployment-, Service-, Ingress- und S3-Bucket bereitstellt. Entwickler verwenden diese API, ohne die zugrunde liegende Komplexität oder AWS die Berechtigungen verstehen zu müssen.

 **Anwendungsmanagement mit mehreren Clustern** 

Verwenden Sie Argo CD, um Anwendungen auf mehreren EKS-Clustern in verschiedenen Regionen oder Konten bereitzustellen. Verwalten Sie alle Bereitstellungen von einer einzigen Argo CD-Instanz aus mit konsistenten Richtlinien und Workflows.

Beispiel: Stellen Sie dieselbe Anwendung für Entwicklungs-, Staging- und Produktionscluster in mehreren Regionen bereit. Argo CD stellt sicher, dass jede Umgebung mit dem entsprechenden Git-Zweig synchron bleibt.

 **Verwaltung mehrerer Cluster** 

Verwenden Sie ACK, um EKS-Cluster zu definieren und bereitzustellen, Kro, um Cluster-Konfigurationen an organisatorische Standards anzupassen, und Argo CD, um den Cluster-Lebenszyklus und die Konfiguration zu verwalten. Dies ermöglicht die end-to-end Clusterverwaltung von der Erstellung bis zum laufenden Betrieb.

Beispiel: Definieren Sie EKS-Cluster mithilfe von ACK und Kro zur Bereitstellung und Verwaltung der Cluster-Infrastruktur und definieren Sie organisatorische Standards für Netzwerke, Sicherheitsrichtlinien, Add-Ons und andere Konfigurationen. Verwenden Sie Argo CD, um Cluster, Konfigurationen und Kubernetes-Versionsupdates für Ihre gesamte Flotte zu erstellen und kontinuierlich zu verwalten. Dabei profitieren Sie von konsistenten Standards und automatisiertem Lebenszyklusmanagement.

 **Migrationen und Modernisierung** 

Vereinfachen Sie die Migration zu EKS mit nativer Cloud-Ressourcenbereitstellung und Workflows. GitOps Verwenden Sie ACK, um vorhandene AWS Ressourcen zu übernehmen, ohne sie neu zu erstellen, und Argo CD, um Workload-Bereitstellungen von Git aus zu operationalisieren.

Beispiel: Ein Team, das von EC2 zu EKS migriert, übernimmt seine vorhandenen RDS-Datenbanken und S3-Buckets mithilfe von ACK und verwendet dann Argo CD, um containerisierte Anwendungen von Git bereitzustellen. Der Migrationspfad ist klar und die Abläufe sind vom ersten Tag an standardisiert.

 **Konto und regionales Bootstrapping** 

Automatisieren Sie die Implementierung der Infrastruktur über Konten und Regionen hinweg, indem Sie Argo CD und ACK zusammen verwenden. Definieren Sie Ihre Infrastruktur als Code in Git und lassen Sie Capabilities die Bereitstellung und Verwaltung übernehmen.

Beispiel: Ein Plattformteam verwaltet Git-Repositorys, in denen StandardkontenkonfigurationenVPCs, IAM-Rollen, RDS-Instanzen und Monitoring-Stacks definiert werden. Argo CD stellt diese Konfigurationen automatisch für neue Konten und Regionen bereit, wodurch Konsistenz gewährleistet und die Zeit für die manuelle Einrichtung von Tagen auf Minuten reduziert wird.

# Mit Capability-Ressourcen arbeiten
<a name="working-with-capabilities"></a>

In diesem Thema werden allgemeine Verfahren zur Verwaltung von Fähigkeitsressourcen für alle Fähigkeitstypen beschrieben.

## Ressourcen für EKS-Fähigkeiten
<a name="_eks_capability_resources"></a>

EKS-Funktionen sind AWS Ressourcen, die verwaltete Funktionen in Ihrem Amazon EKS-Cluster ermöglichen. Die Funktionen werden in EKS ausgeführt, sodass Sie keine Controller und andere Betriebskomponenten auf Ihren Worker-Knoten installieren und warten müssen. Funktionen werden für einen bestimmten EKS-Cluster erstellt und bleiben während ihres gesamten Lebenszyklus diesem Cluster zugeordnet.

Jede Capability-Ressource hat:
+ Ein eindeutiger Name innerhalb Ihres Clusters
+ Ein Fähigkeitstyp (ACK, ARGOCD oder KRO)
+ Ein Amazon-Ressourcenname (ARN), der sowohl Name als auch Typ angibt
+ Eine IAM-Rolle für Fähigkeiten
+ Ein Status, der den aktuellen Status angibt
+ Konfiguration, sowohl generisch als auch spezifisch für den Funktionstyp

## Den Status der Fähigkeit verstehen
<a name="_understanding_capability_status"></a>

Fähigkeitsressourcen haben einen Status, der ihren aktuellen Status angibt. Sie können den Status und den Zustand der Funktionen in der EKS-Konsole oder über die AWS CLI anzeigen.

 **Konsole**:

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus.

1. Wählen Sie die Registerkarte **Funktionen**, um den Status aller Funktionen anzuzeigen.

1. Für detaillierte Gesundheitsinformationen wählen Sie die Registerkarte **Observability**, dann **Monitor cluster** und dann die Registerkarte **Capabilities**.

 ** AWS CLI**:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-capability-name
```

### Status der Fähigkeiten
<a name="_capability_statuses"></a>

 **ERSTELLUNG**: Die Fähigkeit wird eingerichtet. Sie können von der Konsole weg navigieren — die Funktion erstellt weiterhin im Hintergrund.

 **AKTIV**: Die Funktion wird ausgeführt und ist einsatzbereit. Wenn Ressourcen nicht wie erwartet funktionieren, überprüfen Sie den Ressourcenstatus und die IAM-Berechtigungen. Anleitungen finden Sie unter [Problembehebung bei EKS-Funktionen](capabilities-troubleshooting.md).

 **AKTUALISIERUNG**: Die Konfigurationsänderungen werden übernommen. Warten Sie, bis der Status wieder angezeigt wird`ACTIVE`.

 **LÖSCHEN**: Die Fähigkeit wird aus dem Cluster entfernt.

 **CREATE\$1FAILED**: Beim Setup ist ein Fehler aufgetreten. Zu den häufigsten Ursachen gehören:
+ Die Vertrauensrichtlinie für IAM-Rollen ist falsch oder fehlt
+ Die IAM-Rolle ist nicht vorhanden oder es kann nicht darauf zugegriffen werden
+ Probleme mit dem Clusterzugriff
+ Ungültige Konfigurationsparameter

Spezifische Fehlerdetails finden Sie im Abschnitt zur Funktionsintegrität.

 **UPDATE\$1FAILED: Das Konfigurationsupdate ist fehlgeschlagen**. Einzelheiten finden Sie im Abschnitt zur Funktionsintegrität und überprüfen Sie die IAM-Berechtigungen.

**Tipp**  
Eine ausführliche Anleitung zur Fehlerbehebung finden Sie unter:  
 [Problembehebung bei EKS-Funktionen](capabilities-troubleshooting.md)- Allgemeine Problembehebung bei Funktionen
 [Probleme mit ACK-Funktionen beheben](ack-troubleshooting.md)- ACK-spezifische Probleme
 [Probleme mit den Funktionen von Argo CD beheben](argocd-troubleshooting.md)- CD-spezifische Probleme mit Argo
 [Probleme mit KRO-Funktionen beheben](kro-troubleshooting.md)- Kro-spezifische Probleme

## Fähigkeiten schaffen
<a name="_create_capabilities"></a>

Informationen zum Erstellen einer Funktion in Ihrem Cluster finden Sie in den folgenden Themen:
+  [Erstellen Sie eine ACK-Fähigkeit](create-ack-capability.md)— Erstellen Sie eine ACK-Fähigkeit zur Verwaltung von AWS Ressourcen mithilfe von Kubernetes APIs
+  [Erstellen einer Argo CD-Funktion](create-argocd-capability.md)— Erstellen Sie eine Argo-CD-Funktion für kontinuierliche Bereitstellung GitOps 
+  [Eine Kro-Fähigkeit erstellen](create-kro-capability.md)— Schaffen Sie eine Kro-Funktion für die Zusammenstellung und Orchestrierung von Ressourcen

## Funktionen auflisten
<a name="_list_capabilities"></a>

Sie können alle Capability-Ressourcen in einem Cluster auflisten.

### Konsole
<a name="_console"></a>

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus, um die Cluster-Detailseite zu öffnen.

1. Wählen Sie die Registerkarte **Funktionen**.

1. Sehen Sie sich die Ressourcen zu den Funktionen unter **Verwaltete Funktionen** an.

### AWS CLI
<a name="shared_aws_cli"></a>

Verwenden Sie den `list-capabilities` Befehl, um alle Funktionen Ihres Clusters anzuzeigen. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
aws eks list-capabilities \
  --region region-code \
  --cluster-name my-cluster
```

```
{
    "capabilities": [
        {
            "capabilityName": "my-ack",
            "arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack/abc123",
            "type": "ACK",
            "status": "ACTIVE",
            "createdAt": "2025-11-02T10:30:00.000000-07:00",
            "modifiedAt": "2025-11-02T10:32:15.000000-07:00",
        },
        {
            "capabilityName": "my-kro",
            "arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/kro/my-kro/abc123",
            "type": "KRO",
            "status": "ACTIVE",
            "version": "v0.6.3",
            "createdAt": "2025-11-02T10:30:00.000000-07:00",
            "modifiedAt": "2025-11-02T10:32:15.000000-07:00",
        },
        {
            "capabilityName": "my-argocd",
            "arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/argocd/my-argocd/abc123",
            "type": "ARGOCD",
            "status": "ACTIVE",
            "version": "3.1.8-eks-1",
            "createdAt": "2025-11-21T08:22:28.486000-05:00",
            "modifiedAt": "2025-11-21T08:22:28.486000-05:00"
        }
    ]
}
```

## Beschreiben Sie eine Fähigkeit
<a name="_describe_a_capability"></a>

Erhalten Sie detaillierte Informationen zu einer bestimmten Funktion, einschließlich ihrer Konfiguration und ihres Status.

### Konsole
<a name="_console_2"></a>

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus, um die Cluster-Detailseite zu öffnen.

1. Wählen Sie die Registerkarte **Funktionen**.

1. Wählen Sie unter **Verwaltete Funktionen** die Funktion aus, die Sie anzeigen möchten.

1. Sehen Sie sich die Funktionsdetails an, einschließlich Status, Konfiguration und Erstellungszeit.

### AWS CLI
<a name="shared_aws_cli"></a>

Verwenden Sie den `describe-capability` Befehl, um detaillierte Informationen anzuzeigen. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters und *capability-name* ersetzen Sie es durch den Namen der Fähigkeit (ack, argocd oder kro).

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name capability-name
```

 **Beispielausgabe:** 

```
{
  "capability": {
    "capabilityName": "my-ack",
    "capabilityArn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack/abc123",
    "clusterName": "my-cluster",
    "type": "ACK",
    "roleArn": "arn:aws:iam::111122223333:role/AmazonEKSCapabilityACKRole",
    "status": "ACTIVE",
    "configuration": {},
    "tags": {},
    "health": {
      "issues": []
    },
    "createdAt": "2025-11-19T17:11:30.242000-05:00",
    "modifiedAt": "2025-11-19T17:11:30.242000-05:00",
    "deletePropagationPolicy": "RETAIN"
  }
}
```

## Aktualisieren Sie die Konfiguration einer Funktion
<a name="_update_the_configuration_of_a_capability"></a>

Sie können bestimmte Aspekte der Konfiguration einer Funktion nach der Erstellung aktualisieren. Die spezifischen Konfigurationsoptionen variieren je nach Funktionstyp.

**Anmerkung**  
Die Ressourcen der EKS-Funktionen werden vollständig verwaltet, einschließlich Patches und Versionsupdates. Die Aktualisierung einer Funktion aktualisiert die Ressourcenkonfiguration und führt nicht zu Versionsupdates der verwalteten Funktionskomponenten.

### AWS CLI
<a name="shared_aws_cli"></a>

Verwenden Sie den `update-capability` Befehl, um eine Funktion zu ändern:

```
aws eks update-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name capability-name \
  --role-arn arn:aws:iam::[.replaceable]111122223333:role/NewCapabilityRole
```

**Anmerkung**  
Nicht alle Funktionseigenschaften können nach der Erstellung aktualisiert werden. Einzelheiten dazu, was geändert werden kann, finden Sie in der funktionsspezifischen Dokumentation.

## Löschen Sie eine Funktion
<a name="_delete_a_capability"></a>

Wenn Sie eine Funktion in Ihrem Cluster nicht mehr benötigen, können Sie die Fähigkeitsressource löschen.

**Wichtig**  
 **Löschen Sie die Clusterressourcen, bevor Sie die Funktion löschen.**   
Durch das Löschen einer Funktionsressource werden nicht automatisch Ressourcen gelöscht, die mit dieser Fähigkeit erstellt wurden:  
Alle benutzerdefinierten Kubernetes-Ressourcendefinitionen (CRDs) bleiben in Ihrem Cluster installiert.
ACK-Ressourcen verbleiben in Ihrem Cluster und die entsprechenden AWS Ressourcen verbleiben in Ihrem Konto
Argo CD-Anwendungen und ihre Kubernetes-Ressourcen verbleiben in Ihrem Cluster
Kro ResourceGraphDefinitions und Instanzen verbleiben in Ihrem Cluster
Sie sollten diese Ressourcen löschen, bevor Sie die Funktion löschen, um verwaiste Ressourcen zu vermeiden.  
Sie können sich optional dafür entscheiden, AWS Ressourcen beizubehalten, die mit ACK Kubernetes-Ressourcen verknüpft sind. [Siehe Überlegungen zu ACK](ack-considerations.md) 

### Konsole
<a name="_console_3"></a>

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus, um die Cluster-Detailseite zu öffnen.

1. Wählen Sie die Registerkarte **Funktionen**.

1. Wählen Sie die Funktion, die Sie löschen möchten, aus der Liste der **verwalteten Funktionen** aus.

1. Wählen Sie „**Funktion löschen**“.

1. Geben Sie im Bestätigungsdialogfeld den Namen der Funktion ein, um das Löschen zu bestätigen.

1. Wählen Sie **Löschen** aus.

### AWS CLI
<a name="shared_aws_cli"></a>

Verwenden Sie den `delete-capability` Befehl, um eine Capability-Ressource zu löschen:

*region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters und *capability-name* ersetzen Sie es durch den Namen der zu löschenden Funktion.

```
aws eks delete-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name capability-name
```

## Nächste Schritte
<a name="_next_steps"></a>
+  [Fähigkeiten — Kubernetes-Ressourcen](capability-kubernetes-resources.md)— Erfahren Sie mehr über die Kubernetes-Ressourcen, die von den einzelnen Funktionstypen bereitgestellt werden
+  [ACK-Konzepte](ack-concepts.md)— Verstehen Sie die ACK-Konzepte und den Ressourcenlebenszyklus
+  [Arbeiten mit Argo CD](working-with-argocd.md)— Arbeiten mit den Funktionen von Argo CD für Workflows GitOps 
+  [Kro-Konzepte](kro-concepts.md)— Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen

# Fähigkeiten — Kubernetes-Ressourcen
<a name="capability-kubernetes-resources"></a>

Nachdem Sie eine Funktion in Ihrem Cluster aktiviert haben, interagieren Sie meistens mit ihr, indem Sie benutzerdefinierte Kubernetes-Ressourcen in Ihrem Cluster erstellen und verwalten. Jede Funktion bietet ihre eigenen benutzerdefinierten Ressourcendefinitionen (CRDs), die die Kubernetes-API um funktionsspezifische Funktionen erweitern.

## Ressourcen von Argo CD
<a name="_argo_cd_resources"></a>

Wenn Sie die Argo-CD-Funktion aktivieren, können Sie die folgenden Kubernetes-Ressourcen erstellen und verwalten:

 **Anwendung**   
Definiert eine Bereitstellung von einem Git-Repository in einem Zielcluster. `Application`Ressourcen spezifizieren das Quell-Repository, den Ziel-Namespace und die Synchronisierungsrichtlinie. Sie können bis zu 1000 `Application` Ressourcen pro Argo-CD-Capability-Instance erstellen.

 **ApplicationSet**   
Generiert mehrere `Application` Ressourcen aus Vorlagen und ermöglicht so Bereitstellungen in mehreren Clustern und Umgebungen. `ApplicationSet`Ressourcen verwenden Generatoren, um `Application` Ressourcen dynamisch auf der Grundlage von Clusterlisten, Git-Verzeichnissen oder anderen Quellen zu erstellen.

 **AppProject**   
Bietet logische Gruppierung und Zugriffskontrolle für `Application` Ressourcen. `AppProject`Ressourcen definieren, welche Repositorys, Cluster und Namespaces `Application` Ressourcen verwenden können, wodurch Mehrmandantenfähigkeit und Sicherheitsgrenzen ermöglicht werden.

Beispielressource: `Application`

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/org/repo
    targetRevision: main
    path: manifests
  destination:
    server: https://kubernetes.default.svc
    namespace: production
```

Weitere Informationen zu den Ressourcen und Konzepten von Argo CD finden Sie unter[Argo CD-Konzepte](argocd-concepts.md).

## Kro-Ressourcen
<a name="_kro_resources"></a>

Wenn Sie die Kro-Funktion aktivieren, können Sie die folgenden Kubernetes-Ressourcen erstellen und verwalten:

 **ResourceGraphDefinition (RGD)**   
Definiert eine benutzerdefinierte API, die mehrere Kubernetes und AWS Ressourcen zu einer Abstraktion auf höherer Ebene zusammenfasst. Plattformteams erstellen `ResourceGraphDefinition` Ressourcen, um wiederverwendbare Muster mit Leitplanken bereitzustellen.

 **Benutzerdefinierte Ressourceninstanzen**   
Nachdem Sie eine `ResourceGraphDefinition` Ressource erstellt haben, können Sie Instanzen der von der definierten benutzerdefinierten API erstellen`ResourceGraphDefinition`. kro erstellt und verwaltet automatisch die in der `ResourceGraphDefinition` angegebenen Ressourcen.

`ResourceGraphDefinition`Beispielressource:

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: web-application
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    spec:
      name: string
      replicas: integer
  resources:
    - id: deployment
      template:
        apiVersion: apps/v1
        kind: Deployment
        # ... deployment spec
    - id: service
      template:
        apiVersion: v1
        kind: Service
        # ... service spec
```

`WebApplication`Beispielinstanz:

```
apiVersion: v1alpha1
kind: WebApplication
metadata:
  name: my-web-app
  namespace: default
spec:
  name: my-web-app
  replicas: 3
```

Wenn Sie diese Instanz anwenden, erstellt kro automatisch die `Deployment` in der `ResourceGraphDefinition` definierten `Service` Ressourcen.

Weitere Informationen zu den Ressourcen und Konzepten von Kro finden Sie unter. [Kro-Konzepte](kro-concepts.md)

## ACK-Ressourcen
<a name="_ack_resources"></a>

Wenn Sie die ACK-Fähigkeit aktivieren, können Sie AWS Ressourcen mithilfe von benutzerdefinierten Kubernetes-Ressourcen erstellen und verwalten. ACK bietet über 200 Dienste CRDs für mehr als 50 AWS Dienste, sodass Sie AWS Ressourcen neben Ihren Kubernetes-Workloads definieren und dedizierte AWS Infrastrukturressourcen mit Kubernetes verwalten können.

Beispiele für ACK-Ressourcen:

 **S3 Bucket (S3-Bucket)**   
 `Bucket`Ressourcen erstellen und verwalten Amazon S3 S3-Buckets mit Versionierungs-, Verschlüsselungs- und Lebenszyklusrichtlinien.

 **RDS DBInstance**   
 `DBInstance`Bereitstellung und Verwaltung von Amazon RDS-Datenbank-Instances mit automatisierten Backups und Wartungsfenstern.

 **DynamoDB-Tabelle**   
 `Table`Ressourcen erstellen und verwalten DynamoDB-Tabellen mit bereitgestellter oder bedarfsgesteuerter Kapazität.

 **IAM Role** (IAM-Rolle)   
 `Role`Ressourcen definieren IAM-Rollen mit Vertrauensrichtlinien und Berechtigungsrichtlinien für den Servicezugriff. AWS 

 **Lambda-Funktion**   
 `Function`Ressourcen erstellen und verwalten Lambda-Funktionen mit Code-, Laufzeit- und Ausführungsrollenkonfiguration.

Beispiel für die Spezifikation einer `Bucket` Ressource:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-app-bucket
spec:
  name: my-unique-bucket-name-12345
  versioning:
    status: Enabled
  encryption:
    rules:
      - applyServerSideEncryptionByDefault:
          sseAlgorithm: AES256
```

Weitere Informationen zu ACK-Ressourcen und Konzepten finden Sie unter[ACK-Konzepte](ack-concepts.md).

## Ressourcenlimits
<a name="_resource_limits"></a>

Für EKS-Funktionen gelten die folgenden Ressourcengrenzen:

 **Nutzungsbeschränkungen für Argo CD**:
+ Maximal 1000 `Application` Ressourcen pro Argo-CD-Capability-Instanz
+ Pro Argo-CD-Capability-Instanz sind maximal 100 Remote-Cluster konfiguriert

 **Grenzwerte für die Ressourcenkonfiguration**:
+ Maximal 150 Kubernetes-Ressourcen pro `Application` Ressource in Argo CD
+ Maximal 64 Kubernetes-Ressourcen pro in Kro `ResourceGraphDefinition`

**Anmerkung**  
Diese Grenzwerte gelten für die Anzahl der Ressourcen, die von jeder Capability-Instanz verwaltet werden. Wenn Sie höhere Grenzwerte benötigen, können Sie Funktionen auf mehreren Clustern bereitstellen.

## Nächste Schritte
<a name="_next_steps"></a>

Informationen zu funktionsspezifischen Aufgaben und zur erweiterten Konfiguration finden Sie in den folgenden Themen:
+  [ACK-Konzepte](ack-concepts.md)— Verstehen Sie die ACK-Konzepte und den Ressourcenlebenszyklus
+  [Arbeiten mit Argo CD](working-with-argocd.md)— Arbeiten mit den Funktionen von Argo CD für Workflows GitOps 
+  [Kro-Konzepte](kro-concepts.md)— Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen

# Überlegungen zu den EKS-Fähigkeiten
<a name="capabilities-considerations"></a>

In diesem Thema werden wichtige Überlegungen zur Nutzung von EKS-Funktionen behandelt, darunter das Design der Zugriffskontrolle, die Wahl zwischen EKS-Funktionen und selbstverwalteten Lösungen, Architekturmuster für Bereitstellungen mit mehreren Clustern und bewährte Verfahren für den Betrieb.

## Capability: IAM-Rollen und Kubernetes RBAC
<a name="_capability_iam_roles_and_kubernetes_rbac"></a>

Jede EKS-Capability-Ressource hat eine konfigurierte Capability-IAM-Rolle. Die Capability-Rolle wird verwendet, um AWS Dienstberechtigungen für EKS-Funktionen zu erteilen, damit sie in Ihrem Namen agieren können. Um beispielsweise die EKS-Funktion für ACK zur Verwaltung von Amazon S3 S3-Buckets zu verwenden, gewähren Sie S3 Bucket Administratorberechtigungen für die Funktion, sodass sie Buckets erstellen und verwalten kann.

Sobald die Funktion konfiguriert ist, können S3-Ressourcen in AWS mit benutzerdefinierten Kubernetes-Ressourcen in Ihrem Cluster erstellt und verwaltet werden. Kubernetes RBAC ist der Cluster-interne Zugriffskontrollmechanismus, mit dem bestimmt wird, welche Benutzer und Gruppen diese benutzerdefinierten Ressourcen erstellen und verwalten können. Erteilen Sie beispielsweise bestimmten Kubernetes RBAC-Benutzern und -Gruppen Berechtigungen zum Erstellen und Verwalten von Ressourcen in Namespaces Ihrer Wahl. `Bucket`

Auf diese Weise sind IAM und Kubernetes RBAC zwei Hälften des Zugriffskontrollsystems, das die Berechtigungen im Zusammenhang mit den end-to-end Funktionen und Ressourcen von EKS regelt. Es ist wichtig, die richtige Kombination aus IAM-Berechtigungen und RBAC-Zugriffsrichtlinien für Ihren Anwendungsfall zu entwerfen.

Weitere Informationen zu Capability IAM-Rollen und Kubernetes-Berechtigungen finden Sie unter. [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Architekturmuster mit mehreren Clustern
<a name="_multi_cluster_architecture_patterns"></a>

Bei der Bereitstellung von Funktionen in mehreren Clustern sollten Sie die folgenden gängigen Architekturmuster berücksichtigen:

 **Hub and Spoke mit zentralisierter Verwaltung** 

Führen Sie alle drei Funktionen in einem zentral verwalteten Cluster aus, um Workloads zu orchestrieren und die Cloud-Infrastruktur über mehrere Workload-Cluster hinweg zu verwalten.
+ Argo CD auf dem Management-Cluster stellt Anwendungen für Workload-Cluster in verschiedenen Regionen oder Konten bereit
+ ACK auf dem Management-Cluster stellt AWS Ressourcen (RDS, S3, IAM) für alle Cluster bereit
+ kro auf dem Management-Cluster erstellt tragbare Plattformabstraktionen, die in allen Clustern funktionieren

Dieses Muster zentralisiert das Workload- und Cloud-Infrastrukturmanagement und kann den Betrieb für Unternehmen, die viele Cluster verwalten, vereinfachen.

 **Dezentralisiert GitOps** 

Workloads und Cloud-Infrastruktur werden über Funktionen auf demselben Cluster verwaltet, auf dem die Workloads ausgeführt werden.
+ Argo CD verwaltet Anwendungsressourcen auf dem lokalen Cluster.
+ ACK-Ressourcen werden für Cluster- und Workload-Anforderungen verwendet.
+ Die Abstraktionen der Kro-Plattform werden installiert und orchestrieren lokale Ressourcen.

Dieses Muster dezentralisiert den Betrieb, wobei die Teams ihre eigenen dedizierten Plattformdienste in einem oder mehreren Clustern verwalten.

 **Hub-and-Spoke-Lösung mit hybrider ACK-Bereitstellung** 

Kombinieren Sie zentralisierte und dezentrale Modelle mit zentralisierter Anwendungsbereitstellung und Ressourcenverwaltung auf der Grundlage von Umfang und Eigentümerschaft.
+ Hub-Cluster:
  + Argo CD verwaltet GitOps Bereitstellungen auf dem lokalen Cluster und allen Remote-Workload-Clustern
  + ACK wird auf dem Management-Cluster für Ressourcen im Administratorbereich (Produktionsdatenbanken, IAM-Rollen,) verwendet VPCs
  + kro wird auf dem Management-Cluster für wiederverwendbare Plattformabstraktionen verwendet
+ Spoke-Cluster:
  + Workloads werden über Argo CD auf dem zentralisierten Hub-Cluster verwaltet
  + ACK wird lokal für Ressourcen im Workloadbereich (S3-Buckets, Instanzen, SQS-Warteschlangen) verwendet ElastiCache 
  + kro wird lokal für die Zusammenstellung von Ressourcen und für Bausteinmuster verwendet

Dieses Muster unterscheidet die einzelnen Anliegen: Plattformteams verwalten kritische Infrastrukturen zentral auf Managementclustern, optional einschließlich Workload-Clustern, während Anwendungsteams Cloud-Ressourcen zusammen mit Workloads spezifizieren und verwalten.

 **Ein Muster auswählen** 

Berücksichtigen Sie bei der Auswahl einer Architektur die folgenden Faktoren:
+  **Organisationsstruktur**: Zentralisierte Plattformteams bevorzugen Hub-Modelle; dezentrale Teams bevorzugen möglicherweise Funktionen pro Cluster
+  **Umfang der Ressourcen**: Ressourcen mit Administratorrechten (Datenbanken, IAM) profitieren häufig von einer zentralen Verwaltung; Workload-Ressourcen (Buckets, Warteschlangen) können lokal verwaltet werden
+  **Self-Service**: Zentralisierte Plattformteams können präskriptive benutzerdefinierte Ressourcen erstellen und verteilen, um Cloud-Ressourcen für allgemeine Workload-Anforderungen sicher selbst zu verwalten
+  **Cluster-Flottenmanagement**: Zentralisierte Management-Cluster bieten eine kundeneigene Steuerungsebene für das EKS-Cluster-Flottenmanagement, zusammen mit anderen administrativen Ressourcen
+  **Compliance-Anforderungen**: Einige Unternehmen benötigen eine zentrale Steuerung für Audit und Governance
+  **Operative Komplexität**: Weniger Funktionsinstanzen vereinfachen den Betrieb, können aber zu Engpässen führen

**Anmerkung**  
Sie können mit einem Muster beginnen und sich mit zunehmender Reife Ihrer Plattform zu einem anderen weiterentwickeln. Die Funktionen sind unabhängig — Sie können sie je nach Bedarf in den Clustern unterschiedlich einsetzen.

## Vergleich der EKS-Funktionen mit selbstverwalteten Lösungen
<a name="_comparing_eks_capabilities_to_self_managed_solutions"></a>

EKS-Funktionen bieten vollständig verwaltete Funktionen für beliebte Kubernetes-Tools und -Controller, die in EKS ausgeführt werden. Dies unterscheidet sich von selbstverwalteten Lösungen, die Sie in Ihrem Cluster installieren und betreiben.

### Die wichtigsten Unterschiede
<a name="_key_differences"></a>

 **Bereitstellung und Verwaltung** 

 AWS verwaltet die EKS-Funktionen vollständig, ohne dass eine Installation, Konfiguration oder Wartung der Komponentensoftware erforderlich ist. AWS installiert und verwaltet automatisch alle erforderlichen benutzerdefinierten Kubernetes-Ressourcendefinitionen (CRDs) im Cluster.

Bei selbstverwalteten Lösungen installieren und konfigurieren Sie Clustersoftware mithilfe von Helm Charts, Kubectl oder anderen Operatoren. Sie haben die volle Kontrolle über den Softwarelebenszyklus und die Laufzeitkonfiguration Ihrer selbstverwalteten Lösungen und können Anpassungen auf jeder Ebene der Lösung vornehmen.

 **Betrieb und Wartung** 

 AWS verwaltet Patching- und andere Softwarelebenszyklusvorgänge für EKS-Funktionen mit automatischen Updates und Sicherheitspatches. Die Funktionen von EKS sind in AWS Funktionen für optimierte Konfigurationen integriert, bieten integrierte Hochverfügbarkeit und Fehlertoleranz und machen die Behebung von Controller-Workloads im Cluster überflüssig.

Bei selbstverwalteten Lösungen müssen Sie den Zustand und die Protokolle der Komponenten überwachen, Sicherheitspatches und Versionsupdates anwenden, Hochverfügbarkeit mit mehreren Replikaten und Budgets für Pod-Unterbrechungen konfigurieren, Probleme mit der Controller-Arbeitslast beheben und beheben sowie Releases und Versionen verwalten. Sie haben die volle Kontrolle über Ihre Bereitstellungen, aber dafür sind häufig maßgeschneiderte Lösungen für den privaten Clusterzugriff und andere Integrationen erforderlich, die den Unternehmensstandards und den Sicherheitsbestimmungen entsprechen müssen.

 **Ressourcenverbrauch** 

EKS-Funktionen werden in EKS und außerhalb Ihrer Cluster ausgeführt, wodurch Knoten- und Clusterressourcen freigesetzt werden. Capabilities nutzen keine Cluster-Workload-Ressourcen, verbrauchen weder CPU noch Arbeitsspeicher auf Ihren Worker-Knoten, skalieren automatisch und haben nur minimale Auswirkungen auf die Cluster-Kapazitätsplanung.

Selbstverwaltete Lösungen führen Controller und andere Komponenten auf Ihren Worker-Knoten aus und verbrauchen dabei direkt Worker-Knotenressourcen IPs, Cluster und andere Clusterressourcen. Die Verwaltung von Clusterdiensten erfordert eine Kapazitätsplanung für deren Workloads sowie die Planung und Konfiguration von Ressourcenanforderungen und -limits, um Skalierungs- und Hochverfügbarkeitsanforderungen zu bewältigen.

 **Unterstützung von Funktionen** 

Als vollständig verwaltete Servicefunktionen sind EKS Capabilities von Natur aus eigensinnig im Vergleich zu selbstverwalteten Lösungen. Die Funktionen werden zwar die meisten Funktionen und Anwendungsfälle unterstützen, allerdings wird es im Vergleich zu selbstverwalteten Lösungen einen Unterschied in der Abdeckung geben.

Bei selbstverwalteten Lösungen haben Sie die vollständige Kontrolle über die Konfiguration, optionale Funktionen und andere Aspekte der Funktionalität Ihrer Software. Sie können sich dafür entscheiden, Ihre eigenen benutzerdefinierten Images auszuführen, alle Aspekte der Konfiguration anzupassen und die Funktionen Ihrer selbstverwalteten Lösung vollständig zu kontrollieren.

 **Überlegungen zu den Kosten** 

Für jede EKS-Funktionsressource fallen Kosten pro Stunde an, die je nach Fähigkeitstyp unterschiedlich sind. Für Clusterressourcen, die von der Funktion verwaltet werden, fallen auch stündliche Kosten mit eigenen Preisen an. Weitere Informationen finden Sie unter [Amazon EKS – Preise](https://aws.amazon.com/eks/pricing/).

Bei selbstverwalteten Lösungen fallen keine direkten Kosten im Zusammenhang mit AWS Gebühren an. Sie zahlen jedoch für Cluster-Rechenressourcen, die von Controllern genutzt werden, und für die damit verbundenen Workloads. Neben dem Ressourcenverbrauch von Knoten und Clustern umfassen die Gesamtbetriebskosten bei selbstverwalteten Lösungen auch die Betriebskosten sowie die Kosten für Wartung, Fehlerbehebung und Support.

### Sie haben die Wahl zwischen EKS-Funktionen und selbstverwalteten Lösungen
<a name="_choosing_between_eks_capabilities_and_self_managed_solutions"></a>

 **EKS-Funktionen** Ziehen Sie diese Wahl in Betracht, wenn Sie den betrieblichen Aufwand reduzieren und sich auf den Mehrwert Ihrer Software und Systeme konzentrieren möchten, anstatt den Betrieb der Clusterplattform für grundlegende Anforderungen zu bündeln. Verwenden Sie EKS Capabilities, wenn Sie den betrieblichen Aufwand durch Sicherheitspatches und Software-Lebenszyklusmanagement minimieren, Knoten- und Clusterressourcen für Anwendungsworkloads freigeben, die Konfiguration und das Sicherheitsmanagement vereinfachen und vom AWS Support profitieren möchten. Die EKS-Funktionen eignen sich ideal für die meisten Anwendungsfälle in der Produktion und sind der empfohlene Ansatz für neue Implementierungen.

 **Selbstverwaltete Lösungen** Ziehen Sie diese Wahl in Betracht, wenn Sie bestimmte Versionen der Kubernetes-Ressourcen-API oder benutzerdefinierte Controller-Builds benötigen, bereits vorhandene Automatisierungs- und Tools auf selbstverwalteten Bereitstellungen aufbauen möchten oder wenn Sie umfassende Anpassungen der Controller-Laufzeitkonfigurationen benötigen. Selbstverwaltete Lösungen bieten Flexibilität für spezielle Anwendungsfälle, und Sie haben die vollständige Kontrolle über Ihre Bereitstellung und Laufzeitkonfiguration.

**Anmerkung**  
EKS-Funktionen können in Ihrem Cluster mit selbstverwalteten Lösungen koexistieren, und schrittweise Migrationen sind möglich.

### Fähigkeitsspezifische Vergleiche
<a name="_capability_specific_comparisons"></a>

Detaillierte Vergleiche, einschließlich funktionsspezifischer Funktionen, Upstream-Unterschiede und Migrationspfade, finden Sie unter:
+  [Vergleich der EKS-Funktionen für ACK mit selbstverwaltetem ACK](ack-comparison.md) 
+  [Vergleich der EKS-Funktionen für Argo CD mit selbstverwalteter Argo-CD](argocd-comparison.md) 
+  [Vergleich der EKS-Funktionen für Kro mit selbstverwaltetem Kro](kro-comparison.md) 

# Stellen Sie AWS Ressourcen aus Kubernetes mit AWS Controllers for Kubernetes (ACK) bereit
<a name="ack"></a>

 AWS Mit Controllers for Kubernetes (ACK) können Sie Serviceressourcen direkt von Kubernetes aus definieren und verwalten. AWS Mit AWS Controllers for Kubernetes (ACK) können Sie Workload-Ressourcen und Cloud-Infrastruktur mithilfe von benutzerdefinierten Kubernetes-Ressourcen direkt neben Ihren Anwendungs-Workloads mit vertrauten Kubernetes und Tools verwalten. APIs 

Mit EKS-Funktionen wird ACK vollständig verwaltet AWS, sodass Sie keine ACK-Controller auf Ihren Clustern installieren, warten und skalieren müssen.

## Wie funktioniert ACK
<a name="_how_ack_works"></a>

ACK übersetzt benutzerdefinierte Kubernetes-Ressourcenspezifikationen in AWS API-Aufrufe. Wenn Sie eine benutzerdefinierte Kubernetes-Ressource, die eine AWS Dienstressource darstellt, erstellen, aktualisieren oder löschen, führt ACK die erforderlichen AWS API-Aufrufe durch, um die Ressource zu erstellen, zu aktualisieren oder zu löschen. AWS 

Jede von ACK unterstützte AWS Ressource hat ihre eigene benutzerdefinierte Ressourcendefinition (CRD), die das Kubernetes-API-Schema für die Angabe ihrer Konfiguration definiert. ACK bietet CRDs beispielsweise S3 einschließlich Buckets, Bucket-Richtlinien und andere S3-Ressourcen.

ACK gleicht den Status Ihrer AWS Ressourcen kontinuierlich mit dem gewünschten Status ab, der in Ihren benutzerdefinierten Kubernetes-Ressourcen definiert ist. Wenn eine Ressource von ihrem gewünschten Zustand abweicht, erkennt ACK dies und ergreift Korrekturmaßnahmen, um sie wieder in Einklang zu bringen. Änderungen an Kubernetes-Ressourcen wirken sich sofort auf den AWS Ressourcenstatus aus, während die passive Drift-Erkennung und Behebung von AWS Upstream-Ressourcenänderungen bis zu 10 Stunden dauern kann (die Resynchronisierungszeit), in der Regel jedoch viel früher erfolgt.

 **Beispiel für ein S3-Bucket-Ressourcenmanifest** 

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-ack-bucket
spec:
  name: my-unique-bucket-name
```

Wenn Sie diese benutzerdefinierte Ressource auf Ihren Cluster anwenden, erstellt ACK einen Amazon S3 S3-Bucket in Ihrem Konto, falls dieser noch nicht vorhanden ist. Spätere Änderungen an dieser Ressource, z. B. die Angabe einer nicht standardmäßigen Speicherstufe oder das Hinzufügen einer Richtlinie, werden auf die S3-Ressource in AWS angewendet. Wenn diese Ressource aus dem Cluster gelöscht wird, wird der AWS darin enthaltene S3-Bucket standardmäßig gelöscht.

## Vorteile von ACK
<a name="_benefits_of_ack"></a>

ACK bietet Kubernetes-natives AWS Ressourcenmanagement, sodass Sie AWS Ressourcen mit demselben Kubernetes APIs und denselben Tools verwalten können, die Sie für Ihre Anwendungen verwenden. Dieser einheitliche Ansatz vereinfacht Ihren Infrastrukturmanagement-Workflow, da Sie nicht mehr zwischen verschiedenen Tools wechseln oder separate Systeme erlernen müssen. infrastructure-as-code Sie definieren Ihre AWS Ressourcen deklarativ in Kubernetes-Manifesten und ermöglichen so GitOps Workflows und Infrastruktur als Code-Praktiken, die sich nahtlos in Ihre bestehenden Entwicklungsprozesse integrieren lassen.

ACK gleicht kontinuierlich den gewünschten Zustand Ihrer AWS Ressourcen mit ihrem tatsächlichen Zustand ab, korrigiert Abweichungen und sorgt für Konsistenz in Ihrer gesamten Infrastruktur. Dieser kontinuierliche Abgleich bedeutet, dass wichtige out-of-band Änderungen an AWS Ressourcen automatisch rückgängig gemacht werden, sodass sie Ihrer deklarierten Konfiguration entsprechen, sodass die Integrität Ihrer Infrastruktur als Code gewahrt bleibt. Sie können ACK so konfigurieren, dass Ressourcen über mehrere AWS Konten und Regionen hinweg verwaltet werden, sodass komplexe Architekturen mit mehreren Konten ohne zusätzliche Tools ermöglicht werden.

Für Unternehmen, die von anderen Infrastrukturmanagement-Tools migrieren, unterstützt ACK die Einführung von Ressourcen, sodass Sie vorhandene AWS Ressourcen unter das ACK-Management stellen können, ohne sie neu erstellen zu müssen. ACK bietet außerdem schreibgeschützte Ressourcen für die AWS Ressourcenbeobachtung ohne Änderungszugriff sowie Anmerkungen, um AWS Ressourcen optional auch dann beizubehalten, wenn die Kubernetes-Ressource aus dem Cluster gelöscht wird.

Weitere Informationen und erste Schritte mit der EKS-Funktion für ACK finden Sie unter und. [ACK-Konzepte](ack-concepts.md) [ACK-Überlegungen für EKS](ack-considerations.md)

## Unterstützte AWS Dienste
<a name="supported_shared_aws_services"></a>

ACK unterstützt eine breite Palette von AWS Diensten, einschließlich, aber nicht beschränkt auf:
+ Amazon EC2
+ Amazon S3
+ Amazon RDS
+ Amazon DynamoDB
+ Amazon ElastiCache
+ Amazon EKS
+ Amazon SQS
+ Amazon SNS
+  AWS Lambda
+  AWS ICH BIN

Alle AWS Dienste, die im Upstream-Bereich als allgemein verfügbar aufgeführt sind, werden von der EKS-Funktion für ACK unterstützt. Einzelheiten finden Sie in [der vollständigen Liste der unterstützten AWS Dienste](https://aws-controllers-k8s.github.io/community/docs/community/services/).

## Integration mit anderen von EKS verwalteten Funktionen
<a name="_integration_with_other_eks_managed_capabilities"></a>

ACK lässt sich in andere von EKS verwaltete Funktionen integrieren.
+  **Argo CD**: Verwenden Sie Argo CD, um die Bereitstellung von ACK-Ressourcen in mehreren Clustern zu verwalten und so GitOps Workflows für Ihre AWS Infrastruktur zu ermöglichen.
  + ACK erweitert die Vorteile von GitOps , wenn es mit ArgoCD kombiniert wird, aber ACK erfordert keine Integration mit Git.
+  **kro (Kube Resource Orchestrator)**: Verwenden Sie Kro, um komplexe Ressourcen aus ACK-Ressourcen zusammenzustellen und so Abstraktionen auf höherer Ebene zu erstellen, die das Ressourcenmanagement vereinfachen.
  + Sie können mit kro zusammengesetzte benutzerdefinierte Ressourcen erstellen, die sowohl Kubernetes-Ressourcen als auch Ressourcen definieren. AWS Teammitglieder können diese benutzerdefinierten Ressourcen verwenden, um komplexe Anwendungen schnell bereitzustellen.

## Erste Schritte mit ACK
<a name="_getting_started_with_ack"></a>

Erste Schritte mit der EKS-Funktion für ACK:

1. Erstellen und konfigurieren Sie eine IAM-Capability-Rolle mit den erforderlichen Berechtigungen, damit ACK AWS Ressourcen in Ihrem Namen verwalten kann.

1.  [Erstellen Sie eine ACK-Fähigkeitsressource](create-ack-capability.md) auf Ihrem EKS-Cluster über die AWS Konsole, AWS CLI oder Ihr bevorzugtes Infrastructure-as-Code-Tool.

1. Wenden Sie benutzerdefinierte Kubernetes-Ressourcen auf Ihren Cluster an, um mit der Verwaltung Ihrer AWS Ressourcen in Kubernetes zu beginnen.

# Erstellen Sie eine ACK-Fähigkeit
<a name="create-ack-capability"></a>

In diesem Kapitel wird erklärt, wie Sie eine ACK-Fähigkeit in Ihrem Amazon EKS-Cluster erstellen.

## Voraussetzungen
<a name="_prerequisites"></a>

Bevor Sie eine ACK-Fähigkeit erstellen, stellen Sie sicher, dass Sie über Folgendes verfügen:
+ Ein Amazon-EKS-Cluster
+ Eine IAM-Fähigkeitsrolle mit Berechtigungen für ACK zur Verwaltung von Ressourcen AWS 
+ Ausreichende IAM-Berechtigungen zum Erstellen von Funktionsressourcen auf EKS-Clustern
+ Das entsprechende installierte und konfigurierte CLI-Tool oder Zugriff auf die EKS-Konsole

Anweisungen zur Erstellung der IAM-Capability-Rolle finden Sie unter[IAM-Rolle für Amazon EKS-Funktionen](capability-role.md).

**Wichtig**  
ACK ist eine Infrastrukturverwaltungsfunktion, die das Erstellen, Ändern und Löschen von AWS Ressourcen ermöglicht. Dabei handelt es sich um eine Funktion für Administratoren, die sorgfältig kontrolliert werden sollte. Jeder, der die Erlaubnis hat, Kubernetes-Ressourcen in Ihrem Cluster zu erstellen, kann Ressourcen effektiv über ACK erstellen, sofern die Berechtigungen für die AWS IAM-Capability Role erfüllt sind. Die von Ihnen bereitgestellte IAM-Capability-Rolle bestimmt, welche AWS Ressourcen ACK erstellen und verwalten kann. Anleitungen zum Erstellen einer geeigneten Rolle mit den geringsten Rechten finden Sie unter und. [IAM-Rolle für Amazon EKS-Funktionen](capability-role.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Wählen Sie Ihr Tool
<a name="_choose_your_tool"></a>

Sie können eine ACK-Fähigkeit mit der AWS-Managementkonsole AWS CLI oder eksctl erstellen:
+  [Erstellen Sie eine ACK-Fähigkeit mithilfe der Konsole](ack-create-console.md)- Verwenden Sie die Konsole für ein geführtes Erlebnis
+  [Erstellen Sie eine ACK-Fähigkeit mit der AWS CLI](ack-create-cli.md)- Verwenden Sie die AWS CLI für Scripting und Automatisierung
+  [Erstellen Sie eine ACK-Fähigkeit mit eksctl](ack-create-eksctl.md)- Verwenden Sie eksctl für ein Kubernetes-natives Erlebnis

## Was passiert, wenn Sie eine ACK-Fähigkeit erstellen
<a name="_what_happens_when_you_create_an_ack_capability"></a>

Wenn Sie eine ACK-Fähigkeit erstellen:

1. EKS erstellt den ACK-Fähigkeitsdienst und konfiguriert ihn für die Überwachung und Verwaltung der Ressourcen in Ihrem Cluster

1. Benutzerdefinierte Ressourcendefinitionen (CRDs) sind in Ihrem Cluster installiert

1. Für Ihre IAM-Capability Role wird automatisch ein Zugriffseintrag mit funktionsspezifischen Zugangsrichtlinien erstellt, die grundlegende Kubernetes-Berechtigungen gewähren (siehe) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

1. Die Funktion setzt die von Ihnen bereitgestellte IAM-Fähigkeitsrolle voraus

1. ACK beginnt, in Ihrem Cluster nach seinen benutzerdefinierten Ressourcen Ausschau zu halten

1. Der Funktionsstatus ändert sich von `CREATING` zu `ACTIVE` 

Sobald sie aktiv sind, können Sie benutzerdefinierte ACK-Ressourcen in Ihrem Cluster erstellen, um AWS Ressourcen zu verwalten.

**Anmerkung**  
Der automatisch erstellte Zugriffseintrag umfasst den`AmazonEKSACKPolicy`, der ACK-Berechtigungen zur Verwaltung von AWS Ressourcen gewährt. Für einige ACK-Ressourcen, die auf geheime Kubernetes-Geheimnisse verweisen (z. B. RDS-Datenbanken mit Passwörtern), sind zusätzliche Zugriffsrichtlinien erforderlich. Weitere Informationen zu Zugriffseinträgen und zur Konfiguration zusätzlicher Berechtigungen finden Sie unter. [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Nächste Schritte
<a name="_next_steps"></a>

Nach dem Erstellen der ACK-Fähigkeit:
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und beginnen Sie mit AWS Ressourcen
+  [ACK-Konzepte](ack-concepts.md)- Erfahren Sie mehr über Abstimmungen, Feldexporte und Muster bei der Nutzung von Ressourcen
+  [ACK-Berechtigungen konfigurieren](ack-permissions.md)- Konfigurieren Sie IAM-Berechtigungen und Muster für mehrere Konten

# Erstellen Sie eine ACK-Fähigkeit mithilfe der Konsole
<a name="ack-create-console"></a>

In diesem Thema wird beschrieben, wie Sie eine AWS Controllers for Kubernetes (ACK) -Funktion mithilfe von erstellen. AWS-Managementkonsole

## Erstellen Sie die ACK-Fähigkeit
<a name="_create_the_ack_capability"></a>

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus, um die Cluster-Detailseite zu öffnen.

1. Wählen Sie die Registerkarte **Funktionen**.

1. Wählen Sie in der linken Navigationsleiste ** AWS Controllers for Kubernetes (ACK)** aus.

1. Wählen Sie **Create AWS Controllers for Kubernetes** Capability aus.

1. Für die **IAM-Fähigkeitsrolle:**
   + Wenn Sie bereits über eine IAM-Fähigkeitsrolle verfügen, wählen Sie sie aus der Dropdownliste aus
   + Wenn Sie eine Rolle erstellen müssen, wählen Sie Administratorrolle **erstellen** 

     Dadurch wird die IAM-Konsole auf einer neuen Registerkarte mit vorab ausgefüllten Vertrauensrichtlinien und der `AdministratorAccess` verwalteten Richtlinie geöffnet. Sie können die Auswahl dieser Richtlinie aufheben und bei Bedarf weitere Berechtigungen hinzufügen.

     Kehren Sie nach dem Erstellen der Rolle zur EKS-Konsole zurück. Die Rolle wird automatisch ausgewählt.
**Wichtig**  
Die vorgeschlagene `AdministratorAccess` Richtlinie gewährt umfassende Berechtigungen und soll den Einstieg vereinfachen. Für den produktiven Einsatz sollten Sie diese Richtlinie durch eine benutzerdefinierte Richtlinie ersetzen, die nur die Berechtigungen gewährt, die für die spezifischen AWS Dienste erforderlich sind, die Sie mit ACK verwalten möchten. Anleitungen zur Erstellung von Richtlinien mit den geringsten Rechten finden Sie unter und. [ACK-Berechtigungen konfigurieren](ack-permissions.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

1. Wählen Sie **Erstellen** aus.

Der Prozess zur Schaffung von Fähigkeiten beginnt.

## Stellen Sie sicher, dass die Fähigkeit aktiv ist
<a name="_verify_the_capability_is_active"></a>

1. Sehen Sie sich auf der Registerkarte **Funktionen** den Status der ACK-Fähigkeit an.

1. Warten Sie, bis sich der Status von `CREATING` zu ändert`ACTIVE`.

1. Sobald die Funktion aktiv ist, ist sie einsatzbereit.

Informationen zum Status der Funktionen und zur Problembehandlung finden Sie unter[Mit Capability-Ressourcen arbeiten](working-with-capabilities.md).

## Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_verify_custom_resources_are_available"></a>

Stellen Sie nach der Aktivierung der Funktion sicher, dass benutzerdefinierte ACK-Ressourcen in Ihrem Cluster verfügbar sind.

 **Verwenden der Konsole** 

1. Navigieren Sie in der Amazon EKS-Konsole zu Ihrem Cluster.

1. Wählen Sie die Registerkarte **Ressourcen**

1. Wählen Sie **Erweiterungen** 

1. Wählen Sie **CustomResourceDefinitions** aus. 

Sie sollten eine Reihe von AWS Ressourcen CRDs auflisten sehen.

 **Verwenden Sie kubectl** 

```
kubectl api-resources | grep services.k8s.aws
```

Sie sollten eine Reihe von Ressourcen APIs aufgelistet sehen. AWS 

**Anmerkung**  
Die Funktion für AWS Controller for Kubernetes wird eine Reihe von CRDs für eine Vielzahl von AWS Ressourcen installieren.

## Nächste Schritte
<a name="_next_steps"></a>
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und legen Sie los
+  [ACK-Berechtigungen konfigurieren](ack-permissions.md)- Konfigurieren Sie IAM-Berechtigungen für andere Dienste AWS 
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalten Sie Ihre ACK-Fähigkeitsressource

# Erstellen Sie eine ACK-Fähigkeit mit der AWS CLI
<a name="ack-create-cli"></a>

In diesem Thema wird beschrieben, wie Sie mithilfe der AWS CLI eine Controllers for Kubernetes-Funktion (ACK) erstellen. AWS 

## Voraussetzungen
<a name="_prerequisites"></a>
+  ** AWS CLI** — Version `2.12.3` oder höher. Führen Sie den Befehl aus, um Ihre Version zu überprüfen`aws --version`. Weitere Informationen finden Sie im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle unter [Installation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html).
+  ** `kubectl` ** – Ein Befehlszeilentool für die Arbeit mit Kubernetes-Clustern. Weitere Informationen finden Sie unter [`kubectl` und `eksctl` einrichten](install-kubectl.md).

## Schritt 1: Erstellen Sie eine IAM-Capability-Rolle
<a name="_step_1_create_an_iam_capability_role"></a>

Erstellen Sie eine Vertrauensrichtliniendatei:

```
cat > ack-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Erstellen Sie die IAM-Rolle:

```
aws iam create-role \
  --role-name ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

Hängen Sie die `AdministratorAccess` verwaltete Richtlinie an die Rolle an:

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**Wichtig**  
Die vorgeschlagene `AdministratorAccess` Richtlinie gewährt umfassende Berechtigungen und soll den Einstieg vereinfachen. Für den produktiven Einsatz sollten Sie diese Richtlinie durch eine benutzerdefinierte Richtlinie ersetzen, die nur die Berechtigungen gewährt, die für die spezifischen AWS Dienste erforderlich sind, die Sie mit ACK verwalten möchten. Anleitungen zur Erstellung von Richtlinien mit den geringsten Rechten finden Sie unter und. [ACK-Berechtigungen konfigurieren](ack-permissions.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Schritt 2: Erstellen Sie die ACK-Fähigkeit
<a name="_step_2_create_the_ack_capability"></a>

Erstellen Sie die ACK-Fähigkeitsressource auf Ihrem Cluster. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --delete-propagation-policy RETAIN
```

Der Befehl wird sofort zurückgegeben, aber es dauert einige Zeit, bis die Funktion aktiv wird, da EKS die erforderliche Funktionsinfrastruktur und die erforderlichen Komponenten erstellt. EKS installiert die benutzerdefinierten Kubernetes-Ressourcendefinitionen, die sich auf diese Funktion beziehen, in Ihrem Cluster, während dieser erstellt wird.

**Anmerkung**  
Wenn Sie eine Fehlermeldung erhalten, dass der Cluster nicht existiert oder Sie keine Berechtigungen haben, überprüfen Sie Folgendes:  
Der Clustername ist korrekt
Ihre AWS CLI ist für die richtige Region konfiguriert
Sie verfügen über die erforderlichen IAM-Berechtigungen

## Schritt 3: Stellen Sie sicher, dass die Funktion aktiv ist
<a name="_step_3_verify_the_capability_is_active"></a>

Warten Sie, bis die Funktion aktiv wird. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --query 'capability.status' \
  --output text
```

Die Funktion ist bereit, wenn der Status angezeigt wird`ACTIVE`. Fahren Sie erst mit dem nächsten Schritt fort, wenn der Status lautet`ACTIVE`.

Sie können sich auch die vollständigen Funktionsdetails ansehen:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack
```

## Schritt 4: Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_step_4_verify_custom_resources_are_available"></a>

Nachdem die Funktion aktiviert ist, stellen Sie sicher, dass benutzerdefinierte ACK-Ressourcen in Ihrem Cluster verfügbar sind:

```
kubectl api-resources | grep services.k8s.aws
```

Sie sollten eine Reihe von AWS Ressourcen in der APIs Liste sehen.

**Anmerkung**  
Die Funktion für AWS Controller for Kubernetes wird eine Reihe von CRDs für eine Vielzahl von AWS Ressourcen installieren.

## Nächste Schritte
<a name="_next_steps"></a>
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und legen Sie los
+  [ACK-Berechtigungen konfigurieren](ack-permissions.md)- Konfigurieren Sie IAM-Berechtigungen für andere Dienste AWS 
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalten Sie Ihre ACK-Fähigkeitsressource

# Erstellen Sie eine ACK-Fähigkeit mit eksctl
<a name="ack-create-eksctl"></a>

In diesem Thema wird beschrieben, wie Sie mit eksctl eine AWS Controllers for Kubernetes-Funktion (ACK) erstellen.

**Anmerkung**  
Für die folgenden Schritte ist die Version eksctl oder höher erforderlich. `0.220.0` Führen Sie den Befehl aus, um Ihre Version zu überprüfen. `eksctl version`

## Schritt 1: Erstellen Sie eine IAM-Capability-Rolle
<a name="_step_1_create_an_iam_capability_role"></a>

Erstellen Sie eine Vertrauensrichtliniendatei:

```
cat > ack-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Erstellen Sie die IAM-Rolle:

```
aws iam create-role \
  --role-name ACKCapabilityRole \
  --assume-role-policy-document file://ack-trust-policy.json
```

Hängen Sie die `AdministratorAccess` verwaltete Richtlinie an die Rolle an:

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**Wichtig**  
Die vorgeschlagene `AdministratorAccess` Richtlinie gewährt umfassende Berechtigungen und soll den Einstieg vereinfachen. Für den produktiven Einsatz sollten Sie diese Richtlinie durch eine benutzerdefinierte Richtlinie ersetzen, die nur die Berechtigungen gewährt, die für die spezifischen AWS Dienste erforderlich sind, die Sie mit ACK verwalten möchten. Anleitungen zur Erstellung von Richtlinien mit den geringsten Rechten finden Sie unter und. [ACK-Berechtigungen konfigurieren](ack-permissions.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

**Wichtig**  
Diese Richtlinie gewährt Berechtigungen für die S3-Bucketverwaltung mit`"Resource": "*"`, wodurch Operationen auf allen S3-Buckets möglich sind.  
Für Produktionszwecke: \$1 Beschränken Sie das `Resource` Feld auf bestimmte Bucket ARNs - oder Namensmuster \$1 Verwenden Sie IAM-Bedingungsschlüssel, um den Zugriff anhand von Ressourcen-Tags einzuschränken \$1 Gewähren Sie nur die für Ihren Anwendungsfall erforderlichen Mindestberechtigungen  
Weitere AWS Dienste finden Sie unter[ACK-Berechtigungen konfigurieren](ack-permissions.md).

Fügen Sie die Richtlinie an die Rolle an:

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/ACKS3Policy
```

## Schritt 2: Erstellen Sie die ACK-Fähigkeit
<a name="_step_2_create_the_ack_capability"></a>

Erstellen Sie die ACK-Fähigkeit mit eksctl. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
eksctl create capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --ack-service-controllers s3
```

**Anmerkung**  
Die `--ack-service-controllers` Flagge ist optional. Wenn es weggelassen wird, aktiviert ACK alle verfügbaren Controller. Für eine bessere Leistung und Sicherheit sollten Sie erwägen, nur die Controller zu aktivieren, die Sie benötigen. Sie können mehrere Controller angeben: `--ack-service-controllers s3,rds,dynamodb` 

Der Befehl kehrt sofort zurück, aber es dauert einige Zeit, bis die Funktion aktiv wird.

## Schritt 3: Stellen Sie sicher, dass die Funktion aktiv ist
<a name="_step_3_verify_the_capability_is_active"></a>

Überprüfen Sie den Status der Fähigkeit:

```
eksctl get capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack
```

Die Fähigkeit ist bereit, wenn der Status angezeigt wird`ACTIVE`.

## Schritt 4: Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_step_4_verify_custom_resources_are_available"></a>

Nachdem die Funktion aktiviert ist, stellen Sie sicher, dass benutzerdefinierte ACK-Ressourcen in Ihrem Cluster verfügbar sind:

```
kubectl api-resources | grep services.k8s.aws
```

Sie sollten eine Reihe von AWS Ressourcen in der APIs Liste sehen.

**Anmerkung**  
Die Funktion für AWS Controller for Kubernetes wird eine Reihe von CRDs für eine Vielzahl von AWS Ressourcen installieren.

## Nächste Schritte
<a name="_next_steps"></a>
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und legen Sie los
+  [ACK-Berechtigungen konfigurieren](ack-permissions.md)- Konfigurieren Sie IAM-Berechtigungen für andere Dienste AWS 
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalten Sie Ihre ACK-Fähigkeitsressource

# ACK-Konzepte
<a name="ack-concepts"></a>

ACK verwaltet AWS Ressourcen über Kubernetes, APIs indem es kontinuierlich den gewünschten Status in Ihren Manifesten mit dem tatsächlichen Status in abgleicht. AWS Wenn Sie eine benutzerdefinierte Kubernetes-Ressource erstellen oder aktualisieren, führt ACK die erforderlichen AWS API-Aufrufe durch, um die entsprechende AWS Ressource zu erstellen oder zu ändern, überwacht sie dann auf Abweichungen und aktualisiert den Kubernetes-Status, um den aktuellen Status widerzuspiegeln. Mit diesem Ansatz können Sie die Infrastruktur mithilfe vertrauter Kubernetes-Tools und -Workflows verwalten und gleichzeitig die Konsistenz zwischen Ihrem Cluster und aufrechterhalten. AWS

In diesem Thema werden die grundlegenden Konzepte erläutert, die der Verwaltung von AWS Ressourcen durch ACK über Kubernetes zugrunde liegen. APIs

## Erste Schritte mit ACK
<a name="_getting_started_with_ack"></a>

Nachdem Sie die ACK-Fähigkeit erstellt haben (siehe[Erstellen Sie eine ACK-Fähigkeit](create-ack-capability.md)), können Sie mit der Verwaltung von AWS Ressourcen mithilfe von Kubernetes-Manifesten in Ihrem Cluster beginnen.

Erstellen Sie beispielsweise dieses S3-Bucket-Manifest in und wählen Sie `bucket.yaml` dabei Ihren eigenen eindeutigen Bucket-Namen.

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-test-bucket
  namespace: default
spec:
  name: my-unique-bucket-name-12345
```

Wenden Sie das Manifest an:

```
kubectl apply -f bucket.yaml
```

Überprüfen Sie den Status:

```
kubectl get bucket my-test-bucket
kubectl describe bucket my-test-bucket
```

Stellen Sie sicher, dass der Bucket erstellt wurde in AWS:

```
aws s3 ls | grep my-unique-bucket-name-12345
```

Löschen Sie die Kubernetes-Ressource:

```
kubectl delete bucket my-test-bucket
```

Stellen Sie sicher, dass der Bucket gelöscht wurde aus: AWS

```
aws s3 ls | grep my-unique-bucket-name-12345
```

Der Bucket sollte nicht mehr in der Liste erscheinen, was zeigt, dass ACK den gesamten Lebenszyklus von AWS Ressourcen verwaltet.

Weitere Informationen zu den ersten Schritten mit ACK finden Sie unter [Erste Schritte mit ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/getting-started/).

## Lebenszyklus und Abstimmung von Ressourcen
<a name="_resource_lifecycle_and_reconciliation"></a>

ACK verwendet eine kontinuierliche Abstimmungsschleife, um sicherzustellen, dass Ihre AWS Ressourcen dem gewünschten Status entsprechen, der in Ihren Kubernetes-Manifesten definiert ist.

 **So funktioniert der Abgleich**:

1. Sie erstellen oder aktualisieren eine benutzerdefinierte Kubernetes-Ressource (z. B. einen S3-Bucket)

1. ACK erkennt die Änderung und vergleicht den gewünschten Zustand mit dem tatsächlichen Zustand in AWS 

1. Wenn sie sich unterscheiden, führt ACK AWS API-Aufrufe durch, um den Unterschied auszugleichen

1. ACK aktualisiert den Ressourcenstatus in Kubernetes, um den aktuellen Status widerzuspiegeln

1. Die Schleife wiederholt sich kontinuierlich, in der Regel alle paar Stunden

Der Abgleich wird ausgelöst, wenn Sie eine neue Kubernetes-Ressource erstellen, die einer vorhandenen Ressource aktualisieren oder wenn ACK feststellt`spec`, dass aufgrund manueller Änderungen, die außerhalb AWS von ACK vorgenommen wurden, Abweichungen auftreten. Darüber hinaus führt ACK einen regelmäßigen Abgleich mit einer Resynchronisierungszeit von 10 Stunden durch. Änderungen an Kubernetes-Ressourcen lösen einen sofortigen Abgleich aus, während die passive Drift-Erkennung von AWS Upstream-Ressourcenänderungen während der regelmäßigen Neusynchronisierung erfolgt.

Bei der Bearbeitung des obigen Beispiels für die ersten Schritte führt ACK die folgenden Schritte aus:

1. Prüft, ob ein Bucket existiert in AWS 

1. Wenn nicht, ruft `s3:CreateBucket` 

1. Aktualisiert den Kubernetes-Status mit dem Bucket ARN und dem Status

1. Setzt die Überwachung auf Drift fort

Weitere Informationen zur Funktionsweise von ACK finden Sie unter [ACK Reconciliation](https://aws-controllers-k8s.github.io/community/docs/user-docs/reconciliation/).

## Statusbedingungen
<a name="_status_conditions"></a>

ACK-Ressourcen verwenden Statusbedingungen, um ihren Status zu kommunizieren. Wenn Sie diese Bedingungen verstehen, können Sie Probleme beheben und den Zustand der Ressourcen besser verstehen.
+  **Bereit**: Zeigt an, dass die Ressource bereit ist, genutzt zu werden (standardisierter Kubernetes-Zustand).
+  **ZURÜCK. ResourceSynced**: Zeigt an, dass die Ressourcenspezifikation dem AWS Ressourcenstatus entspricht.
+  **ack.Terminal**: Zeigt an, dass ein nicht behebbarer Fehler aufgetreten ist.
+  **ack.Adopted**: Zeigt an, dass die Ressource aus einer vorhandenen Ressource übernommen und nicht neu erstellt wurde. AWS 
+  **Ack.Recoverable: Weist auf einen behebbaren** Fehler hin, der ohne Aktualisierung der Spezifikation behoben werden kann.
+  **ACK.Advisory**: Stellt Beratungsinformationen zu der Ressource bereit.
+  **ACK. LateInitialized**: Zeigt an, ob die späte Initialisierung der Felder abgeschlossen ist.
+  **ZURÜCK. ReferencesResolved**: Gibt an, ob alle `AWSResourceReference` Felder aufgelöst wurden.
+  **ZURÜCK. IAMRoleAusgewählt**: Gibt an, ob ein IAMRole Selektor für die Verwaltung dieser Ressource ausgewählt wurde.

Überprüfen Sie den Ressourcenstatus:

```
# Check if resource is ready
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'

# Check for terminal errors
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="ACK.Terminal")]}'
```

Beispiel für einen Status:

```
status:
  conditions:
  - type: Ready
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.ResourceSynced
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.Terminal
    status: "True"
  ackResourceMetadata:
    arn: arn:aws:s3:::my-unique-bucket-name
    ownerAccountID: "111122223333"
    region: us-west-2
```

Weitere Informationen zum ACK-Status und zu den ACK-Bedingungen finden Sie unter [ACK-Bedingungen](https://aws-controllers-k8s.github.io/community/docs/user-docs/conditions/).

## Richtlinien zum Löschen
<a name="_deletion_policies"></a>

Die Löschrichtlinie von ACK steuert, was mit AWS Ressourcen passiert, wenn Sie die Kubernetes-Ressource löschen.

 **Löschen (Standard)** 

Die AWS Ressource wird gelöscht, wenn Sie die Kubernetes-Ressource löschen: Dies ist das Standardverhalten.

```
# No annotation needed - this is the default
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: temp-bucket
spec:
  name: temporary-bucket
```

Durch das Löschen dieser Ressource wird der S3-Bucket in gelöscht. AWS

 **Beibehalten** 

Die AWS Ressource bleibt erhalten, wenn Sie die Kubernetes-Ressource löschen:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: important-bucket
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  name: production-data-bucket
```

Wenn Sie diese Ressource löschen, wird sie aus Kubernetes entfernt, der S3-Bucket bleibt jedoch erhalten. AWS

Die `retain` Richtlinie ist nützlich für Produktionsdatenbanken, die die Kubernetes-Ressource überdauern sollen, für gemeinsam genutzte Ressourcen, die von mehreren Anwendungen genutzt werden, für Ressourcen mit wichtigen Daten, die nicht versehentlich gelöscht werden sollten, oder für temporäres ACK-Management, bei dem Sie eine Ressource übernehmen, konfigurieren und sie dann wieder für die manuelle Verwaltung freigeben.

Weitere Informationen zur ACK-Löschrichtlinie finden Sie unter [ACK-Löschrichtlinie](https://aws-controllers-k8s.github.io/community/docs/user-docs/deletion-policy/).

## Einführung von Ressourcen
<a name="_resource_adoption"></a>

Durch die Einführung können Sie vorhandene AWS Ressourcen unter das ACK-Management stellen, ohne sie neu erstellen zu müssen.

Wann sollte Adoption verwendet werden:
+ Migration der vorhandenen Infrastruktur zum ACK-Management
+ Wiederherstellung verwaister AWS Ressourcen bei versehentlichem Löschen von Ressourcen in Kubernetes
+ Importieren von Ressourcen, die mit anderen Tools erstellt wurden (CloudFormation, Terraform)

So funktioniert Adoption:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Wenn Sie diese Ressource erstellen:

1. ACK prüft, ob ein Bucket mit diesem Namen vorhanden ist AWS 

1. Wenn es gefunden wird, übernimmt ACK es (keine API-Aufrufe zum Erstellen)

1. ACK liest die aktuelle Konfiguration von AWS 

1. ACK aktualisiert den Kubernetes-Status, um den aktuellen Status widerzuspiegeln

1. Zukünftige Updates stimmen die Ressource normal ab

Nach der Übernahme werden Ressourcen wie jede andere ACK-Ressource verwaltet. Wenn Sie die Kubernetes-Ressource löschen, wird die Ressource gelöscht, sofern Sie nicht die AWS Löschrichtlinie verwenden. `retain`

Bei der Übernahme von Ressourcen muss die AWS Ressource bereits vorhanden sein und ACK benötigt Leseberechtigungen, um sie zu finden. Die `adopt-or-create` Richtlinie übernimmt die Ressource, falls sie existiert, oder erstellt sie, wenn sie nicht existiert. Dies ist nützlich, wenn Sie einen deklarativen Workflow benötigen, der unabhängig davon funktioniert, ob die Ressource existiert oder nicht.

Weitere Informationen zur Einführung von ACK-Ressourcen finden Sie unter Einführung von [ACK-Ressourcen](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/).

## Konto- und regionsübergreifende Ressourcen
<a name="_cross_account_and_cross_region_resources"></a>

ACK kann Ressourcen in verschiedenen AWS Konten und Regionen von einem einzigen Cluster aus verwalten.

 **Regionsübergreifende Anmerkungen zu Ressourcen** 

Sie können die Region einer AWS Ressource mithilfe einer Anmerkung angeben:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: eu-bucket
  annotations:
    services.k8s.aws/region: eu-west-1
spec:
  name: my-eu-bucket
```

Sie können auch die Region aller AWS Ressourcen angeben, die in einem bestimmten Namespace erstellt wurden:

 **Namespace-Anmerkungen** 

Legen Sie eine Standardregion für alle Ressourcen in einem Namespace fest:

```
apiVersion: v1
kind: Namespace
metadata:
  name: production
  annotations:
    services.k8s.aws/default-region: us-west-2
```

In diesem Namespace erstellte Ressourcen verwenden diese Region, sofern sie nicht durch eine Anmerkung auf Ressourcenebene überschrieben wird.

 **Kontoübergreifend** 

Verwenden Sie IAM-Rollenselektoren, um bestimmte IAM-Rollen Namespaces zuzuordnen:

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: target-account-config
spec:
  arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole
  namespaceSelector:
    names:
      - production
```

Ressourcen, die im zugewiesenen Namespace erstellt wurden, verwenden automatisch die angegebene Rolle.

Weitere Informationen zu IAM-Rollenselektoren finden Sie unter Accountübergreifendes [ACK-Ressourcenmanagement](https://aws-controllers-k8s.github.io/docs/guides/cross-account). Einzelheiten zur kontoübergreifenden Konfiguration finden Sie unter. [ACK-Berechtigungen konfigurieren](ack-permissions.md)

## Fehlerbehandlung und Verhalten bei Wiederholungsversuchen
<a name="_error_handling_and_retry_behavior"></a>

ACK behandelt automatisch vorübergehende Fehler und wiederholt fehlgeschlagene Operationen.

Strategie erneut versuchen:
+ Vorübergehende Fehler (Ratenbegrenzung, vorübergehende Serviceprobleme, unzureichende Berechtigungen) lösen automatische Wiederholungsversuche aus
+ Exponentieller Backoff verhindert Überforderung AWS APIs
+ Die maximale Anzahl von Wiederholungsversuchen ist je nach Fehlertyp unterschiedlich
+ Dauerhafte Fehler (ungültige Parameter, Konflikte mit Ressourcennamen) führen nicht zu einem erneuten Versuch

Überprüfen Sie den Ressourcenstatus auf Fehlerdetails mit`kubectl describe`:

```
kubectl describe bucket my-bucket
```

Suchen Sie nach Statusbedingungen mit Fehlermeldungen, Ereignissen, die die letzten Abgleichversuche anzeigen, und dem `message` Feld unter Statusbedingungen, in denen Fehler erklärt werden. Zu den häufigsten Fehlern gehören unzureichende IAM-Berechtigungen, Konflikte bei Ressourcennamen AWS, ungültige Konfigurationswerte in der `spec` und Überschreitung von AWS Servicekontingenten.

Informationen zur Behebung häufiger Fehler finden Sie unter[Probleme mit ACK-Funktionen beheben](ack-troubleshooting.md).

## Ressourcenzusammensetzung mit Kro
<a name="_resource_composition_with_kro"></a>

Verwenden Sie die EKS-Funktion für kro (Kube Resource Orchestrator), um mehrere ACK-Ressourcen zusammenzustellen und miteinander zu verbinden. kro bietet eine deklarative Möglichkeit, Ressourcengruppen zu definieren und Konfigurationen zwischen Ressourcen zu übergeben, um komplexe Infrastrukturmuster einfach zu verwalten.

Ausführliche Beispiele für die Erstellung benutzerdefinierter Ressourcenzusammenstellungen mit ACK-Ressourcen finden Sie unter [Kro-Konzepte](kro-concepts.md) 

## Nächste Schritte
<a name="_next_steps"></a>
+  [ACK-Überlegungen für EKS](ack-considerations.md)- EKS-spezifische Muster und Integrationsstrategien

# ACK-Berechtigungen konfigurieren
<a name="ack-permissions"></a>

ACK benötigt IAM-Berechtigungen, um AWS Ressourcen in Ihrem Namen zu erstellen und zu verwalten. In diesem Thema wird erklärt, wie IAM mit ACK zusammenarbeitet, und es finden Sie Anleitungen zur Konfiguration von Berechtigungen für verschiedene Anwendungsfälle.

## Wie funktioniert IAM mit ACK
<a name="_how_iam_works_with_ack"></a>

ACK verwendet IAM-Rollen, um sich bei Ihren Ressourcen zu authentifizieren AWS und Aktionen für sie auszuführen. Es gibt zwei Möglichkeiten, ACK Berechtigungen zu erteilen:

 **Funktionsrolle**: Die IAM-Rolle, die Sie bei der Erstellung der ACK-Fähigkeit angeben. Diese Rolle wird standardmäßig für alle ACK-Operationen verwendet.

 **IAM-Rollenselektoren**: Zusätzliche IAM-Rollen, die bestimmten Namespaces oder Ressourcen zugeordnet werden können. Diese Rollen haben Vorrang vor der Capability-Rolle für Ressourcen in ihrem Geltungsbereich.

Wenn ACK eine Ressource erstellen oder verwalten muss, bestimmt es, welche IAM-Rolle verwendet werden soll:

1. Prüfen Sie, ob ein IAMRole Selector dem Namespace der Ressource entspricht

1. Wenn eine Übereinstimmung gefunden wird, gehen Sie von dieser IAM-Rolle aus

1. Verwenden Sie andernfalls die Capability-Rolle

Dieser Ansatz ermöglicht ein flexibles Berechtigungsmanagement, von einfachen Einzelrollen-Setups bis hin zu komplexen Konfigurationen mit mehreren Konten und mehreren Teams.

## Erste Schritte: Einfache Einrichtung von Berechtigungen
<a name="_getting_started_simple_permission_setup"></a>

Für Entwicklungs-, Test- oder einfache Anwendungsfälle können Sie der Capability Role alle erforderlichen Serviceberechtigungen direkt hinzufügen.

Dieser Ansatz funktioniert gut, wenn:
+ Sie fangen mit ACK an
+ Alle Ressourcen befinden sich auf demselben AWS Konto
+ Ein einziges Team verwaltet alle ACK-Ressourcen
+ Sie vertrauen darauf, dass alle ACK-Benutzer dieselben Berechtigungen haben

## Bewährte Methode für die Produktion: IAM-Rollenselektoren
<a name="_production_best_practice_iam_role_selectors"></a>

Verwenden Sie in Produktionsumgebungen IAM-Rollenselektoren, um den Zugriff mit den geringsten Rechten und die Isolierung auf Namespace-Ebene zu implementieren.

Bei der Verwendung von IAM-Rollenselektoren benötigt die Capability Role nur die erforderlichen Berechtigungen, um die dienstspezifischen Rollen zu übernehmen. `sts:AssumeRole` `sts:TagSession` Sie müssen der Capability-Rolle selbst keine AWS Serviceberechtigungen (wie S3 oder RDS) hinzufügen — diese Berechtigungen werden den einzelnen IAM-Rollen erteilt, die die Capability-Rolle annimmt.

 **Wählen Sie zwischen Berechtigungsmodellen**:

Verwenden Sie **direkte Berechtigungen** (Hinzufügen von Serviceberechtigungen zur Capability Role), wenn:
+ Sie sind am Anfang und möchten die einfachste Einrichtung
+ Alle Ressourcen befinden sich in demselben Konto wie Ihr Cluster
+ Sie haben administrative, clusterweite Berechtigungsanforderungen
+ Alle Teams können dieselben Berechtigungen gemeinsam nutzen

Verwenden Sie **IAM-Rollenselektoren** in folgenden Fällen:
+ Verwaltung von Ressourcen über mehrere Konten hinweg AWS 
+ Verschiedene Teams oder Namespaces benötigen unterschiedliche Berechtigungen
+ Sie benötigen eine differenzierte Zugriffskontrolle pro Namespace
+ Sie möchten sich an die Sicherheitsverfahren mit den geringsten Rechten halten

Sie können mit direkten Berechtigungen beginnen und später zu IAM Role Selectors migrieren, wenn Ihre Anforderungen steigen.

 **Warum sollten Sie IAM-Rollenselektoren in der Produktion verwenden:** 
+  **Geringste Rechte: Jeder Namespace erhält nur die Berechtigungen**, die er benötigt
+  **Teamisolierung**: Team A kann nicht versehentlich die Berechtigungen von Team B verwenden
+  **Einfachere Prüfung**: Klare Zuordnung, welcher Namespace welche Rolle verwendet
+  **Kontoübergreifende Unterstützung**: Erforderlich für die Verwaltung von Ressourcen in mehreren Konten
+  **Trennung der Anliegen**: Verschiedene Dienste oder Umgebungen verwenden unterschiedliche Rollen

### Grundlegende Einrichtung des IAM-Rollenauswahlsystems
<a name="_basic_iam_role_selector_setup"></a>

 **Schritt 1: Erstellen Sie eine dienstspezifische IAM-Rolle** 

Erstellen Sie eine IAM-Rolle mit Berechtigungen für bestimmte Dienste: AWS 

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": "*"
    }
  ]
}
```

Konfigurieren Sie die Vertrauensrichtlinie so, dass sie von der Capability Role übernommen wird:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

 **Schritt 2: Erteilen Sie der Capability-Rolle die AssumeRole Berechtigung** 

Fügen Sie der Capability-Rolle die Erlaubnis hinzu, die dienstspezifische Rolle anzunehmen:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::111122223333:role/ACK-S3-Role"
    }
  ]
}
```

 **Schritt 3: Selektor erstellen IAMRole** 

Ordnen Sie die IAM-Rolle einem Namespace zu:

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: s3-namespace-config
spec:
  arn: arn:aws:iam::111122223333:role/ACK-S3-Role
  namespaceSelector:
    names:
      - s3-resources
```

 **Schritt 4: Ressourcen im zugewiesenen Namespace erstellen** 

Ressourcen im `s3-resources` Namespace verwenden automatisch die angegebene Rolle:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-bucket
  namespace: s3-resources
spec:
  name: my-production-bucket
```

## Verwaltung mehrerer Konten
<a name="_multi_account_management"></a>

Verwenden Sie IAM-Rollenauswahlen, um Ressourcen für mehrere Konten zu verwalten. AWS 

 **Schritt 1: Erstellen Sie eine kontoübergreifende IAM-Rolle** 

Erstellen Sie im Zielkonto (444455556666) eine Rolle, die der Capability-Rolle des Quellkontos vertraut:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

Ordnen Sie dieser Rolle dienstspezifische Berechtigungen zu.

 **Schritt 2: Erteilen Sie die Erlaubnis AssumeRole ** 

Erlauben Sie der Capability Role im Quellkonto (111122223333), die Rolle des Zielkontos anzunehmen:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::444455556666:role/ACKTargetAccountRole"
    }
  ]
}
```

 **Schritt 3: Selektor erstellen IAMRole** 

Ordnen Sie die kontoübergreifende Rolle einem Namespace zu:

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: production-account-config
spec:
  arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole
  namespaceSelector:
    names:
      - production
```

 **Schritt 4: Ressourcen erstellen** 

Ressourcen im `production` Namespace werden im Zielkonto erstellt:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-bucket
  namespace: production
spec:
  name: my-cross-account-bucket
```

## Sitzungs-Tags
<a name="_session_tags"></a>

Die EKS-ACK-Fähigkeit legt automatisch Sitzungs-Tags für alle AWS API-Anfragen fest. Diese Tags ermöglichen eine detaillierte Zugriffskontrolle und Prüfung, indem sie die Quelle jeder Anfrage identifizieren.

### Verfügbare Sitzungs-Tags
<a name="_available_session_tags"></a>

Die folgenden Sitzungs-Tags sind in jedem AWS API-Aufruf von ACK enthalten:


| Tag-Schlüssel | Description | 
| --- | --- | 
|   `eks:eks-capability-arn`   |  Der ARN der EKS-Funktion, die die Anfrage stellt  | 
|   `eks:kubernetes-namespace`   |  Der Kubernetes-Namespace der verwalteten Ressource  | 
|   `eks:kubernetes-api-group`   |  Die Kubernetes-API-Gruppe der Ressource (zum Beispiel) `s3.services.k8s.aws`  | 

### Verwenden von Sitzungs-Tags für die Zugriffskontrolle
<a name="_using_session_tags_for_access_control"></a>

Sie können diese Sitzungs-Tags in den IAM-Richtlinienbedingungen verwenden, um einzuschränken, welche Ressourcen ACK verwalten kann. Dies bietet eine zusätzliche Sicherheitsebene, die über die auf Namespaces basierenden IAM-Rollenselektoren hinausgeht.

 **Beispiel: Nach Namespace einschränken** 

Erlauben Sie ACK, S3-Buckets nur zu erstellen, wenn die Anfrage aus dem Namespace stammt: `production`

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:CreateBucket",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/eks:kubernetes-namespace": "production"
        }
      }
    }
  ]
}
```

 **Beispiel: Nach Fähigkeit einschränken** 

Nur Aktionen von einer bestimmten ACK-Fähigkeit aus zulassen:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/eks:eks-capability-arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack"
        }
      }
    }
  ]
}
```

**Anmerkung**  
Sitzungs-Tags unterscheiden sich von selbstverwaltetem ACK, bei dem diese Tags nicht standardmäßig festgelegt werden. Dies ermöglicht eine detailliertere Zugriffskontrolle mit der verwalteten Funktion.

## Erweiterte IAM-Rollenauswahlmuster
<a name="_advanced_iam_role_selector_patterns"></a>

[Eine erweiterte Konfiguration mit Labelselektoren, ressourcenspezifischer Rollenzuweisung und weiteren Beispielen finden Sie in der ACK IRSA-Dokumentation.](https://aws-controllers-k8s.github.io/community/docs/user-docs/irsa/)

## Nächste Schritte
<a name="_next_steps"></a>
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und den Ressourcenlebenszyklus
+  [ACK-Konzepte](ack-concepts.md)- Erfahren Sie mehr über Richtlinien für die Einführung und Löschung von Ressourcen
+  [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)- Machen Sie sich mit bewährten Sicherheitsmethoden für Funktionen vertraut

# ACK-Überlegungen für EKS
<a name="ack-considerations"></a>

In diesem Thema werden wichtige Überlegungen zur Nutzung der EKS-Funktion für ACK behandelt, darunter die IAM-Konfiguration, Muster für mehrere Konten und die Integration mit anderen EKS-Funktionen.

## IAM-Konfigurationsmuster
<a name="_iam_configuration_patterns"></a>

Die ACK-Fähigkeit verwendet eine IAM-Fähigkeitsrolle für die Authentifizierung. AWS Wählen Sie das richtige IAM-Muster, das Ihren Anforderungen entspricht.

### Einfach: Eine einzige Capability-Rolle
<a name="_simple_single_capability_role"></a>

Erteilen Sie der Capability-Rolle direkt alle erforderlichen Berechtigungen für Entwicklung, Tests oder einfache Anwendungsfälle.

 **Wann sollte Folgendes verwendet werden**:
+ Erste Schritte mit ACK
+ Bereitstellungen mit einem einzigen Konto
+ Alle Ressourcen werden von einem Team verwaltet
+ Entwicklungs- und Testumgebungen

 **Beispiel**: Fügen Sie Ihrer Capability Role S3- und RDS-Berechtigungen mit Bedingungen für die Kennzeichnung von Ressourcen hinzu:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["rds:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        },
      }
    }
  ]
}
```

Dieses Beispiel beschränkt die S3- und RDS-Operationen auf bestimmte Regionen und erfordert, dass RDS-Ressourcen über ein `ManagedBy: ACK` Tag verfügen.

### Produktion: IAM-Rollenselektoren
<a name="_production_iam_role_selectors"></a>

Verwenden Sie in Produktionsumgebungen IAM-Rollenselektoren, um den Zugriff mit den geringsten Rechten und die Isolierung auf Namespace-Ebene zu implementieren.

 **Wann** sollte Folgendes verwendet werden:
+ Produktionsumgebungen
+ Cluster mit mehreren Teams
+ Ressourcenverwaltung für mehrere Konten
+ Sicherheitsanforderungen mit den geringsten Rechten
+ Verschiedene Dienste benötigen unterschiedliche Berechtigungen

 **Vorteile**:
+ Jeder Namespace erhält nur die Berechtigungen, die er benötigt
+ Teamisolierung — Team A kann die Berechtigungen von Team B nicht verwenden
+ Einfachere Prüfung und Einhaltung von Vorschriften
+ Erforderlich für kontenübergreifendes Ressourcenmanagement

Eine ausführliche Konfiguration des IAM-Rollenauswahlsystems finden Sie unter. [ACK-Berechtigungen konfigurieren](ack-permissions.md)

## Integration mit anderen EKS-Funktionen
<a name="_integration_with_other_eks_capabilities"></a>

### GitOps mit Argo CD
<a name="_gitops_with_argo_cd"></a>

Verwenden Sie die EKS-Funktion für Argo CD, um ACK-Ressourcen aus Git-Repositorys bereitzustellen und GitOps Workflows für das Infrastrukturmanagement zu ermöglichen.

 **Überlegungen**:
+ Speichern Sie ACK-Ressourcen zusammen mit Anwendungsmanifesten für end-to-end GitOps
+ Organisieren Sie auf der Grundlage Ihrer Teamstruktur nach Umgebung, Service oder Ressourcentyp
+ Verwenden Sie die automatische Synchronisation von Argo CD für einen kontinuierlichen Abgleich
+ Aktivieren Sie das Bereinigen, um gelöschte Ressourcen automatisch zu entfernen
+ Ziehen Sie hub-and-spoke Muster für das Infrastrukturmanagement mehrerer Cluster in Betracht

GitOps bietet Prüfpfade, Rollback-Funktionen und deklaratives Infrastrukturmanagement. Weitere Informationen zu Argo CD finden Sie unter. [Arbeiten mit Argo CD](working-with-argocd.md)

### Ressourcenzusammensetzung mit Kro
<a name="_resource_composition_with_kro"></a>

Verwenden Sie die EKS-Funktion für kro (Kube Resource Orchestrator), um mehrere ACK-Ressourcen in abstrakte und benutzerdefinierte Elemente auf höherer Ebene zusammenzustellen. APIs

 **Wann sollte Kro** mit ACK verwendet werden:
+ Erstellen Sie wiederverwendbare Muster für gängige Infrastruktur-Stacks (Datenbank \$1 Backup \$1 Überwachung)
+ Erstellen Sie Self-Service-Plattformen mit vereinfachten Funktionen APIs für Anwendungsteams
+ Ressourcenabhängigkeiten verwalten und Werte zwischen Ressourcen übergeben (S3-Bucket-ARN an Lambda-Funktion)
+ Standardisieren Sie die Infrastrukturkonfigurationen teamübergreifend
+ Reduzieren Sie die Komplexität, indem Sie Implementierungsdetails hinter benutzerdefinierten Ressourcen verstecken

 **Beispielmuster**:
+ Anwendungsstapel: S3-Bucket \$1 SQS-Warteschlange \$1 Benachrichtigungskonfiguration
+ Datenbank-Setup: RDS-Instanz \$1 Parametergruppe \$1 Sicherheitsgruppe \$1 Geheimnisse
+ Netzwerk: VPC \$1 Subnetze \$1 Routentabellen \$1 Sicherheitsgruppen

kro kümmert sich um die Reihenfolge der Abhängigkeiten, die Statusweiterleitung und das Lebenszyklusmanagement für zusammengesetzte Ressourcen. Weitere Informationen zu Kro finden Sie unter. [Kro-Konzepte](kro-concepts.md)

## Organisieren Sie Ihre Ressourcen
<a name="_organizing_your_resources"></a>

Organisieren Sie ACK-Ressourcen mithilfe von Kubernetes-Namespaces und AWS Ressourcen-Tags für eine bessere Verwaltung, Zugriffskontrolle und Kostenverfolgung.

### Organisation des Namespaces
<a name="_namespace_organization"></a>

Verwenden Sie Kubernetes-Namespaces, um ACK-Ressourcen logisch nach Umgebung (Produktion, Staging, Entwicklung), Team (Plattform, Daten, ML) oder Anwendung zu trennen.

 **Vorteile:**
+ RBAC mit Namespace-Gültigkeitsbereich für die Zugriffskontrolle
+ Legen Sie mithilfe von Anmerkungen Standardregionen pro Namespace fest
+ Einfachere Ressourcenverwaltung und Bereinigung
+ Logische Trennung im Einklang mit der Organisationsstruktur

### Ressourcen-Markierung
<a name="_resource_tagging"></a>

Die EKS-ACK-Funktion wendet automatisch Standardtags auf alle AWS Ressourcen an, die sie erstellt. Diese Tags unterscheiden sich von selbstverwalteten ACK und bieten eine verbesserte Rückverfolgbarkeit.

 Von der **Funktion angewendete Standardtags**:


| Tag-Schlüssel | Description | 
| --- | --- | 
|   `eks:controller-version`   |  Die Version des ACK-Controllers  | 
|   `eks:kubernetes-namespace`   |  Der Kubernetes-Namespace der ACK-Ressource  | 
|   `eks:kubernetes-resource-name`   |  Der Name der Kubernetes-Ressource  | 
|   `eks:kubernetes-api-group`   |  Die Kubernetes-API-Gruppe (zum Beispiel) `s3.services.k8s.aws`  | 
|   `eks:eks-capability-arn`   |  Der ARN der EKS ACK-Fähigkeit  | 

**Anmerkung**  
Selbstverwaltetes ACK verwendet verschiedene Standardtags: `services.k8s.aws/controller-version` und`services.k8s.aws/namespace`. Die Tags der Funktion verwenden das `eks:` Präfix aus Gründen der Konsistenz mit anderen EKS-Funktionen.

 **Zusätzliche empfohlene Tags**:

Fügen Sie benutzerdefinierte Tags für die Kostenzuweisung, die Nachverfolgung der Eigentumsverhältnisse und für organisatorische Zwecke hinzu:
+ Umgebung (Produktion, Bereitstellung, Entwicklung)
+ Eigentümerschaft des Teams oder der Abteilung
+ Kostenstelle für die Fakturierung
+ Name der Anwendung oder des Dienstes

## Migration von anderen Infrastructure-as-code Tools
<a name="_migration_from_other_infrastructure_as_code_tools"></a>

Viele Unternehmen halten es für sinnvoll, Kubernetes über ihre Workload-Orchestrierung hinaus zu standardisieren. Durch die Migration des Infrastruktur- und AWS Ressourcenmanagements zu ACK können Sie das Infrastrukturmanagement mithilfe von Kubernetes zusammen mit Ihren Anwendungs-Workloads standardisieren. APIs 

 **Vorteile der Standardisierung** auf Kubernetes für die Infrastruktur:
+  **Zentrale Informationsquelle**: Verwalten Sie sowohl Anwendungen als auch Infrastruktur in Kubernetes und ermöglichen Sie so eine Praxis end-to-end GitOps 
+  **Einheitliches Tooling**: Teams nutzen die Ressourcen und Tools von Kubernetes, anstatt mehrere Tools und Frameworks zu erlernen
+  **Konsistenter Abgleich**: ACK gleicht AWS Ressourcen kontinuierlich ab, wie es Kubernetes für Workloads tut, und erkennt und korrigiert Abweichungen im Vergleich zu unverzichtbaren Tools
+  **Systemeigene Kompositionen: Wenn** Kro und ACK zusammen verwendet werden, können AWS Ressourcen direkt in Anwendungs- und Ressourcenmanifesten referenziert werden, wobei Verbindungszeichenfolgen und zwischen Ressourcen weitergegeben werden ARNs 
+  **Vereinfachter Betrieb**: Eine Steuerungsebene für Bereitstellungen, Rollbacks und Beobachtbarkeit im gesamten System

ACK unterstützt die Übernahme vorhandener AWS Ressourcen, ohne sie neu zu erstellen, und ermöglicht so eine Migration ohne Ausfallzeiten von CloudFormation Terraform oder Ressourcen außerhalb des Clusters.

 **Übernehmen Sie eine bestehende Ressource:**

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Nach der Übernahme wird die Ressource von ACK verwaltet und kann über Kubernetes-Manifeste aktualisiert werden. Sie können schrittweise migrieren, Ressourcen nach Bedarf übernehmen und gleichzeitig die vorhandenen IaC-Tools für andere Ressourcen beibehalten.

ACK unterstützt auch schreibgeschützte Ressourcen. Bei Ressourcen, die von anderen Teams oder Tools verwaltet werden und die Sie referenzieren, aber nicht ändern möchten, kombinieren Sie die Übernahme mit der `retain` Löschrichtlinie und gewähren Sie nur IAM-Leseberechtigungen. Auf diese Weise können Anwendungen gemeinsam genutzte Infrastrukturen (VPCs, IAM-Rollen, KMS-Schlüssel) über Kubernetes APIs erkennen, ohne Änderungen riskieren zu müssen.

Weitere Informationen zur Nutzung von Ressourcen finden Sie unter. [ACK-Konzepte](ack-concepts.md)

## Richtlinien zum Löschen
<a name="_deletion_policies"></a>

Löschrichtlinien steuern, was mit AWS Ressourcen passiert, wenn Sie die entsprechende Kubernetes-Ressource löschen. Wählen Sie die richtige Richtlinie basierend auf dem Ressourcenlebenszyklus und Ihren betrieblichen Anforderungen.

### Löschen (Standard)
<a name="_delete_default"></a>

Die AWS Ressource wird gelöscht, wenn Sie die Kubernetes-Ressource löschen. Dadurch wird die Konsistenz zwischen Ihrem Cluster aufrechterhalten und sichergestellt AWS, dass sich keine Ressourcen ansammeln.

 **Wann sollte Delete verwendet** werden:
+ Entwicklungs- und Testumgebungen, in denen Bereinigung wichtig ist
+ Kurzlebige Ressourcen, die an den Anwendungslebenszyklus gebunden sind (Testdatenbanken, temporäre Buckets)
+ Ressourcen, die die Anwendung nicht überdauern sollten (SQS-Warteschlangen, Cluster) ElastiCache 
+ Kostenoptimierung — automatische Bereinigung ungenutzter Ressourcen
+ Umgebungen, die mit verwaltet werden GitOps , in denen das Entfernen von Ressourcen aus Git die Infrastruktur löschen sollte

Die standardmäßige Löschrichtlinie entspricht dem deklarativen Modell von Kubernetes: Was sich im Cluster befindet, entspricht dem, was sich darin befindet. AWS

### Beibehalten
<a name="_retain"></a>

Die AWS Ressource wird beibehalten, wenn Sie die Kubernetes-Ressource löschen. Dies schützt wichtige Daten und ermöglicht es Ressourcen, ihre Kubernetes-Repräsentation zu überleben.

 **Wann sollte Retain verwendet werden**:
+ Produktionsdatenbanken mit kritischen Daten, die Clusteränderungen überstehen müssen
+ Langfristige Speicherbereiche mit Compliance- oder Prüfanforderungen
+ Gemeinsam genutzte Ressourcen, die von mehreren Anwendungen oder Teams genutzt werden
+ Ressourcen werden auf verschiedene Verwaltungstools migriert
+ Notfallwiederherstellungsszenarien, in denen Sie die Infrastruktur erhalten möchten
+ Ressourcen mit komplexen Abhängigkeiten, die eine sorgfältige Außerbetriebnahme erfordern

```
apiVersion: rds.services.k8s.aws/v1alpha1
kind: DBInstance
metadata:
  name: production-db
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  dbInstanceIdentifier: prod-db
  # ... configuration
```

**Wichtig**  
Zurückbehaltene Ressourcen sind weiterhin mit AWS Kosten verbunden und müssen manuell gelöscht werden, AWS wenn sie nicht mehr benötigt werden. Verwenden Sie das Ressourcen-Tagging, um die zurückbehaltenen Ressourcen für die Bereinigung nachzuverfolgen.

Weitere Informationen zu Löschrichtlinien finden Sie unter. [ACK-Konzepte](ack-concepts.md)

## Upstream-Dokumentation
<a name="_upstream_documentation"></a>

Ausführliche Informationen zur Verwendung von ACK finden Sie unter
+  [ACK-Nutzungshandbuch](https://aws-controllers-k8s.github.io/community/docs/user-docs/usage/) — Ressourcen erstellen und verwalten
+  [ACK-API-Referenz](https://aws-controllers-k8s.github.io/community/reference/) — Vollständige API-Dokumentation für alle Dienste
+  [ACK-Dokumentation](https://aws-controllers-k8s.github.io/community/docs/) — Umfassende Benutzerdokumentation

## Nächste Schritte
<a name="_next_steps"></a>
+  [ACK-Berechtigungen konfigurieren](ack-permissions.md)- Konfigurieren Sie IAM-Berechtigungen und Muster für mehrere Konten
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und den Ressourcenlebenszyklus
+  [Probleme mit ACK-Funktionen beheben](ack-troubleshooting.md)- Beheben Sie ACK-Probleme
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Stellen Sie ACK-Ressourcen bereit mit GitOps
+  [Kro-Konzepte](kro-concepts.md)- Stellen Sie ACK-Ressourcen zu Abstraktionen auf höherer Ebene zusammen

# Probleme mit ACK-Funktionen beheben
<a name="ack-troubleshooting"></a>

Dieses Thema enthält Anleitungen zur Fehlerbehebung für die EKS-Funktion für ACK, einschließlich Funktionsprüfungen, Überprüfung des Ressourcenstatus und Probleme mit IAM-Berechtigungen.

**Anmerkung**  
Die EKS-Funktionen werden vollständig verwaltet und außerhalb Ihres Clusters ausgeführt. Sie haben keinen Zugriff auf Controller-Logs oder Controller-Namespaces. Die Fehlerbehebung konzentriert sich auf den Funktionsstatus, den Ressourcenstatus und die IAM-Konfiguration.

## Die Fähigkeit ist AKTIV, aber es werden keine Ressourcen erstellt
<a name="_capability_is_active_but_resources_arent_being_created"></a>

Wenn Ihre ACK-Fähigkeit `ACTIVE` den Status anzeigt, aber keine Ressourcen erstellt werden AWS, überprüfen Sie den Funktionsstatus, den Ressourcenstatus und die IAM-Berechtigungen.

 **Überprüfen Sie den Zustand der Fähigkeit**:

Sie können Funktionszustands- und Statusprobleme in der EKS-Konsole oder über die AWS CLI anzeigen.

 **Konsole**:

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus.

1. Wählen Sie den Registerkarte **Beobachtbarkeit**.

1. Wählen Sie **Cluster überwachen** aus.

1. Wählen Sie die Registerkarte **Funktionen**, um den Zustand und den Status aller Funktionen anzuzeigen.

 ** AWS CLI**:

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack

# Look for issues in the health section
```

 **Häufige Ursachen:**
+  **IAM-Berechtigungen fehlen**: Der Capability-Rolle fehlen die Berechtigungen für den Dienst AWS 
+  **Falscher Namespace**: Ressourcen, die im Namespace ohne den richtigen Selektor erstellt wurden IAMRole
+  **Ungültige Ressourcenspezifikation**: Überprüfen Sie die Bedingungen für den Ressourcenstatus auf Validierungsfehler
+  **API-Drosselung**: AWS API-Ratenlimits wurden erreicht
+  **Zulassungs-Webhooks: Zulassungs-Webhooks**, die den Controller daran hindern, den Ressourcenstatus zu patchen

 **Überprüfen Sie den Ressourcenstatus**:

```
# Describe the resource to see conditions and events
kubectl describe bucket my-bucket -n default

# Look for status conditions
kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}'

# View resource events
kubectl get events --field-selector involvedObject.name=my-bucket -n default
```

 **Überprüfen Sie die IAM-Berechtigungen**:

```
# View the Capability Role's policies
aws iam list-attached-role-policies --role-name my-ack-capability-role
aws iam list-role-policies --role-name my-ack-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name
```

## Ressourcen, die in Kubernetes erstellt wurden AWS , aber nicht in Kubernetes angezeigt werden
<a name="resources_created_in_shared_aws_but_not_showing_in_kubernetes"></a>

ACK verfolgt nur Ressourcen, die es über Kubernetes-Manifeste erstellt. Verwenden Sie die Adoption-Funktion, um vorhandene AWS Ressourcen mit ACK zu verwalten.

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Weitere Informationen zur Nutzung von Ressourcen finden Sie unter[ACK-Konzepte](ack-concepts.md).

## Kontoübergreifende Ressourcen werden nicht erstellt
<a name="_cross_account_resources_not_being_created"></a>

Wenn bei der Verwendung von IAM-Rollenselektoren keine Ressourcen in einem AWS Zielkonto erstellt werden, überprüfen Sie die Vertrauensstellung und IAMRole die Auswahlkonfiguration.

 **Überprüfen Sie die Vertrauensbeziehung**:

```
# Check the trust policy in the target account role
aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'
```

Die Vertrauensrichtlinie muss es der Capability Role des Quellkontos ermöglichen, diese Rolle zu übernehmen.

 **Bestätigen Sie die IAMRole Selector-Konfiguration**:

```
# List IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Describe specific selector
kubectl describe iamroleselector my-selector
```

 **Überprüfen Sie die Namespace-Ausrichtung:**

IAMRoleSelektoren sind Ressourcen im Clusterbereich, die jedoch auf bestimmte Namespaces abzielen. Stellen Sie sicher, dass sich Ihre ACK-Ressourcen in einem Namespace befinden, der dem Namespace-Selektor des Selectors entspricht: IAMRole

```
# Check resource namespace
kubectl get bucket my-cross-account-bucket -n production

# List all IAMRoleSelectors (cluster-scoped)
kubectl get iamroleselector

# Check which namespace the selector targets
kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'
```

 **Ausgewählte Bedingung überprüfen: IAMRole**

Stellen Sie sicher, dass der IAMRole Selector erfolgreich Ihrer Ressource zugeordnet wurde, indem Sie die folgende `ACK.IAMRoleSelected` Bedingung überprüfen:

```
# Check if IAMRoleSelector was matched
kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'
```

Wenn die Bedingung zutrifft `False` oder fehlt, stimmt der IAMRole Namespace-Selektor des Selectors nicht mit dem Namespace der Ressource überein. Stellen Sie sicher, dass die des Selektors mit den `namespaceSelector` Namespace-Labels Ihrer Ressource übereinstimmen.

 **Überprüfen Sie die Berechtigungen für Capability Role**:

Die Anforderungen `sts:AssumeRole` und `sts:TagSession` Berechtigungen der Capability Role für die Rolle des Zielkontos:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["sts:AssumeRole", "sts:TagSession"],
      "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`"
    }
  ]
}
```

Eine ausführliche kontenübergreifende Konfiguration finden Sie unter[ACK-Berechtigungen konfigurieren](ack-permissions.md).

## Nächste Schritte
<a name="_next_steps"></a>
+  [ACK-Überlegungen für EKS](ack-considerations.md)— Überlegungen zu ACK und bewährte Methoden
+  [ACK-Berechtigungen konfigurieren](ack-permissions.md)— Konfigurieren Sie IAM-Berechtigungen und Muster für mehrere Konten
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und den Ressourcenlebenszyklus
+  [Problembehebung bei EKS-Funktionen](capabilities-troubleshooting.md)- Allgemeine Hinweise zur Problembehebung

# Vergleich der EKS-Funktionen für ACK mit selbstverwaltetem ACK
<a name="ack-comparison"></a>

Die EKS-Funktion für ACK bietet dieselbe Funktionalität wie selbstverwaltete ACK-Controller, bietet jedoch erhebliche betriebliche Vorteile. Einen allgemeinen Vergleich zwischen EKS-Funktionen und selbstverwalteten Lösungen finden Sie unter. [Überlegungen zu den EKS-Fähigkeiten](capabilities-considerations.md) Dieses Thema konzentriert sich auf ACK-spezifische Unterschiede.

## Unterschiede zu Upstream-ACK
<a name="_differences_from_upstream_ack"></a>

Die EKS-Funktion für ACK basiert auf vorgelagerten ACK-Controllern, unterscheidet sich jedoch in der IAM-Integration.

 **IAM-Fähigkeitsrolle**: Die Funktion verwendet eine dedizierte IAM-Rolle mit einer Vertrauensrichtlinie, die den `capabilities.eks.amazonaws.com` Dienstprinzipal und nicht IRSA (IAM-Rollen für Dienstkonten) zulässt. Sie können IAM-Richtlinien direkt an die Capability Role anhängen, ohne Kubernetes-Dienstkonten erstellen oder mit Anmerkungen versehen oder OIDC-Anbieter konfigurieren zu müssen. Eine bewährte Methode für Anwendungsfälle in der Produktion ist die Konfiguration von Serviceberechtigungen mithilfe von. `IAMRoleSelector` Weitere Details finden Sie unter [ACK-Berechtigungen konfigurieren](ack-permissions.md).

 **Sitzungs-Tags**: Die verwaltete Funktion legt automatisch Sitzungs-Tags für alle AWS API-Anfragen fest und ermöglicht so eine differenzierte Zugriffskontrolle und Prüfung. Zu den Tags gehören `eks:eks-capability-arn``eks:kubernetes-namespace`, und. `eks:kubernetes-api-group` Dies unterscheidet sich von selbstverwaltetem ACK, bei dem diese Tags nicht standardmäßig festgelegt werden. Einzelheiten [ACK-Berechtigungen konfigurieren](ack-permissions.md) zur Verwendung von Sitzungs-Tags in IAM-Richtlinien finden Sie unter.

 **Ressourcen-Tags**: Diese Funktion wendet andere Standardtags auf AWS Ressourcen an als selbstverwaltetes ACK. Die Funktion verwendet Tags mit `eks:` Präfixen (z. B.`eks:kubernetes-namespace`,`eks:eks-capability-arn`) anstelle der Tags, die von selbstverwaltetem `services.k8s.aws/` ACK verwendet werden. Die [ACK-Überlegungen für EKS](ack-considerations.md) vollständige Liste der Standard-Ressourcen-Tags finden Sie unter.

 **Ressourcenkompatibilität**: Benutzerdefinierte ACK-Ressourcen funktionieren genauso wie Upstream-ACK, ohne dass Ihre ACK-Ressourcen-YAML-Dateien geändert werden. Die Funktion verwendet dasselbe Kubernetes APIs und CRDs daher `kubectl` funktionieren Tools wie auf die gleiche Weise. Alle GA-Controller und Ressourcen aus dem Upstream-ACK werden unterstützt.

Die vollständige ACK-Dokumentation und dienstspezifische Anleitungen finden Sie in der [ACK-Dokumentation](https://aws-controllers-k8s.github.io/community/).

## Migrationspfad
<a name="_migration_path"></a>

Sie können ohne Ausfallzeiten vom selbstverwalteten ACK zur verwalteten Funktion migrieren:

1. Aktualisieren Sie Ihren selbstverwalteten ACK-Controller so, dass er ihn `kube-system` für Leasingverträge zur Wahl von Führungskräften verwenden kann, zum Beispiel:

   ```
   helm upgrade --install ack-s3-controller \
     oci://public.ecr.aws/aws-controllers-k8s/s3-chart \
     --namespace ack-system \
     --set leaderElection.namespace=kube-system
   ```

   Dadurch wird der Leasingvertrag des Controllers auf diesen `kube-system` übertragen, sodass sich die verwaltete Kapazität darauf abstimmen kann.

1. Erstellen Sie die ACK-Fähigkeit auf Ihrem Cluster (siehe[Erstellen Sie eine ACK-Fähigkeit](create-ack-capability.md))

1. Die verwaltete Funktion erkennt vorhandene, von ACK verwaltete AWS Ressourcen und übernimmt den Abgleich

1. Skalieren Sie selbstverwaltete Controller-Bereitstellungen schrittweise oder entfernen Sie sie:

   ```
   helm uninstall ack-s3-controller --namespace ack-system
   ```

Dieser Ansatz ermöglicht eine sichere Koexistenz beider Controller während der Migration. Die verwaltete Funktion übernimmt automatisch Ressourcen, die zuvor von selbstverwalteten Controllern verwaltet wurden, und gewährleistet so einen kontinuierlichen Abgleich ohne Konflikte.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Erstellen Sie eine ACK-Fähigkeit](create-ack-capability.md)- Erstellen Sie eine ACK-Fähigkeitsressource
+  [ACK-Konzepte](ack-concepts.md)- Verstehen Sie die ACK-Konzepte und den Ressourcenlebenszyklus
+  [ACK-Berechtigungen konfigurieren](ack-permissions.md)- Konfigurieren Sie IAM und Berechtigungen

# Kontinuierlicher Einsatz mit Argo CD
<a name="argocd"></a>

Argo CD ist ein deklaratives Tool zur GitOps kontinuierlichen Bereitstellung für Kubernetes. Mit Argo CD können Sie die Bereitstellung und das Lebenszyklusmanagement Ihrer Anwendungen in mehreren Clustern und Umgebungen automatisieren. Argo CD unterstützt mehrere Quelltypen, darunter Git-Repositorys, Helm-Registries (HTTP und OCI) und OCI-Images, was Unternehmen mit unterschiedlichen Sicherheits- und Compliance-Anforderungen Flexibilität bietet.

Dank der EKS-Funktionen wird Argo CD vollständig verwaltet AWS, sodass Sie keine Argo-CD-Controller und deren Abhängigkeiten von Ihren Clustern installieren, warten und skalieren müssen.

## Wie funktioniert Argo CD
<a name="_how_argo_cd_works"></a>

Argo CD folgt dem GitOps Muster, bei dem Ihre Anwendungsquelle (Git-Repository, Helm-Registry oder OCI-Image) die Quelle der Wahrheit für die Definition des gewünschten Anwendungsstatus ist. Wenn Sie eine `Application` Argo-CD-Ressource erstellen, geben Sie die Quelle an, die Ihre Anwendungsmanifeste enthält, sowie den Kubernetes-Zielcluster und -Namespace. Argo CD überwacht kontinuierlich sowohl den Quell- als auch den Live-Status im Cluster und synchronisiert automatisch alle Änderungen, um sicherzustellen, dass der Clusterstatus dem gewünschten Status entspricht.

**Anmerkung**  
Mit der EKS-Funktion für Argo CD läuft die Argo-CD-Software auf der AWS Steuerungsebene, nicht auf Ihren Worker-Knoten. Das bedeutet, dass deine Worker-Knoten keinen direkten Zugriff auf Git-Repositorys oder Helm-Registries benötigen — die Funktion wickelt den Quellzugriff vom Konto aus ab. AWS 

Argo CD bietet drei primäre Ressourcentypen:
+  **Anwendung**: Definiert eine Bereitstellung von einem Git-Repository in einem Zielcluster
+  **ApplicationSet**: Generiert mehrere Anwendungen aus Vorlagen für Bereitstellungen mit mehreren Clustern
+  **AppProject**: Bietet logische Gruppierung und Zugriffskontrolle für Anwendungen

 **Beispiel: Eine Argo-CD-Anwendung erstellen** 

Das folgende Beispiel zeigt, wie eine `Application` Argo-CD-Ressource erstellt wird:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
```

**Anmerkung**  
Verwenden Sie es `destination.name` zusammen mit dem Clusternamen, den Sie bei der Registrierung des Clusters verwendet haben (wie `in-cluster` für den lokalen Cluster). Das `destination.server` Feld funktioniert auch mit EKS-Clustern ARNs, aus Gründen der besseren Lesbarkeit wird jedoch die Verwendung von Clusternamen empfohlen.

## Vorteile von Argo CD
<a name="_benefits_of_argo_cd"></a>

Argo CD implementiert einen GitOps Workflow, bei dem Sie Ihre Anwendungskonfigurationen in Git-Repositorys definieren und Argo CD Ihre Anwendungen automatisch synchronisiert, damit sie dem gewünschten Status entsprechen. Dieser GIT-zentrierte Ansatz bietet einen vollständigen Prüfpfad aller Änderungen, ermöglicht einfache Rollbacks und lässt sich auf natürliche Weise in Ihre bestehenden Codeüberprüfungs- und Genehmigungsprozesse integrieren. Argo CD erkennt automatisch Abweichungen zwischen dem gewünschten Status in Git und dem tatsächlichen Status in Ihren Clustern und gleicht sie ab, um sicherzustellen, dass Ihre Bereitstellungen mit Ihrer deklarierten Konfiguration konsistent bleiben.

Mit Argo CD können Sie Anwendungen in mehreren Clustern von einer einzigen Argo-CD-Instanz aus bereitstellen und verwalten, was den Betrieb in Umgebungen mit mehreren Clustern und mehreren Regionen vereinfacht. Die Benutzeroberfläche von Argo CD bietet Visualisierungs- und Überwachungsfunktionen, mit denen Sie den Bereitstellungsstatus, den Zustand und den Verlauf Ihrer Anwendungen einsehen können. Die Benutzeroberfläche ist in AWS Identity Center (ehemals AWS SSO) integriert und ermöglicht so eine nahtlose Authentifizierung und Autorisierung, sodass Sie den Zugriff mithilfe Ihrer vorhandenen Identitätsmanagement-Infrastruktur kontrollieren können.

Als Teil von EKS Managed Capabilities wird Argo CD vollständig von verwaltet AWS, sodass die Installation, Konfiguration und Wartung der Argo-CD-Infrastruktur entfällt. AWS kümmert sich um Skalierung, Patching und Betriebsmanagement, sodass sich Ihre Teams auf die Anwendungsbereitstellung statt auf die Wartung der Tools konzentrieren können.

## Integration mit AWS Identity Center
<a name="integration_with_shared_aws_identity_center"></a>

EKS Managed Capabilities bietet eine direkte Integration zwischen Argo CD und AWS Identity Center und ermöglicht so eine nahtlose Authentifizierung und Autorisierung für Ihre Benutzer. Wenn Sie die Argo CD-Funktion aktivieren, können Sie die AWS Identity Center-Integration so konfigurieren, dass Identity Center-Gruppen und -Benutzer den Argo CD RBAC-Rollen zugeordnet werden, sodass Sie kontrollieren können, wer auf Anwendungen in Argo CD zugreifen und diese verwalten kann.

## Integration mit anderen von EKS verwalteten Funktionen
<a name="_integration_with_other_eks_managed_capabilities"></a>

Argo CD lässt sich in andere von EKS verwaltete Funktionen integrieren.
+  ** AWS Controller für Kubernetes (ACK)**: Verwenden Sie Argo CD, um die Bereitstellung von ACK-Ressourcen in mehreren Clustern zu verwalten und GitOps Workflows für Ihre Infrastruktur zu ermöglichen. AWS 
+  **kro (Kube Resource Orchestrator)**: Verwenden Sie Argo CD, um Kro-Kompositionen in mehreren Clustern bereitzustellen und so eine konsistente Ressourcenzusammensetzung in Ihrem gesamten Kubernetes-Bestand zu ermöglichen.

## Erste Schritte mit Argo CD
<a name="_getting_started_with_argo_cd"></a>

Um mit der EKS-Funktion für Argo CD zu beginnen:

1. Erstellen und konfigurieren Sie eine IAM-Capability-Rolle mit den erforderlichen Berechtigungen, damit Argo CD auf Ihre Quellen zugreifen und Anwendungen verwalten kann.

1.  [Erstellen Sie eine Argo-CD-Capability-Ressource](create-argocd-capability.md) auf Ihrem EKS-Cluster über die AWS Konsole, AWS CLI oder Ihr bevorzugtes Infrastructure-as-Code-Tool.

1. Konfigurieren Sie den Repository-Zugriff und registrieren Sie Cluster für die Anwendungsbereitstellung.

1. Erstellen Sie Anwendungsressourcen, um Ihre Anwendungen aus Ihren deklarativen Quellen bereitzustellen.

# Erstellen einer Argo CD-Funktion
<a name="create-argocd-capability"></a>

In diesem Thema wird erklärt, wie Sie eine Argo-CD-Funktion auf Ihrem Amazon EKS-Cluster erstellen.

## Voraussetzungen
<a name="_prerequisites"></a>

Bevor Sie eine Argo-CD-Funktion erstellen, stellen Sie sicher, dass Sie über Folgendes verfügen:
+ Ein vorhandener Amazon EKS-Cluster, auf dem eine unterstützte Kubernetes-Version ausgeführt wird (alle Versionen mit Standard- und erweitertem Support werden unterstützt)
+  ** AWS Identity Center konfiguriert** — Für die Argo-CD-Authentifizierung erforderlich (lokale Benutzer werden nicht unterstützt)
+ Eine IAM-Fähigkeitsrolle mit Berechtigungen für Argo CD
+ Ausreichende IAM-Berechtigungen zum Erstellen von Funktionsressourcen auf EKS-Clustern
+  `kubectl`für die Kommunikation mit Ihrem Cluster konfiguriert
+ (Optional) Die Argo-CD-CLI wurde für eine einfachere Cluster- und Repositoryverwaltung installiert
+ (Für CLI/eksCTL) Das entsprechende CLI-Tool wurde installiert und konfiguriert

Anweisungen zum Erstellen der IAM-Capability-Rolle finden Sie unter. [IAM-Rolle für Amazon EKS-Funktionen](capability-role.md) Informationen zur Einrichtung von Identity Center finden Sie unter [Erste Schritte mit AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html).

**Wichtig**  
Die von Ihnen angegebene IAM-Fähigkeitsrolle bestimmt, auf welche AWS Ressourcen Argo CD zugreifen kann. Dazu gehören der Zugriff auf das Git-Repository über CodeConnections und Secrets in Secrets Manager. Anleitungen zur Erstellung einer geeigneten Rolle mit den geringsten Rechten finden Sie unter und. [IAM-Rolle für Amazon EKS-Funktionen](capability-role.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Wählen Sie Ihr Tool
<a name="_choose_your_tool"></a>

Sie können eine Argo-CD-Funktion mit der AWS-Managementkonsole AWS CLI oder eksctl erstellen:
+  [Erstellen Sie mit der Konsole eine Argo-CD-Funktion](argocd-create-console.md)- Verwenden Sie die Konsole für ein geführtes Erlebnis
+  [Erstellen Sie eine Argo-CD-Funktion mit der CLI AWS](argocd-create-cli.md)- Verwenden Sie die AWS CLI für Scripting und Automatisierung
+  [Erstellen Sie eine Argo-CD-Funktion mit eksctl](argocd-create-eksctl.md)- Verwenden Sie eksctl für ein Kubernetes-natives Erlebnis

## Was passiert, wenn Sie eine Argo-CD-Funktion erstellen
<a name="_what_happens_when_you_create_an_argo_cd_capability"></a>

Wenn Sie eine Argo-CD-Funktion erstellen:

1. EKS erstellt den Argo-CD-Capability Service auf der Steuerungsebene AWS 

1. Benutzerdefinierte Ressourcendefinitionen (CRDs) sind in Ihrem Cluster installiert

1. Für Ihre IAM-Capability Role wird automatisch ein Zugriffseintrag mit funktionsspezifischen Zugangsrichtlinien erstellt, die grundlegende Kubernetes-Berechtigungen gewähren (siehe) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

1. Argo CD beginnt, nach seinen benutzerdefinierten Ressourcen (Anwendungen,,) Ausschau zu halten ApplicationSets AppProjects

1. Der Funktionsstatus ändert sich von zu `CREATING` `ACTIVE` 

1. Auf die Benutzeroberfläche von Argo CD kann über ihre URL zugegriffen werden

Sobald sie aktiv sind, können Sie Argo-CD-Anwendungen in Ihrem Cluster erstellen, um sie aus Ihren deklarativen Quellen bereitzustellen.

**Anmerkung**  
Der automatisch erstellte Zugriffseintrag gewährt keine Berechtigungen zur Bereitstellung von Anwendungen in Clustern. Um Anwendungen bereitzustellen, müssen Sie zusätzliche Kubernetes-RBAC-Berechtigungen für jeden Zielcluster konfigurieren. Einzelheiten [Zielcluster registrieren](argocd-register-clusters.md) zur Registrierung von Clustern und zur Konfiguration des Zugriffs finden Sie unter.

## Nächste Schritte
<a name="_next_steps"></a>

Nach der Erstellung der Argo-CD-Funktion:
+  [Argo CD-Konzepte](argocd-concepts.md)- Erfahren Sie mehr über GitOps Prinzipien, Synchronisierungsrichtlinien und Multi-Cluster-Muster
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Konfigurieren Sie den Repository-Zugriff, registrieren Sie Zielcluster und erstellen Sie Anwendungen
+  [Überlegungen zu Argo CD](argocd-considerations.md)- Erkunden Sie Architekturmuster und erweiterte Konfigurationen mit mehreren Clustern

# Erstellen Sie mit der Konsole eine Argo-CD-Funktion
<a name="argocd-create-console"></a>

In diesem Thema wird beschrieben, wie Sie mit dem eine Argo-CD-Funktion erstellen. AWS-Managementkonsole

## Voraussetzungen
<a name="_prerequisites"></a>
+  ** AWS Identity Center konfiguriert** — Argo CD benötigt AWS Identity Center für die Authentifizierung. Lokale Benutzer werden nicht unterstützt. Wenn Sie AWS Identity Center nicht eingerichtet haben, finden Sie weitere Informationen unter [Erste Schritte mit AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), um eine Identity Center-Instanz zu erstellen, und [Benutzer hinzufügen](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) und [Gruppen hinzufügen](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html), um Benutzer und Gruppen für den Zugriff auf Argo CD zu erstellen.

## Erstellen Sie die Argo-CD-Funktion
<a name="_create_the_argo_cd_capability"></a>

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus, um die Cluster-Detailseite zu öffnen.

1. Wählen Sie die Registerkarte **Funktionen**.

1. Wählen Sie in der linken Navigationsleiste **Argo CD**.

1. Wählen Sie die Funktion „**Argo-CD erstellen**“.

1. Für die **IAM-Fähigkeitsrolle**:
   + Wenn Sie bereits über eine IAM-Fähigkeitsrolle verfügen, wählen Sie sie aus der Dropdownliste aus
   + Wenn Sie eine Rolle erstellen müssen, wählen Sie **Create Argo CD** role 

     Dadurch wird die IAM-Konsole auf einer neuen Registerkarte mit vorab ausgefüllten Vertrauensrichtlinien und uneingeschränktem Lesezugriff auf Secrets Manager geöffnet. Standardmäßig werden keine weiteren Berechtigungen hinzugefügt, aber Sie können sie bei Bedarf hinzufügen. Wenn Sie CodeCommit Repositorys oder andere AWS Dienste verwenden möchten, fügen Sie die entsprechenden Berechtigungen hinzu, bevor Sie die Rolle erstellen.

     Kehren Sie nach dem Erstellen der Rolle zur EKS-Konsole zurück. Die Rolle wird automatisch ausgewählt.
**Anmerkung**  
Wenn Sie die optionalen Integrationen mit AWS Secrets Manager oder verwenden möchten AWS CodeConnections, müssen Sie der Rolle Berechtigungen hinzufügen. Beispiele für IAM-Richtlinien und Anleitungen zur Konfiguration finden Sie unter [Anwendungsgeheimnisse mit AWS Secrets Manager verwalten](integration-secrets-manager.md) und. [Connect zu Git-Repositorys her mit AWS CodeConnections](integration-codeconnections.md)

1. Konfigurieren Sie die AWS Identity Center-Integration:

   1. Wählen Sie ** AWS Identity Center-Integration aktivieren** aus.

   1. Wählen Sie Ihre Identity Center-Instanz aus der Dropdownliste aus.

   1. Konfigurieren Sie Rollenzuordnungen für RBAC, indem Sie Benutzer oder Gruppen den Argo-CD-Rollen (ADMIN, EDITOR oder VIEWER) zuweisen

1. Wählen Sie **Erstellen** aus.

Der Prozess zur Erstellung von Fähigkeiten beginnt.

## Stellen Sie sicher, dass die Fähigkeit aktiv ist
<a name="_verify_the_capability_is_active"></a>

1. Sehen Sie sich auf der Registerkarte **Funktionen** den Argo-CD-Funktionsstatus an.

1. Warten Sie, bis sich der Status von `CREATING` zu `ACTIVE` ändert.

1. Sobald die Funktion aktiv ist, ist sie einsatzbereit.

Informationen zum Status der Funktionen und zur Problembehandlung finden Sie unter[Mit Capability-Ressourcen arbeiten](working-with-capabilities.md).

## Greifen Sie auf die Benutzeroberfläche von Argo CD zu
<a name="_access_the_argo_cd_ui"></a>

Nachdem die Funktion aktiv ist, können Sie auf die Benutzeroberfläche von Argo CD zugreifen:

1. Wählen Sie auf der Argo-CD-Funktionsseite die Option **Open Argo** CD UI.

1. Die Benutzeroberfläche von Argo CD wird in einem neuen Browser-Tab geöffnet.

1. Sie können jetzt über die Benutzeroberfläche Anwendungen erstellen und Bereitstellungen verwalten.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Konfigurieren Sie Repositorys, registrieren Sie Cluster und erstellen Sie Anwendungen
+  [Überlegungen zu Argo CD](argocd-considerations.md)- Multi-Cluster-Architektur und erweiterte Konfiguration
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalten Sie Ihre Argo-CD-Funktionsressource

# Erstellen Sie eine Argo-CD-Funktion mit der CLI AWS
<a name="argocd-create-cli"></a>

In diesem Thema wird beschrieben, wie Sie mit der AWS CLI eine Argo-CD-Funktion erstellen.

## Voraussetzungen
<a name="_prerequisites"></a>
+  ** AWS CLI** — Version `2.12.3` oder höher. Führen Sie den Befehl aus, um Ihre Version zu überprüfen`aws --version`. Weitere Informationen finden Sie im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle unter [Installation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html).
+  ** `kubectl` ** – Ein Befehlszeilentool für die Arbeit mit Kubernetes-Clustern. Weitere Informationen finden Sie unter [`kubectl` und `eksctl` einrichten](install-kubectl.md).
+  ** AWS Identity Center konfiguriert** — Argo CD benötigt AWS Identity Center für die Authentifizierung. Lokale Benutzer werden nicht unterstützt. Wenn Sie AWS Identity Center nicht eingerichtet haben, finden Sie weitere Informationen unter [Erste Schritte mit AWS Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), um eine Identity Center-Instanz zu erstellen, und [Benutzer hinzufügen](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) und [Gruppen hinzufügen](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html), um Benutzer und Gruppen für den Zugriff auf Argo CD zu erstellen.

## Schritt 1: Erstellen Sie eine IAM-Fähigkeitsrolle
<a name="_step_1_create_an_iam_capability_role"></a>

Erstellen Sie eine Vertrauensrichtliniendatei:

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Erstellen Sie die IAM-Rolle:

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**Anmerkung**  
Wenn Sie die optionalen Integrationen mit AWS Secrets Manager oder verwenden möchten AWS CodeConnections, müssen Sie der Rolle Berechtigungen hinzufügen. Beispiele für IAM-Richtlinien und Anleitungen zur Konfiguration finden Sie unter [Anwendungsgeheimnisse mit AWS Secrets Manager verwalten](integration-secrets-manager.md) und. [Connect zu Git-Repositorys her mit AWS CodeConnections](integration-codeconnections.md)

## Schritt 2: Erstellen Sie die Argo-CD-Funktion
<a name="_step_2_create_the_argo_cd_capability"></a>

Erstellen Sie die Argo-CD-Capability-Ressource auf Ihrem Cluster.

Legen Sie zunächst Umgebungsvariablen für Ihre Identity Center-Konfiguration fest:

```
# Get your Identity Center instance ARN (replace region if your IDC instance is in a different region)
export IDC_INSTANCE_ARN=$(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].InstanceArn' --output text)

# Get a user ID for RBAC mapping (replace with your username and region if needed)
export IDC_USER_ID=$(aws identitystore list-users \
  --region [.replaceable]`region` \
  --identity-store-id $(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text)

echo "IDC_INSTANCE_ARN=$IDC_INSTANCE_ARN"
echo "IDC_USER_ID=$IDC_USER_ID"
```

Erstellen Sie die Funktion mit der Identity Center-Integration. *region-code*Ersetzen Sie durch die AWS Region, in der sich Ihr Cluster befindet, sowie *my-cluster* durch Ihren Clusternamen und *idc-region-code* durch den Regionalcode, für den Ihr IAM Identity Center konfiguriert wurde:

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ArgoCDCapabilityRole \
  --delete-propagation-policy RETAIN \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'[.replaceable]`idc-region-code`'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

Der Befehl kehrt sofort zurück, aber es dauert einige Zeit, bis die Funktion aktiv wird, da EKS die erforderliche Funktionsinfrastruktur und die erforderlichen Komponenten erstellt. EKS installiert die benutzerdefinierten Kubernetes-Ressourcendefinitionen, die sich auf diese Funktion beziehen, in Ihrem Cluster, während dieser erstellt wird.

**Anmerkung**  
Wenn Sie eine Fehlermeldung erhalten, dass der Cluster nicht existiert oder Sie keine Berechtigungen haben, überprüfen Sie Folgendes:  
Der Clustername ist korrekt
Ihre AWS CLI ist für die richtige Region konfiguriert
Sie verfügen über die erforderlichen IAM-Berechtigungen

## Schritt 3: Stellen Sie sicher, dass die Funktion aktiv ist
<a name="_step_3_verify_the_capability_is_active"></a>

Warten Sie, bis die Funktion aktiv wird. *region-code*Ersetzen Sie durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* durch Ihren Clusternamen.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.status' \
  --output text
```

Die Funktion ist bereit, wenn der Status angezeigt wird`ACTIVE`. Fahren Sie erst mit dem nächsten Schritt fort, wenn der Status lautet`ACTIVE`.

Sie können sich auch die vollständigen Funktionsdetails ansehen:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd
```

## Schritt 4: Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_step_4_verify_custom_resources_are_available"></a>

Nachdem die Funktion aktiviert ist, stellen Sie sicher, dass benutzerdefinierte Argo CD-Ressourcen in Ihrem Cluster verfügbar sind:

```
kubectl api-resources | grep argoproj.io
```

Sie sollten die Liste der `ApplicationSet` Ressourcentypen sehen`Application`.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Konfigurieren Sie Repositorys, registrieren Sie Cluster und erstellen Sie Anwendungen
+  [Überlegungen zu Argo CD](argocd-considerations.md)- Multi-Cluster-Architektur und erweiterte Konfiguration
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalten Sie Ihre Argo-CD-Funktionsressource

# Erstellen Sie eine Argo-CD-Funktion mit eksctl
<a name="argocd-create-eksctl"></a>

In diesem Thema wird beschrieben, wie Sie mit eksctl eine Argo-CD-Funktion erstellen.

**Anmerkung**  
Für die folgenden Schritte ist die Version eksctl oder höher erforderlich. `0.220.0` Führen Sie den Befehl aus, um Ihre Version zu überprüfen. `eksctl version`

## Schritt 1: Erstellen Sie eine IAM-Capability-Rolle
<a name="_step_1_create_an_iam_capability_role"></a>

Erstellen Sie eine Vertrauensrichtliniendatei:

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Erstellen Sie die IAM-Rolle:

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**Anmerkung**  
Für diese grundlegende Einrichtung sind keine zusätzlichen IAM-Richtlinien erforderlich. Wenn Sie Secrets Manager für Repository-Anmeldeinformationen oder verwenden möchten CodeConnections, müssen Sie der Rolle Berechtigungen hinzufügen. Beispiele für IAM-Richtlinien und Anleitungen zur Konfiguration finden Sie unter [Anwendungsgeheimnisse mit AWS Secrets Manager verwalten](integration-secrets-manager.md) und[Connect zu Git-Repositorys her mit AWS CodeConnections](integration-codeconnections.md).

## Schritt 2: Holen Sie sich Ihre AWS Identity Center-Konfiguration
<a name="step_2_get_your_shared_aws_identity_center_configuration"></a>

Rufen Sie den ARN und die Benutzer-ID Ihrer Identity Center-Instanz für die RBAC-Konfiguration ab:

```
# Get your Identity Center instance ARN
aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text

# Get a user ID for admin access (replace 'your-username' with your Identity Center username)
aws identitystore list-users \
  --identity-store-id $(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text
```

Notieren Sie sich diese Werte — Sie benötigen sie im nächsten Schritt.

## Schritt 3: Erstellen Sie eine eksctl-Konfigurationsdatei
<a name="_step_3_create_an_eksctl_configuration_file"></a>

Erstellen Sie eine Datei mit dem Namen `argocd-capability.yaml` und dem folgenden Inhalt. Ersetzen Sie die Platzhalterwerte durch den Namen Ihres Clusters, die Cluster-Region, den IAM-Rollen-ARN, den Identity Center-Instanz-ARN, die Identity Center-Region und die Benutzer-ID:

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: my-cluster
  region: cluster-region-code

capabilities:
  - name: my-argocd
    type: ARGOCD
    roleArn: arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole
    deletePropagationPolicy: RETAIN
    configuration:
      argocd:
        awsIdc:
          idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
          idcRegion: idc-region-code
        rbacRoleMappings:
          - role: ADMIN
            identities:
              - id: 38414300-1041-708a-01af-5422d6091e34
                type: SSO_USER
```

**Anmerkung**  
Sie können den RBAC-Zuordnungen mehrere Benutzer oder Gruppen hinzufügen. Verwenden Sie für Gruppen die Gruppen-ID `type: SSO_GROUP` und geben Sie sie an. Verfügbare Rollen sind `ADMIN``EDITOR`, und`VIEWER`.

## Schritt 4: Erstellen Sie die Argo-CD-Funktion
<a name="_step_4_create_the_argo_cd_capability"></a>

Wenden Sie die Konfigurationsdatei an:

```
eksctl create capability -f argocd-capability.yaml
```

Der Befehl kehrt sofort zurück, aber es dauert einige Zeit, bis die Funktion aktiv wird.

## Schritt 5: Stellen Sie sicher, dass die Funktion aktiv ist
<a name="_step_5_verify_the_capability_is_active"></a>

Überprüfen Sie den Status der Fähigkeit. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-argocd
```

Die Funktion ist bereit, wenn der Status angezeigt wird`ACTIVE`.

## Schritt 6: Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_step_6_verify_custom_resources_are_available"></a>

Nachdem die Funktion aktiviert ist, stellen Sie sicher, dass benutzerdefinierte Argo CD-Ressourcen in Ihrem Cluster verfügbar sind:

```
kubectl api-resources | grep argoproj.io
```

Sie sollten die Liste der `ApplicationSet` Ressourcentypen sehen`Application`.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Erfahren Sie, wie Sie Argo-CD-Anwendungen erstellen und verwalten
+  [Überlegungen zu Argo CD](argocd-considerations.md)- Konfigurieren Sie SSO und Multi-Cluster-Zugriff
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalten Sie Ihre Argo-CD-Funktionsressource

# Argo CD-Konzepte
<a name="argocd-concepts"></a>

Argo CD implementiert, GitOps indem es Git als zentrale Informationsquelle für Ihre Anwendungsbereitstellungen behandelt. In diesem Thema wird ein praktisches Beispiel vorgestellt und anschließend die Kernkonzepte erläutert, die Sie bei der Arbeit mit der EKS-Funktion für Argo CD verstehen müssen.

## Erste Schritte mit Argo CD
<a name="_getting_started_with_argo_cd"></a>

Nachdem Sie die Argo-CD-Funktion erstellt haben (siehe[Erstellen einer Argo CD-Funktion](create-argocd-capability.md)), können Sie mit der Bereitstellung von Anwendungen beginnen. In diesem Beispiel werden die Registrierung eines Clusters und die Erstellung einer Anwendung beschrieben.

### Schritt 1: Einrichten von
<a name="_step_1_set_up"></a>

 **Registrieren Sie Ihren Cluster** (erforderlich)

Registrieren Sie den Cluster, in dem Sie Anwendungen bereitstellen möchten. In diesem Beispiel registrieren wir denselben Cluster, auf dem Argo CD läuft (Sie können den Namen aus `in-cluster` Kompatibilitätsgründen mit den meisten Argo-CD-Beispielen verwenden):

```
# Get your cluster ARN
CLUSTER_ARN=$(aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.arn' \
  --output text)

# Register the cluster using Argo CD CLI
argocd cluster add $CLUSTER_ARN \
  --aws-cluster-name $CLUSTER_ARN \
  --name in-cluster \
  --project default
```

**Anmerkung**  
Informationen zur Konfiguration der Argo-CD-CLI für die Verwendung mit der Argo-CD-Funktion in EKS finden Sie unter. [Verwenden der Argo-CD-CLI mit der verwalteten Funktion](argocd-comparison.md#argocd-cli-configuration)

Alternativ können Sie den Cluster mit einem Kubernetes Secret registrieren (Einzelheiten finden Sie unter[Zielcluster registrieren](argocd-register-clusters.md)).

 **Konfigurieren Sie den Repository-Zugriff** (optional)

In diesem Beispiel wird ein öffentliches GitHub Repository verwendet, sodass keine Repository-Konfiguration erforderlich ist. Für private Repositorys konfigurieren Sie den Zugriff mit AWS Secrets Manager oder Kubernetes Secrets (weitere Informationen finden Sie unter[Repository-Zugriff konfigurieren](argocd-configure-repositories.md)). CodeConnections

 AWS Dienste (ECR für Helm-Diagramme und CodeCommit) können Sie direkt in den Anwendungsressourcen referenzieren, ohne ein Repository zu erstellen. CodeConnections Die Capability-Rolle muss über die erforderlichen IAM-Berechtigungen verfügen. Details dazu finden Sie unter [Repository-Zugriff konfigurieren](argocd-configure-repositories.md).

### Schritt 2: Eine Anwendung erstellen
<a name="_step_2_create_an_application"></a>

Erstellen Sie dieses Anwendungsmanifest in`my-app.yaml`:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
```

Wenden Sie die Anwendung an:

```
kubectl apply -f my-app.yaml
```

Nach dem Anwenden dieser Anwendung, Argo CD: 1. Synchronisiert die Anwendung von Git mit Ihrem Cluster (erste Bereitstellung) 2. Überwacht das Git-Repository auf Änderungen 3. Synchronisiert nachfolgende Änderungen automatisch mit Ihrem Cluster 4. Erkennt und korrigiert jede Abweichung vom gewünschten Zustand 5. Zeigt den Gesundheitsstatus und den Synchronisierungsverlauf auf der Benutzeroberfläche an

Den Status der Anwendung anzeigen:

```
kubectl get application guestbook -n argocd
```

Sie können die Anwendung auch über die Argo-CD-CLI oder die Argo-CD-Benutzeroberfläche anzeigen (zugänglich über die EKS-Konsole auf der Registerkarte Capabilities Ihres Clusters).

**Anmerkung**  
Wenn Sie die Argo CD-CLI mit der verwalteten Funktion verwenden, geben Sie Anwendungen mit dem Namespace-Präfix an:. `argocd app get argocd/guestbook`

**Anmerkung**  
Verwenden Sie den Clusternamen in `destination.name` (den Namen, den Sie bei der Registrierung des Clusters verwendet haben). Die verwaltete Funktion unterstützt nicht die lokale Standardeinstellung im Cluster (`kubernetes.default.svc`).

## Schlüsselkonzepte
<a name="_core_concepts"></a>

### GitOps Prinzipien und Quelltypen
<a name="_gitops_principles_and_source_types"></a>

Argo CD implementiert GitOps, wobei Ihre Anwendungsquelle die zentrale Informationsquelle für Implementierungen ist:
+  **Deklarativ** — Der gewünschte Status wird mithilfe von YAML-Manifesten, Helm-Diagrammen oder Kustomize-Overlays deklariert
+  **Versioniert** — Jede Änderung wird anhand eines vollständigen Prüfprotokolls nachverfolgt
+  **Automatisiert** — Argo CD überwacht kontinuierlich die Quellen und synchronisiert Änderungen automatisch
+  **Selbstheilung** — Erkennt und korrigiert Abweichungen zwischen dem gewünschten und dem tatsächlichen Clusterstatus

 **Unterstützte Quelltypen:**
+  **Git-Repositorien** - GitHub, GitLab, Bitbucket, CodeCommit (HTTPS, SSH oder) CodeConnections
+  **Helm-Register** — HTTP-Register (wie`https://aws.github.io/eks-charts`) und OCI-Register (wie) `public.ecr.aws`
+  **OCI-Images — Container-Images**, die Manifeste oder Helm-Charts (ähnlich) enthalten `oci://registry-1.docker.io/user/my-app`

Diese Flexibilität ermöglicht es Unternehmen, Quellen auszuwählen, die ihren Sicherheits- und Compliance-Anforderungen entsprechen. Beispielsweise können Organisationen, die den Git-Zugriff von Clustern aus einschränken, ECR für Helm-Diagramme oder OCI-Images verwenden.

Weitere Informationen finden Sie in der Argo-CD-Dokumentation unter [Anwendungsquellen](https://argo-cd.readthedocs.io/en/stable/user-guide/application-sources/).

### Synchronisieren und Abgleichen
<a name="_sync_and_reconciliation"></a>

Argo CD überwacht kontinuierlich Ihre Quellen und Cluster, um Unterschiede zu erkennen und zu korrigieren:

1. Fragt Quellen nach Änderungen ab (Standard: alle 6 Minuten)

1. Vergleicht den gewünschten Status mit dem Clusterstatus

1. Markiert Anwendungen als `Synced` oder `OutOfSync` 

1. Synchronisiert Änderungen automatisch (falls konfiguriert) oder wartet auf die manuelle Genehmigung

1. Überwacht den Zustand der Ressourcen nach der Synchronisierung

 **Synchronisierungswellen** steuern die Reihenfolge der Ressourcenerstellung mithilfe von Anmerkungen:

```
metadata:
  annotations:
    argocd.argoproj.io/sync-wave: "0"  # Default if not specified
```

Ressourcen werden in der Reihenfolge der Wellen angewendet (niedrigere Zahlen zuerst, einschließlich negativer Zahlen wie`-1`). Wave `0` ist die Standardeinstellung, sofern sie nicht angegeben ist. Auf diese Weise können Sie Abhängigkeiten wie Namespaces (Wave`-1`) vor Bereitstellungen (Wave) vor Diensten (Wave`0`) erstellen. `1`

 Durch die **Selbstheilung** werden manuelle Änderungen automatisch rückgängig gemacht:

```
spec:
  syncPolicy:
    automated:
      selfHeal: true
```

**Anmerkung**  
Die verwaltete Funktion verwendet eine auf Anmerkungen basierende Ressourcenverfolgung (nicht labelbasiert), um die Kompatibilität mit Kubernetes-Konventionen und anderen Tools zu verbessern.

[Ausführliche Informationen zu Synchronisierungsphasen, Hooks und erweiterten Mustern finden Sie in der Argo CD-Synchronisierungsdokumentation.](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/)

### Integrität der Anwendung
<a name="_application_health"></a>

Argo CD überwacht den Zustand aller Ressourcen in Ihrer Anwendung:

 **Integritätsstatus****: \$1 Fehlerfrei — Alle Ressourcen laufen wie erwartet \$1 **Fortschritt** — Ressourcen werden erstellt oder aktualisiert \$1 **Heruntergestuft** — Einige Ressourcen sind nicht fehlerfrei (Pods stürzen ab, Jobs schlagen fehl) \$1 **Suspendiert** — Anwendung wurde absichtlich angehalten \$1 **Fehlt** — In Git definierte Ressourcen sind nicht im Cluster vorhanden**

Argo CD verfügt über integrierte Integritätsprüfungen für gängige Kubernetes-Ressourcen (Deployments StatefulSets, Jobs usw.) und unterstützt benutzerdefinierte Integritätsprüfungen für. CRDs

Der Zustand einer Anwendung wird durch all ihre Ressourcen bestimmt — wenn es eine Ressource gibt`Degraded`, ist es auch die Anwendung. `Degraded`

Weitere Informationen finden Sie unter [Resource Health](https://argo-cd.readthedocs.io/en/stable/operator-manual/health/) in der Argo-CD-Dokumentation.

### Muster mit mehreren Clustern
<a name="_multi_cluster_patterns"></a>

Argo CD unterstützt zwei Hauptbereitstellungsmuster:

 **H ub-and-spoke** — Führen Sie Argo CD auf einem dedizierten Management-Cluster aus, der auf mehreren Workload-Clustern bereitgestellt wird: \$1 Zentrale Steuerung und Transparenz \$1 Konsistente Richtlinien für alle Cluster \$1 Eine Argo-CD-Instanz zur Verwaltung \$1 Klare Trennung zwischen Steuerungsebene und Workloads

 **Pro Cluster** — Führen Sie Argo CD auf jedem Cluster aus und verwalten Sie nur die Anwendungen dieses Clusters: \$1 Clustertrennung (ein Fehler hat keine Auswirkungen auf andere) \$1 Einfachere Vernetzung (keine clusterübergreifende Kommunikation) \$1 Einfachere Ersteinrichtung (keine Clusterregistrierung)

 hub-and-spokeEntscheiden Sie sich für Plattformteams, die viele Cluster verwalten, oder pro Cluster für unabhängige Teams oder wenn Cluster vollständig isoliert werden müssen.

Eine detaillierte Konfiguration mehrerer Cluster finden Sie unter. [Überlegungen zu Argo CD](argocd-considerations.md)

### Projekte
<a name="_projects"></a>

Projekte bieten logische Gruppierung und Zugriffskontrolle für Anwendungen:
+  **Quellenbeschränkungen** — Beschränken Sie, welche Git-Repositorys verwendet werden können
+  **Zielbeschränkungen** — Beschränken Sie, welche Cluster und Namespaces als Ziel ausgewählt werden können
+  **Ressourceneinschränkungen** — Beschränken Sie, welche Kubernetes-Ressourcentypen bereitgestellt werden können
+  **RBAC-Integration** — Ordnen Sie Projekte AWS Identity Center-Benutzern und Gruppen zu IDs

Anwendungen gehören zu einem einzigen Projekt. Wenn nicht angegeben, verwenden sie das `default` Projekt, für das standardmäßig keine Einschränkungen gelten. Bearbeiten Sie das `default` Projekt für den produktiven Einsatz, um den Zugriff einzuschränken, und erstellen Sie neue Projekte mit entsprechenden Einschränkungen.

Informationen zur Projektkonfiguration und zu RBAC-Mustern finden Sie unter. [Argo-CD-Berechtigungen konfigurieren](argocd-permissions.md)

### Synchronisierungsoptionen
<a name="_sync_options"></a>

Optimieren Sie das Synchronisierungsverhalten mit gängigen Optionen:
+  `CreateNamespace=true`— Automatisch einen Ziel-Namespace erstellen
+  `ServerSideApply=true`- Verwenden Sie serverseitiges Anwenden für eine bessere Konfliktlösung
+  `SkipDryRunOnMissingResource=true`- Überspringe den Testlauf, wenn er noch CRDs nicht existiert (nützlich für Kro-Instanzen)

```
spec:
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
    - ServerSideApply=true
    - SkipDryRunOnMissingResource=true
```

Eine vollständige Liste der Synchronisierungsoptionen finden Sie in der Dokumentation zu den [Argo-CD-Synchronisierungsoptionen](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/).

## Nächste Schritte
<a name="_next_steps"></a>
+  [Repository-Zugriff konfigurieren](argocd-configure-repositories.md)- Git-Repository-Zugriff konfigurieren
+  [Zielcluster registrieren](argocd-register-clusters.md)- Registrieren Sie Zielcluster für die Bereitstellung
+  [Anwendungen erstellen](argocd-create-application.md)- Erstellen Sie Ihre erste Anwendung
+  [Überlegungen zu Argo CD](argocd-considerations.md)- EKS-spezifische Muster, Identity Center-Integration und Multi-Cluster-Konfiguration
+  [Argo-CD-Dokumentation](https://argo-cd.readthedocs.io/en/stable/) — Umfassende Argo-CD-Dokumentation mit Sync-Hooks, Integritätsprüfungen und erweiterten Mustern

# Argo-CD-Berechtigungen konfigurieren
<a name="argocd-permissions"></a>

Die verwaltete Funktion von Argo CD ist zur Authentifizierung in AWS Identity Center integriert und verwendet integrierte RBAC-Rollen für die Autorisierung. In diesem Thema wird erklärt, wie Berechtigungen für Benutzer und Teams konfiguriert werden.

## Wie funktionieren Berechtigungen mit Argo CD
<a name="_how_permissions_work_with_argo_cd"></a>

Die Argo-CD-Funktion verwendet AWS Identity Center für die Authentifizierung und bietet drei integrierte RBAC-Rollen für die Autorisierung.

Wenn ein Benutzer auf Argo CD zugreift:

1. Sie authentifizieren sich mithilfe von AWS Identity Center (das eine Verbindung zu Ihrem Corporate Identity Provider herstellen kann)

1.  AWS Identity Center stellt Benutzer- und Gruppeninformationen für Argo CD bereit

1. Argo CD ordnet Benutzer und Gruppen basierend auf Ihrer Konfiguration RBAC-Rollen zu

1. Benutzer sehen nur die Anwendungen und Ressourcen, für deren Zugriff sie berechtigt sind

## Integrierte RBAC-Rollen
<a name="_built_in_rbac_roles"></a>

Die Argo-CD-Funktion bietet drei integrierte Rollen, die Sie AWS Identity Center-Benutzern und -Gruppen zuordnen. Dabei handelt es sich um **Rollen mit globalem Geltungsbereich**, die den Zugriff auf Argo CD-Ressourcen wie Projekte, Cluster und Repositorys steuern.

**Wichtig**  
Globale Rollen kontrollieren den Zugriff auf Argo CD selbst, nicht auf projektbezogene Ressourcen wie Anwendungen. EDITOR- und VIEWER-Benutzer können Anwendungen standardmäßig nicht sehen oder verwalten — sie benötigen Projektrollen, um auf projektbezogene Ressourcen zugreifen zu können. Einzelheiten [Projektrollen und projektbezogener Zugriff](#project-roles) zur Gewährung des Zugriffs auf Anwendungen und andere projektbezogene Ressourcen finden Sie unter.

 **ADMINISTRATOR** 

Voller Zugriff auf alle Ressourcen und Einstellungen von Argo CD:
+ Anwendungen in beliebigen Projekten erstellen, aktualisieren und ApplicationSets löschen
+ Verwalten Sie die Argo-CD-Konfiguration
+ Registrieren und verwalten Sie Bereitstellungszielcluster
+ Konfigurieren Sie den Zugriff auf das Repository
+ Projekte erstellen und verwalten
+ Sehen Sie sich den gesamten Bewerbungsstatus und die Historie an
+ Alle Cluster und Repositorys auflisten und darauf zugreifen

 **HERAUSGEBER** 

Kann Projekte aktualisieren und Projektrollen konfigurieren, aber die globalen Argo-CD-Einstellungen nicht ändern:
+ Bestehende Projekte aktualisieren (Projekte können nicht erstellt oder gelöscht werden)
+ Projektrollen und -berechtigungen konfigurieren
+ GPG-Schlüssel und Zertifikate anzeigen
+ Die globale Argo-CD-Konfiguration kann nicht geändert werden
+ Cluster oder Repositorys können nicht direkt verwaltet werden
+ Anwendungen ohne Projektrollen können nicht angezeigt oder verwaltet werden

 **BETRACHTER** 

Nur-Lese-Zugriff auf Argo-CD-Ressourcen:
+ Projektkonfigurationen anzeigen
+ Listet alle Projekte auf (einschließlich Projekten, denen der Benutzer nicht zugewiesen ist)
+ GPG-Schlüssel und Zertifikate anzeigen
+ Cluster oder Repositorys können nicht aufgelistet werden
+ Es können keine Änderungen vorgenommen werden
+ Anwendungen ohne Projektrollen können nicht angezeigt oder verwaltet werden

**Anmerkung**  
Um EDITOR- oder VIEWER-Benutzern Zugriff auf Anwendungen zu gewähren, muss ein ADMIN oder EDITOR Projektrollen erstellen, die Identity Center-Gruppen bestimmten Berechtigungen innerhalb eines Projekts zuordnen.

## Projektrollen und projektbezogener Zugriff
<a name="project-roles"></a>

Globale Rollen (ADMIN, EDITOR, VIEWER) steuern den Zugriff auf Argo CD selbst. Projektrollen steuern den Zugriff auf Ressourcen und Funktionen innerhalb eines bestimmten Projekts, darunter:
+  **Ressourcen**: Anwendungen ApplicationSets, Repository-Anmeldeinformationen, Cluster-Anmeldeinformationen
+  **Funktionen**: Protokollzugriff, Zugriff für Führungskräfte auf Anwendungs-Pods

 **Grundlegendes zum zweistufigen Berechtigungsmodell**:
+  **Globaler Geltungsbereich**: Integrierte Rollen bestimmen, was Benutzer mit Projekten, Clustern, Repositorys und Argo-CD-Einstellungen tun können
+  **Projektumfang**: Projektrollen bestimmen, was Benutzer mit Ressourcen und Fähigkeiten innerhalb eines bestimmten Projekts tun können

Das bedeutet Folgendes:
+ ADMIN-Benutzer können ohne zusätzliche Konfiguration auf alle Projektressourcen und Funktionen zugreifen
+ EDITOR- und VIEWER-Benutzern müssen Projektrollen zugewiesen werden, um auf Projektressourcen und Funktionen zugreifen zu können
+ EDITOR-Benutzer können Projektrollen erstellen, um sich selbst und anderen Zugriff auf Projekte zu gewähren, die sie aktualisieren können

 **Beispiel für einen Arbeitsablauf**:

1. Ein ADMIN ordnet der Rolle EDITOR weltweit eine Identity Center-Gruppe zu

1. Ein ADMIN erstellt ein Projekt für ein Team

1. Der EDITOR konfiguriert die Projektrollen innerhalb dieses Projekts, um Teammitgliedern Zugriff auf projektbezogene Ressourcen zu gewähren

1. Teammitglieder (die möglicherweise die globale VIEWER-Rolle haben) können nun Anwendungen in diesem Projekt auf der Grundlage ihrer Projektrollenberechtigungen sehen und verwalten

Einzelheiten zur Konfiguration von Projektrollen finden Sie unter[Projektbasierte Zugriffskontrolle](#_project_based_access_control).

## Konfigurieren Sie Rollenzuordnungen
<a name="_configure_role_mappings"></a>

Ordnen Sie AWS Identity Center-Benutzer und -Gruppen bei der Erstellung oder Aktualisierung der Funktion den Argo-CD-Rollen zu.

 **Beispiel für eine Rollenzuweisung**:

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["AdminGroup", "alice@example.com"],
    "EDITOR": ["DeveloperGroup", "DevOpsTeam"],
    "VIEWER": ["ReadOnlyGroup", "bob@example.com"]
  }
}
```

**Anmerkung**  
Bei Rollennamen wird zwischen Groß- und Kleinschreibung unterschieden und sie müssen in Großbuchstaben geschrieben werden (ADMIN, EDITOR, VIEWER).

**Wichtig**  
Die Integration von EKS Capabilities in AWS Identity Center unterstützt bis zu 1.000 Identitäten pro Argo-CD-Funktion. Eine Identität kann ein Benutzer oder eine Gruppe sein.

 **Rollenzuordnungen aktualisieren**:

```
aws eks update-capability \
  --region us-east-1 \
  --cluster-name cluster \
  --capability-name capname \
  --endpoint "https://eks.ap-northeast-2.amazonaws.com" \
  --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \
  --configuration '{
    "argoCd": {
      "rbacRoleMappings": {
        "addOrUpdateRoleMappings": [
          {
            "role": "ADMIN",
            "identities": [
              { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" }
            ]
          }
        ]
      }
    }
  }'
```

## Nutzung des Admin-Kontos
<a name="_admin_account_usage"></a>

Das Administratorkonto ist für die Ersteinrichtung und administrative Aufgaben wie die Registrierung von Clustern und die Konfiguration von Repositorys konzipiert.

 **Wenn das Administratorkonto geeignet ist**:
+ Erstmalige Einrichtung und Konfiguration der Funktionen
+ Einzelentwicklung oder schnelle Vorführungen
+ Administrative Aufgaben (Clusterregistrierung, Repository-Konfiguration, Projekterstellung)

 **Bewährte Methoden für Administratorkonten**:
+ Übergeben Sie Konto-Tokens nicht der Versionskontrolle
+ Wechseln Sie Tokens sofort, wenn sie offengelegt werden
+ Beschränken Sie die Verwendung von Konto-Tokens auf Einrichtungs- und Verwaltungsaufgaben
+ Legen Sie kurze Ablaufzeiten fest (maximal 12 Stunden)
+ Es können jeweils nur 5 Konto-Tokens erstellt werden

 **Wann sollte stattdessen der projektbasierte Zugriff** verwendet werden:
+ Gemeinsame Entwicklungsumgebungen mit mehreren Benutzern
+ Jede Umgebung, die der Produktion ähnelt
+ Wenn Sie Prüfprotokolle darüber benötigen, wer Aktionen ausgeführt hat
+ Wenn Sie Ressourcen- oder Zugriffsbeschränkungen durchsetzen müssen

Verwenden Sie für Produktionsumgebungen und Szenarien mit mehreren Benutzern eine projektbasierte Zugriffskontrolle mit speziellen RBAC-Rollen, die Identity Center-Gruppen zugeordnet sind. AWS 

## Projektbasierte Zugriffskontrolle
<a name="_project_based_access_control"></a>

Verwenden Sie Argo CD Projects (AppProject), um Teams eine detaillierte Zugriffskontrolle und Ressourcenisolierung zu bieten.

**Wichtig**  
Bevor Sie Benutzern oder Gruppen projektspezifischen Rollen zuweisen, müssen Sie sie zunächst einer globalen Argo-CD-Rolle (ADMIN, EDITOR oder VIEWER) in der Funktionskonfiguration zuordnen. Benutzer können ohne eine globale Rollenzuweisung nicht auf Argo CD zugreifen, selbst wenn sie Projektrollen zugewiesen sind.  
Erwägen Sie, Benutzer global der VIEWER-Rolle zuzuordnen und dann zusätzliche Berechtigungen über projektspezifische Rollen zu gewähren. Dies bietet Basiszugriff und ermöglicht gleichzeitig eine detaillierte Steuerung auf Projektebene.

Projekte bieten:
+  **Quellenbeschränkungen**: Beschränken Sie, welche Git-Repositorys verwendet werden können
+  **Zieleinschränkungen**: Beschränken Sie, welche Cluster und Namespaces als Ziel ausgewählt werden können
+  **Ressourceneinschränkungen**: Beschränken Sie, welche Kubernetes-Ressourcentypen bereitgestellt werden können
+  **RBAC-Integration**: Ordnen Sie Projekte AWS Identity Center-Gruppen oder Argo-CD-Rollen zu

 **Beispielprojekt für** die Isolierung von Teams:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  description: Team A applications

  # Required: Specify which namespaces this project watches for Applications
  sourceNamespaces:
  - argocd

  # Source restrictions
  sourceRepos:
  - https://github.com/myorg/team-a-apps

  # Destination restrictions
  destinations:
  - namespace: team-a-*
    server: arn:aws:eks:us-west-2:111122223333:cluster/production

  # Resource restrictions
  clusterResourceWhitelist:
  - group: ''
    kind: Namespace
  namespaceResourceWhitelist:
  - group: 'apps'
    kind: Deployment
  - group: ''
    kind: Service
  - group: ''
    kind: ConfigMap
```

### Quell-Namespaces
<a name="_source_namespaces"></a>

Wenn Sie die EKS Argo CD-Funktion verwenden, ist das `spec.sourceNamespaces` Feld in Definitionen erforderlich. AppProject Dieses Feld gibt an, welcher Namespace Anwendungen enthalten kann oder ApplicationSets die auf dieses Projekt verweisen.

**Wichtig**  
Die EKS Argo-CD-Funktion unterstützt nur einen einzigen Namespace für Anwendungen und ApplicationSets den Namespace, den Sie bei der Erstellung der Funktion angegeben haben (normalerweise). `argocd` Dies unterscheidet sich von der Open-Source-Version von Argo CD, die mehrere Namespaces unterstützt.

 **AppProject Konfiguration** 

Alle AppProjects müssen den konfigurierten Namespace der Fähigkeit enthalten in`sourceNamespaces`:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a-project
  namespace: argocd
spec:
  description: Applications for Team A

  # Required: Specify the capability's configured namespace (configuration.argoCd.namespace)
  sourceNamespaces:
    - argocd  # Must match your capability's namespace configuration

  # Source repositories this project can deploy from
  sourceRepos:
    - 'https://github.com/my-org/team-a-*'

  # Destination restrictions
  destinations:
    - namespace: 'team-a-*'
      server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
```

**Anmerkung**  
Wenn Sie den Namespace der Fähigkeit weglassen`sourceNamespaces`, können Anwendungen oder ApplicationSets in diesem Namespace nicht auf dieses Projekt verweisen, was zu Bereitstellungsfehlern führt.

 **Weisen Sie Benutzer Projekten** zu:

Projektrollen gewähren EDITOR- und VIEWER-Benutzern Zugriff auf Projektressourcen (Anwendungen ApplicationSets, Repository- und Cluster-Anmeldeinformationen) und Funktionen (Logs, Exec). Ohne Projektrollen können diese Benutzer nicht auf diese Ressourcen zugreifen, selbst wenn sie globalen Rollenzugriff haben.

ADMIN-Benutzer haben Zugriff auf alle Anwendungen, ohne Projektrollen zu benötigen.

 **Beispiel: Teammitgliedern Anwendungszugriff gewähren** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  # ... project configuration ...

  sourceNamespaces:
  - argocd

  # Project roles grant Application-level access
  roles:
  - name: developer
    description: Team A developers - can manage Applications
    policies:
    - p, proj:team-a:developer, applications, *, team-a/*, allow
    - p, proj:team-a:developer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 686103e0-f051-7068-b225-e6392b959d9e  # Identity Center group ID

  - name: viewer
    description: Team A viewers - read-only Application access
    policies:
    - p, proj:team-a:viewer, applications, get, team-a/*, allow
    - p, proj:team-a:viewer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 786203e0-f051-7068-b225-e6392b959d9f  # Identity Center group ID
```

**Anmerkung**  
Fügen Sie Rollen `clusters, get, *, allow` in das Projekt ein, damit Benutzer Clusternamen in der Benutzeroberfläche sehen können. Ohne diese Berechtigung wird der Zielcluster als „unbekannt“ angezeigt.

 **Grundlegendes zu den Richtlinien für Projektrollen**:

Das Richtlinienformat lautet: `p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>` 

 **Ressourcenrichtlinien**:
+  `applications, , team-a/, allow`- Voller Zugriff auf alle Anwendungen im Team-A-Projekt
+  `applications, get, team-a/*, allow`- Nur-Lese-Zugriff auf Anwendungen
+  `applications, sync, team-a/*, allow`- Kann Anwendungen synchronisieren, aber nicht erstellen/löschen
+  `applications, delete, team-a/*, allow`- Kann Anwendungen löschen (mit Vorsicht verwenden)
+  `applicationsets, , team-a/, allow`- Voller Zugriff auf ApplicationSets
+  `repositories, *, *, allow`- Zugriff auf Repository-Anmeldeinformationen
+  `clusters, *, *, allow`- Zugriff auf Cluster-Anmeldeinformationen

 **Fähigkeitsrichtlinien**:
+  `logs, , team-a/, allow`- Zugriff auf Anwendungsprotokolle
+  `exec, , team-a/, allow`- Zugriff für Führungskräfte auf Anwendungs-Pods

**Anmerkung**  
EDITOR-Benutzer können Projektrollen erstellen, um sich selbst und anderen Berechtigungen innerhalb von Projekten zu gewähren, die sie aktualisieren können. Auf diese Weise können Teamleiter den Zugriff auf projektbezogene Ressourcen für ihr Team kontrollieren, ohne dass ein Eingreifen durch den Administrator erforderlich ist.

**Anmerkung**  
Verwenden Sie die Identity Center-Gruppe IDs (keine Gruppennamen) im Feld. `groups` Sie können den Identity Center-Benutzer auch IDs für den individuellen Benutzerzugriff verwenden. Sie finden diese IDs in der AWS Identity Center-Konsole oder mithilfe der AWS CLI.

## Allgemeine Berechtigungsmuster
<a name="_common_permission_patterns"></a>

 **Muster 1: Admin-Team mit vollem Zugriff** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam", "SRETeam"]
  }
}
```

ADMIN-Benutzer können alle projektbezogenen Ressourcen ohne zusätzliche Konfiguration einsehen und verwalten.

 **Muster 2: Teamleiter verwalten Projekte, Entwickler greifen über Projektrollen zu** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

1. ADMIN erstellt Projekte für jedes Team

1. Teamleiter (EDITOR) konfigurieren Projektrollen, um ihren Entwicklern Zugriff auf Projektressourcen (Anwendungen ApplicationSets, Anmeldeinformationen) und Funktionen (Logs, Exec) zu gewähren

1. Entwickler (VIEWER) können nur auf Ressourcen und Funktionen zugreifen, die ihren Projektrollen entsprechen

 **Muster 3: Teambasierter Zugriff mit Projektrollen** 

1. ADMIN erstellt Projekte und ordnet Teamleiter der Rolle EDITOR weltweit zu

1. Teamleiter (EDITOR) weisen Teammitgliedern Projektrollen innerhalb ihrer Projekte zu

1. Teammitglieder benötigen nur die globale VIEWER-Rolle — Projektrollen bieten Zugriff auf Projektressourcen und -funktionen

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

## Best Practices
<a name="_best_practices"></a>

 **Verwenden Sie Gruppen statt einzelner Benutzer**: Ordnen Sie AWS Identity Center-Gruppen Argo-CD-Rollen statt einzelnen Benutzern zu, um die Verwaltung zu vereinfachen.

 **Beginnen Sie mit den geringsten Rechten**: Beginnen Sie mit VIEWER-Zugriff und gewähren Sie je nach Bedarf EDITOR oder ADMIN.

 **Verwenden Sie Projekte zur Teamisolierung**: Erstellen Sie separate Projekte AppProjects für verschiedene Teams oder Umgebungen, um Grenzen durchzusetzen.

 **Nutzen Sie den Identity Center-Verbund**: Konfigurieren Sie AWS Identity Center so, dass es für eine zentrale Benutzerverwaltung eine Verbindung mit Ihrem Corporate Identity Provider herstellt.

 **Regelmäßige Zugriffsprüfungen**: Überprüfen Sie regelmäßig die Rollenzuordnungen und Projektzuweisungen, um sicherzustellen, dass die Zugriffsebenen angemessen sind.

 **Clusterzugriff einschränken**: Denken Sie daran, dass Argo CD RBAC den Zugriff auf Argo CD-Ressourcen und -Operationen kontrolliert, aber nicht Kubernetes RBAC entspricht. Benutzer mit Argo-CD-Zugriff können Anwendungen auf Clustern bereitstellen, auf die Argo CD Zugriff hat. Beschränken Sie, auf welche Cluster Argo CD zugreifen kann, und kontrollieren Sie anhand von Beschränkungen für Projektziele, wo Anwendungen bereitgestellt werden können.

## AWS Serviceberechtigungen
<a name="shared_aws_service_permissions"></a>

Um AWS Dienste direkt in Anwendungsressourcen zu verwenden (ohne Repository-Ressourcen zu erstellen), fügen Sie der Capability Role die erforderlichen IAM-Berechtigungen hinzu.

 **ECR für Helm-Diagramme**:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "*"
    }
  ]
}
```

 **CodeCommit Repositorien**:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

 **CodeConnections (GitHub, GitLab, Bitbucket**):

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codeconnections:UseConnection"
      ],
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

Einzelheiten [Repository-Zugriff konfigurieren](argocd-configure-repositories.md) zur Verwendung dieser Integrationen finden Sie unter.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Erfahren Sie, wie Sie Anwendungen erstellen und Bereitstellungen verwalten
+  [Argo CD-Konzepte](argocd-concepts.md)- Verstehen Sie die Konzepte von Argo CD, einschließlich Projekte
+  [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)- Informieren Sie sich über bewährte Sicherheitsmethoden für Funktionen

# Arbeiten mit Argo CD
<a name="working-with-argocd"></a>

Mit Argo CD definieren Sie Anwendungen in Git-Repositorys und Argo CD synchronisiert sie automatisch mit Ihren Kubernetes-Clustern. Dies ermöglicht eine deklarative, versionskontrollierte Anwendungsbereitstellung mit automatisierter Drift-Erkennung.

## Voraussetzungen
<a name="_prerequisites"></a>

Bevor Sie mit Argo CD arbeiten können, benötigen Sie:
+ Es wurde ein EKS-Cluster mit der Argo-CD-Funktion erstellt (siehe) [Erstellen einer Argo CD-Funktion](create-argocd-capability.md)
+ Ein Git-Repository mit Kubernetes-Manifesten
+  `kubectl`konfiguriert für die Kommunikation mit Ihrem Cluster

## Allgemeine Aufgaben
<a name="_common_tasks"></a>

Die folgenden Themen führen Sie durch die häufigsten Aufgaben von Argo CD:

 **[Repository-Zugriff konfigurieren](argocd-configure-repositories.md)**- Konfigurieren Sie Argo CD für den Zugriff auf Ihre Git-Repositorys mit AWS Secrets Manager oder AWS CodeConnections Kubernetes Secrets.

 **[Zielcluster registrieren](argocd-register-clusters.md)**- Registrieren Sie Zielcluster, auf denen Argo CD Anwendungen bereitstellen wird.

 **[Zusammenarbeit mit Argo CD Projects](argocd-projects.md)**- Organisieren Sie Anwendungen und setzen Sie Sicherheitsgrenzen durch, indem Sie Projekte für Umgebungen mit mehreren Mandanten einsetzen.

 **[Anwendungen erstellen](argocd-create-application.md)**- Erstellen Sie Anwendungen, die über Git-Repositorys mit automatisierten oder manuellen Synchronisierungsrichtlinien bereitgestellt werden.

 **[Benutzen ApplicationSets](argocd-applicationsets.md)**- Wird verwendet ApplicationSets , um Anwendungen mithilfe von Vorlagen und Generatoren in mehreren Umgebungen oder Clustern bereitzustellen.

## Greifen Sie auf die Benutzeroberfläche von Argo CD zu
<a name="_access_the_argo_cd_ui"></a>

Greifen Sie über die EKS-Konsole auf die Benutzeroberfläche von Argo CD zu:

1. Öffnen Sie die Amazon EKS-Konsole

1. Wählen Sie Ihren Cluster aus

1. Wählen Sie die Registerkarte **Funktionen**

1. Wählen Sie **Argo CD** 

1. Wählen Sie **Open Argo CD UI** 

Die Benutzeroberfläche bietet visuelle Anwendungstopologie, Synchronisierungsstatus und -verlauf, Ressourcenstatus und Ereignisse, manuelle Synchronisierungssteuerungen und Anwendungsverwaltung.

## Upstream-Dokumentation
<a name="_upstream_documentation"></a>

Ausführliche Informationen zu den Funktionen von Argo CD finden Sie unter:
+  [Argo CD-Dokumentation](https://argo-cd.readthedocs.io/) — Vollständiges Benutzerhandbuch
+  [Anwendungsspezifikation](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) — Vollständige Anwendungs-API-Referenz
+  [ApplicationSet Leitfaden](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/) — ApplicationSet Muster und Beispiele
+  [Argo CD GitHub](https://github.com/argoproj/argo-cd) - Quellcode und Beispiele

# Repository-Zugriff konfigurieren
<a name="argocd-configure-repositories"></a>

Bevor Sie Anwendungen bereitstellen, konfigurieren Sie Argo CD für den Zugriff auf Ihre Git-Repositorys und Helm-Chart-Registries. Argo CD unterstützt mehrere Authentifizierungsmethoden für GitHub, GitLab, Bitbucket und ECR. AWS CodeCommit AWS 

**Anmerkung**  
Bei direkten AWS Serviceintegrationen (ECR-Helm-Diagramme, CodeCommit Repositorys und CodeConnections) können Sie direkt in den Anwendungsressourcen darauf verweisen, ohne Repository-Konfigurationen erstellen zu müssen. Die Capability-Rolle muss über die erforderlichen IAM-Berechtigungen verfügen. Details dazu finden Sie unter [Argo-CD-Berechtigungen konfigurieren](argocd-permissions.md).

## Voraussetzungen
<a name="_prerequisites"></a>
+ Es wurde ein EKS-Cluster mit der Argo-CD-Funktion erstellt
+ Git-Repositorys, die Kubernetes-Manifeste enthalten
+  `kubectl`konfiguriert für die Kommunikation mit Ihrem Cluster

**Anmerkung**  
 AWS CodeConnections kann eine Verbindung zu Git-Servern herstellen, die sich in der AWS Cloud oder vor Ort befinden. Weitere Informationen finden Sie unter [AWS CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/userguide/welcome.html).

## Authentifizierungsmethoden
<a name="_authentication_methods"></a>


| Methode | Anwendungsfall | Erforderliche IAM-Berechtigungen | 
| --- | --- | --- | 
|   **Direkte Integration mit Diensten AWS **   | 
|  CodeCommit  |  Direkte Integration mit AWS CodeCommit Git-Repositorys. Keine Repository-Konfiguration erforderlich.  |   `codecommit:GitPull`   | 
|  CodeConnections  |  Stellen Sie mit verwalteter Authentifizierung eine Connect zu GitHub GitLab, oder Bitbucket her. Erfordert eine Verbindungseinrichtung.  |   `codeconnections:UseConnection`   | 
|  ECR OCI-Artefakte  |  Direkte Integration mit AWS ECR für OCI Helm-Diagramme und Manifestbilder. Keine Repository-Konfiguration erforderlich.  |   `arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly`   | 
|   **Repository-Konfiguration mit Anmeldeinformationen**   | 
|   AWS Secrets Manager (Benutzername/Token)  |  Speichern Sie persönliche Zugriffstoken oder Passwörter. Ermöglicht die Rotation von Anmeldeinformationen ohne Kubernetes-Zugriff.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (SSH-Schlüssel)  |  Verwenden Sie die SSH-Schlüsselauthentifizierung. Ermöglicht die Rotation von Anmeldeinformationen ohne Kubernetes-Zugriff.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (GitHub App)  |  GitHub App-Authentifizierung mit privatem Schlüssel. Ermöglicht die Rotation von Anmeldeinformationen ohne Kubernetes-Zugriff.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|  Kubernetes-Geheimnis  |  Standard-Argo-CD-Methode mit Cluster-internen Geheimnissen  |  Keine (Berechtigungen werden von EKS Access Entry mit Kubernetes RBAC verwaltet)  | 

## Direkter Zugriff auf Dienste AWS
<a name="direct_access_to_shared_aws_services"></a>

 AWS Dienste können Sie direkt in den Anwendungsressourcen referenzieren, ohne Repository-Konfigurationen erstellen zu müssen. Die Capability-Rolle muss über die erforderlichen IAM-Berechtigungen verfügen.

### CodeCommit Repositorien
<a name="_codecommit_repositories"></a>

 CodeCommit Referenz-Repositorien direkt in Anwendungen:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Erforderliche Berechtigungen für Capability Role:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codecommit:GitPull",
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

### CodeConnections
<a name="_codeconnections"></a>

Referenz GitHub - GitLab oder Bitbucket-Repositorys durch. CodeConnections Das Repository-URL-Format wird vom CodeConnections Verbindungs-ARN abgeleitet.

Das Repository-URL-Format ist:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Erforderliche Berechtigungen für Capability Role:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codeconnections:UseConnection",
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

### ECR-Helm-Diagramme
<a name="_ecr_helm_charts"></a>

ECR speichert Helm-Diagramme als OCI-Artefakte. Argo CD unterstützt zwei Möglichkeiten, auf sie zu verweisen:

 **Helm-Format** (empfohlen für Helm-Charts):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-helm
  namespace: argocd
spec:
  source:
    repoURL: account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
    helm:
      valueFiles:
        - values.yaml
```

Hinweis: Geben Sie das `oci://` Präfix nicht an, wenn Sie das Helm-Format verwenden. Verwenden Sie das `chart` Feld, um den Namen des Diagramms anzugeben.

 **OCI-Format** (für OCI-Artefakte mit Kubernetes-Manifesten):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-oci
  namespace: argocd
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: artifact-version
    path: path-to-manifests
```

Hinweis: Geben Sie das `oci://` Präfix an, wenn Sie das OCI-Format verwenden. Verwenden Sie das `path` Feld anstelle von. `chart`

Erforderliche Berechtigungen für Capability Role — fügen Sie die verwaltete Richtlinie an:

```
arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
```

Diese Richtlinie umfasst die erforderlichen ECR-Berechtigungen: `ecr:GetAuthorizationToken``ecr:BatchGetImage`, und`ecr:GetDownloadUrlForLayer`.

## AWS Secrets Manager verwenden
<a name="using_shared_aws_secrets_manager"></a>

Speichern Sie die Repository-Anmeldeinformationen in Secrets Manager und referenzieren Sie sie in den Argo CD Repository-Konfigurationen. Die Verwendung von Secrets Manager ermöglicht die automatische Rotation von Anmeldeinformationen, ohne dass Kubernetes RBAC-Zugriff erforderlich ist. Anmeldeinformationen können mithilfe von IAM-Berechtigungen an Secrets Manager rotiert werden, und Argo CD liest die aktualisierten Werte automatisch.

**Anmerkung**  
Für die Wiederverwendung von Anmeldeinformationen in mehreren Repositorys (z. B. für alle Repositorys innerhalb einer Organisation) verwenden Sie Vorlagen für Repository-Anmeldeinformationen mit. GitHub `argocd.argoproj.io/secret-type: repo-creds` Dies bietet eine bessere Benutzererfahrung als die Erstellung einzelner Repository-Geheimnisse. Weitere Informationen finden Sie unter [Repository-Anmeldeinformationen](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) in der Argo-CD-Dokumentation.

### Authentifizierung mit Benutzername und Token
<a name="_username_and_token_authentication"></a>

Für HTTPS-Repositorys mit persönlichen Zugriffstoken oder Passwörtern:

 **Erstellen Sie das Geheimnis in Secrets Manager**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo \
  --description "GitHub credentials for Argo CD" \
  --secret-string '{"username":"your-username","token":"your-personal-access-token"}'
```

 **Optionale Felder für TLS-Client-Zertifikate** (für private Git-Server):

```
aws secretsmanager create-secret \
  --name argocd/my-private-repo \
  --secret-string '{
    "username":"your-username",
    "token":"your-token",
    "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t",
    "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t"
  }'
```

**Anmerkung**  
Die `tlsClientCertKey` Werte `tlsClientCertData` und müssen base64-codiert sein.

 **Erstellen Sie ein Repository-Geheimnis, das auf Secrets Manager verweist**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-AbCdEf
  project: default
```

### SSH-Schlüsselauthentifizierung
<a name="_ssh_key_authentication"></a>

Für SSH-basierten Git-Zugriff speichern Sie den privaten Schlüssel als Klartext (nicht JSON):

 **Erstelle das Geheimnis mit dem privaten SSH-Schlüssel**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo-ssh \
  --description "SSH key for Argo CD" \
  --secret-string "-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
...
-----END OPENSSH PRIVATE KEY-----"
```

 **Erstellen Sie ein Repository-Geheimnis für SSH**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-ssh-AbCdEf
  project: default
```

### GitHub App-Authentifizierung
<a name="_github_app_authentication"></a>

Für die GitHub App-Authentifizierung mit einem privaten Schlüssel:

 **Erstellen Sie das Geheimnis mit den Anmeldeinformationen für die GitHub App**:

```
aws secretsmanager create-secret \
  --name argocd/github-app \
  --description "GitHub App credentials for Argo CD" \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678"
  }'
```

**Anmerkung**  
Der `githubAppPrivateKeySecret` Wert muss Base64-codiert sein.

 **Optionales Feld für Enterprise GitHub **:

```
aws secretsmanager create-secret \
  --name argocd/github-enterprise-app \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678",
    "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3"
  }'
```

 **Erstellen Sie einen geheimen Repository-Schlüssel für die GitHub App**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-github-app
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-app-AbCdEf
  project: default
```

### Vorlagen für Repository-Anmeldeinformationen
<a name="_repository_credential_templates"></a>

Für die Wiederverwendung von Anmeldeinformationen in mehreren Repositorys (z. B. für alle Repositorys einer GitHub Organisation oder eines Benutzers) verwenden Sie Vorlagen für Repository-Anmeldeinformationen mit. `argocd.argoproj.io/secret-type: repo-creds` Dies bietet eine bessere Benutzererfahrung als die Erstellung von individuellen Repository-Geheimnissen für jedes Repository.

 **Erstellen Sie eine Vorlage für Repository-Anmeldeinformationen**:

```
apiVersion: v1
kind: Secret
metadata:
  name: github-org-creds
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repo-creds
stringData:
  type: git
  url: https://github.com/your-org
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-org-AbCdEf
```

Diese Vorlage für Anmeldeinformationen gilt für alle Repositorys, die dem URL-Präfix entsprechen. `https://github.com/your-org` Sie können dann in Anwendungen auf jedes Repository dieser Organisation verweisen, ohne zusätzliche Geheimnisse zu erstellen.

Weitere Informationen finden Sie unter [Repository-Anmeldeinformationen](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) in der Argo-CD-Dokumentation.

**Wichtig**  
Stellen Sie sicher, dass Ihrer IAM-Capability-Rolle die verwaltete Richtlinie oder gleichwertige Berechtigungen, einschließlich `secretsmanager:GetSecretValue` KMS-Entschlüsselungsberechtigungen, `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` zugewiesen sind. Informationen [Überlegungen zu Argo CD](argocd-considerations.md) zur Konfiguration der IAM-Richtlinie finden Sie unter.

## Verwenden AWS CodeConnections
<a name="using_shared_aws_codeconnections"></a>

Informationen zur CodeConnections Integration finden Sie unter[Connect zu Git-Repositorys her mit AWS CodeConnections](integration-codeconnections.md).

CodeConnections bietet verwaltete Authentifizierung für GitHub GitLab, und Bitbucket, ohne Anmeldeinformationen zu speichern.

## Verwendung von Kubernetes Secrets
<a name="_using_kubernetes_secrets"></a>

Speichern Sie Anmeldeinformationen mithilfe der Standard-Argo-CD-Methode direkt in Kubernetes.

 **Für HTTPS mit persönlichem Zugriffstoken**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  username: your-username
  password: your-personal-access-token
```

 **Für SSH:**

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  sshPrivateKey: |
    -----BEGIN OPENSSH PRIVATE KEY-----
    ... your private key ...
    -----END OPENSSH PRIVATE KEY-----
```

## CodeCommit Repositorien
<a name="_codecommit_repositories_2"></a>

Erteilen Sie für AWS CodeCommit Ihre CodeCommit IAM-Capability-Rollenberechtigungen ()`codecommit:GitPull`.

Konfigurieren Sie das Repository:

```
apiVersion: v1
kind: Secret
metadata:
  name: codecommit-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://git-codecommit.us-west-2.amazonaws.com/v1/repos/my-repo
  project: default
```

Eine detaillierte Konfiguration der IAM-Richtlinien finden Sie unter[Überlegungen zu Argo CD](argocd-considerations.md).

## Überprüfen Sie die Verbindung zum Repository
<a name="_verify_repository_connection"></a>

Überprüfen Sie den Verbindungsstatus über die Benutzeroberfläche von Argo CD unter Einstellungen → Repositories. Die Benutzeroberfläche zeigt den Verbindungsstatus und alle Authentifizierungsfehler an.

Repository Secrets enthalten keine Statusinformationen.

## Weitere Ressourcen
<a name="_additional_resources"></a>
+  [Zielcluster registrieren](argocd-register-clusters.md)— Registrieren Sie Zielcluster für Bereitstellungen
+  [Anwendungen erstellen](argocd-create-application.md)- Erstellen Sie Ihre erste Anwendung
+  [Überlegungen zu Argo CD](argocd-considerations.md)- IAM-Berechtigungen und Sicherheitskonfiguration
+  [Private Repositorys](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/) — Referenz zur Konfiguration des Upstream-Repositorys

# Zielcluster registrieren
<a name="argocd-register-clusters"></a>

Registrieren Sie Cluster, damit Argo CD Anwendungen für sie bereitstellen kann. Sie können denselben Cluster registrieren, auf dem Argo CD läuft (lokaler Cluster), oder Remote-Cluster in verschiedenen Konten oder Regionen. Sobald ein Cluster registriert ist, verbleibt er im Verbindungsstatus Unbekannt, bis Sie eine Anwendung innerhalb dieses Clusters erstellen. Informationen zum Erstellen einer Argo-CD-Anwendung nach der Registrierung Ihres Clusters finden Sie unter[Anwendungen erstellen](argocd-create-application.md).

## Voraussetzungen
<a name="_prerequisites"></a>
+ Es wurde ein EKS-Cluster mit der Argo-CD-Funktion erstellt
+  `kubectl`konfiguriert für die Kommunikation mit Ihrem Cluster
+ Für Remote-Cluster: entsprechende IAM-Berechtigungen und Zugriffseinträge

## Registrieren Sie den lokalen Cluster
<a name="_register_the_local_cluster"></a>

Um Anwendungen auf demselben Cluster bereitzustellen, auf dem Argo CD läuft, registrieren Sie ihn als Bereitstellungsziel.

**Wichtig**  
Die Argo-CD-Funktion registriert den lokalen Cluster nicht automatisch. Sie müssen es explizit registrieren, um Anwendungen auf demselben Cluster bereitzustellen. Sie können den Clusternamen aus `in-cluster` Gründen der Kompatibilität mit den meisten Argo-CD-Beispielen online verwenden.

**Anmerkung**  
Ein EKS-Zugriffseintrag wird automatisch für den lokalen Cluster mit der Argo-CD-Capability-Rolle erstellt, aber standardmäßig werden keine Kubernetes-RBAC-Berechtigungen gewährt. Dies folgt dem Prinzip der geringsten Rechte — Sie müssen die Berechtigungen, die Argo CD benötigt, explizit auf der Grundlage Ihres Anwendungsfalls konfigurieren. Wenn Sie diesen Cluster beispielsweise nur als Argo-CD-Hub für die Verwaltung von Remote-Clustern verwenden, benötigt er keine lokalen Bereitstellungsberechtigungen. Die Konfigurationsoptionen finden Sie im Abschnitt mit den RBAC-Anforderungen für Access Entry weiter unten.

 **Verwenden der Argo CD CLI**:

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/my-cluster \
  --name local-cluster
```

 **Verwendung eines Kubernetes-Geheimnisses**:

```
apiVersion: v1
kind: Secret
metadata:
  name: local-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: local-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
  project: default
```

Wenden Sie die Konfiguration an:

```
kubectl apply -f local-cluster.yaml
```

**Anmerkung**  
Verwenden Sie den EKS-Cluster-ARN im `server` Feld, nicht die Kubernetes-API-Server-URL. Die verwaltete Funktion erfordert die Identifizierung ARNs von Clustern. Die Standardeinstellung `kubernetes.default.svc` wird nicht unterstützt.

## Registrieren Sie Remote-Cluster
<a name="_register_remote_clusters"></a>

So führen Sie die Bereitstellung auf Remote-Clustern durch:

 **Schritt 1: Erstellen Sie den Zugriffseintrag auf dem Remote-Cluster** 

*region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Remote-Cluster befindet, *remote-cluster* ersetzen Sie es durch den Namen Ihres Remote-Clusters und ersetzen Sie den ARN durch Ihren ARGO-CD-Funktionsrollen-ARN.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD
```

 **Schritt 2: Verknüpfen Sie eine Zugriffsrichtlinie mit Kubernetes-RBAC-Berechtigungen** 

Für den Access Entry sind Kubernetes-RBAC-Berechtigungen erforderlich, damit Argo CD Anwendungen bereitstellen kann. Für einen schnellen Einstieg können Sie Folgendes verwenden: `AmazonEKSClusterAdminPolicy`

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Wichtig**  
Das `AmazonEKSClusterAdminPolicy` bietet vollen Cluster-Admin-Zugriff (entspricht`system:masters`). Dies ist praktisch für den Einstieg, sollte aber nicht in der Produktion verwendet werden. Verwenden Sie für Produktionsumgebungen restriktivere Berechtigungen, indem Sie den Access Entry benutzerdefinierten Kubernetes-Gruppen zuordnen und entsprechende Rollen oder Bindungen erstellen. ClusterRole Informationen zur Konfiguration mit den geringsten Rechten finden Sie im Abschnitt zur Produktionseinrichtung weiter unten.

 **Schritt 3: Registrieren Sie den Cluster auf Argo CD** 

 **Verwenden der Argo CD CLI**:

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster \
  --name remote-cluster
```

 **Verwendung eines Kubernetes-Geheimnisses**:

```
apiVersion: v1
kind: Secret
metadata:
  name: remote-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: remote-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster
  project: default
```

Wenden Sie die Konfiguration an:

```
kubectl apply -f remote-cluster.yaml
```

## Kontenübergreifende Cluster
<a name="_cross_account_clusters"></a>

So führen Sie die Bereitstellung auf Clustern mit unterschiedlichen AWS Konten durch:

1. Erstellen Sie im Zielkonto einen Access-Eintrag auf dem EKS-Zielcluster, indem Sie den Argo CD IAM Capability Role ARN aus dem Quellkonto als Principal verwenden.

1. Ordnen Sie eine Zugriffsrichtlinie den entsprechenden Kubernetes-RBAC-Berechtigungen zu

1. Registrieren Sie den Cluster in Argo CD mit seinem EKS-Cluster-ARN

Es ist keine zusätzliche IAM-Rollenerstellung oder Konfiguration von Vertrauensrichtlinien erforderlich — EKS Access Entries kümmern sich um den kontoübergreifenden Zugriff.

Das Cluster-ARN-Format umfasst die Region, sodass regionsübergreifende Bereitstellungen denselben Prozess verwenden wie Bereitstellungen derselben Region.

## Überprüfen Sie die Clusterregistrierung
<a name="_verify_cluster_registration"></a>

Registrierte Cluster anzeigen:

```
kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=cluster
```

Oder überprüfen Sie den Clusterstatus in der Benutzeroberfläche von Argo CD unter Einstellungen → Cluster.

## Private Cluster
<a name="_private_clusters"></a>

Die Argo-CD-Funktion bietet transparenten Zugriff auf vollständig private EKS-Cluster, ohne dass VPC-Peering oder eine spezielle Netzwerkkonfiguration erforderlich sind.

 AWS verwaltet automatisch die Konnektivität zwischen der Argo-CD-Funktion und privaten Remote-Clustern.

Registrieren Sie den privaten Cluster einfach mit seinem ARN — es ist keine zusätzliche Netzwerkeinrichtung erforderlich.

## Access Entry RBAC-Anforderungen
<a name="_access_entry_rbac_requirements"></a>

Wenn Sie eine Argo-CD-Funktion erstellen, wird automatisch ein EKS-Zugriffseintrag für die Capability Role erstellt, aber standardmäßig werden keine Kubernetes-RBAC-Berechtigungen gewährt. Dieses absichtliche Design folgt dem Prinzip der geringsten Rechte — unterschiedliche Anwendungsfälle erfordern unterschiedliche Berechtigungen.

Zum Beispiel: \$1 Wenn Sie den Cluster nur als Argo-CD-Hub zur Verwaltung von Remote-Clustern verwenden, benötigt er keine lokalen Bereitstellungsberechtigungen. \$1 Wenn Sie Anwendungen lokal bereitstellen, benötigt er Lesezugriff für den gesamten Cluster und Schreibzugriff auf bestimmte Namespaces. \$1 Wenn Sie Anwendungen erstellen müssen, sind zusätzliche Cluster-Admin-Rechte erforderlich CRDs

Sie müssen die Berechtigungen, die Argo CD benötigt, explizit auf der Grundlage Ihrer Anforderungen konfigurieren.

### Mindestberechtigungen für Argo CD
<a name="_minimum_permissions_for_argo_cd"></a>

Argo CD benötigt zwei Arten von Berechtigungen, um fehlerfrei zu funktionieren:

 **Leseberechtigungen (clusterweit)**: Argo CD muss in der Lage sein, alle Ressourcentypen und benutzerdefinierten Ressourcendefinitionen (CRDs) im gesamten Cluster zu lesen für:
+ Erkennung von Ressourcen und Zustandsprüfungen
+ Erkennung von Abweichungen zwischen dem gewünschten und dem tatsächlichen Zustand
+ Validierung der Ressourcen vor der Bereitstellung

 **Schreibberechtigungen (namespace-spezifisch)**: Argo CD benötigt Erstellungs-, Aktualisierungs- und Löschberechtigungen für Ressourcen, die in Anwendungen definiert sind:
+ Stellen Sie Anwendungs-Workloads bereit (Bereitstellungen, Dienste usw.) ConfigMaps
+ Wenden Sie benutzerdefinierte Ressourcen an (CRDs spezifisch für Ihre Anwendungen)
+ Verwalten Sie den Anwendungslebenszyklus

### Quick Setup
<a name="_quick_setup"></a>

Verwenden Sie für einen schnellen Einstieg in Test- oder Entwicklungsumgebungen`AmazonEKSClusterAdminPolicy`:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Wichtig**  
Das `AmazonEKSClusterAdminPolicy` bietet vollen Cluster-Admin-Zugriff (entspricht`system:masters`), einschließlich der Möglichkeit, clusterweite Ressourcen zu erstellen CRDs, zu ändern und in beliebigen Namespaces bereitzustellen. Dies ist praktisch für die Entwicklung, sollte POCs aber nicht in der Produktion verwendet werden. Verwenden Sie für die Produktion das unten stehende Setup mit den geringsten Rechten.

### Produktions-Setup mit den geringsten Rechten
<a name="_production_setup_with_least_privilege"></a>

Erstellen Sie für Produktionsumgebungen eine benutzerdefinierte Kubernetes-RBAC, die Folgendes gewährt:
+ Clusterweiter Lesezugriff auf alle Ressourcen (für Erkennungs- und Integritätsprüfungen)
+ Namespace-spezifischer Schreibzugriff (für Bereitstellungen)

 **Schritt 1: Verknüpfen Sie Access Entry mit einer benutzerdefinierten Kubernetes-Gruppe** 

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy \
  --access-scope type=namespace,namespaces=app-namespace
```

 **Schritt 2: ClusterRole Für Lesezugriff erstellen** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: argocd-read-all
rules:
# Read access to all resources for discovery and health checks
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]
```

 **Schritt 3: Rolle für den Schreibzugriff auf Anwendungs-Namespaces erstellen** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: argocd-deploy
  namespace: app-namespace
rules:
# Full access to deploy application resources
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
```

 **Schritt 4: Binden Sie Rollen an die Kubernetes-Gruppe** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: argocd-read-all
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: argocd-read-all
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: argocd-deploy
  namespace: app-namespace
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: argocd-deploy
  apiGroup: rbac.authorization.k8s.io
```

**Anmerkung**  
Auf das Gruppennamenformat für Access Entries `eks-access-entry:` folgt der Prinzipal-ARN. Wiederholen Sie den Vorgang RoleBinding für jeden Namespace, in dem Argo CD Anwendungen bereitstellen soll.

**Wichtig**  
Argo CD muss in der Lage sein, alle Ressourcentypen im gesamten Cluster für Integritätsprüfungen und Erkennungen zu lesen, auch wenn es nur in bestimmten Namespaces bereitgestellt wird. Ohne clusterweiten Lesezugriff zeigt Argo CD bei der Überprüfung des Anwendungszustands Fehler an.

## Beschränken Sie den Clusterzugriff mit Projekten
<a name="_restrict_cluster_access_with_projects"></a>

Verwenden Sie Projekte, um zu kontrollieren, in welchen Clustern und Namespaces Anwendungen bereitgestellt werden können. Konfigurieren Sie dazu die zulässigen Zielcluster und Namespaces in: `spec.destinations`

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  destinations:
  - server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster
    namespace: '*'
  - server: arn:aws:eks:eu-west-1:111122223333:cluster/prod-eu-cluster
    namespace: '*'
  sourceRepos:
  - 'https://github.com/example/production-apps'
```

Details hierzu finden Sie unter [Zusammenarbeit mit Argo CD Projects](argocd-projects.md).

## Weitere Ressourcen
<a name="_additional_resources"></a>
+  [Zusammenarbeit mit Argo CD Projects](argocd-projects.md)- Organisieren Sie Anwendungen und setzen Sie Sicherheitsgrenzen durch
+  [Anwendungen erstellen](argocd-create-application.md)- Stellen Sie Ihre erste Anwendung bereit
+  [Benutzen ApplicationSets](argocd-applicationsets.md)- Stellen Sie die Lösung auf mehreren Clustern bereit mit ApplicationSets
+  [Überlegungen zu Argo CD](argocd-considerations.md)- Multi-Cluster-Muster und kontenübergreifende Einrichtung
+  [Deklaratives Cluster-Setup — Referenz](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#clusters) zur Upstream-Cluster-Konfiguration

# Zusammenarbeit mit Argo CD Projects
<a name="argocd-projects"></a>

Argo CD Projects (AppProject) bieten logische Gruppierung und Zugriffskontrolle für Anwendungen. Projekte definieren, welche Git-Repositorys, Zielcluster und Namespaces Anwendungen verwenden können, wodurch Mehrmandantenfähigkeit und Sicherheitsgrenzen in gemeinsam genutzten Argo-CD-Instanzen aktiviert werden.

## Wann sollten Projekte verwendet werden
<a name="_when_to_use_projects"></a>

Verwenden Sie Projekte, um:
+ Trennen Sie Anwendungen nach Team, Umgebung oder Geschäftseinheit
+ Schränken Sie ein, aus welchen Repositorys Teams Anwendungen bereitstellen können
+ Beschränken Sie, in welchen Clustern und Namespaces Teams Deployment durchführen können
+ Setzen Sie Ressourcenkontingente und zulässige Ressourcentypen durch
+ Sorgen Sie für die Self-Service-Anwendungsbereitstellung mit Leitplanken

## Standardprojekt
<a name="_default_project"></a>

Jede Argo-CD-Funktion beinhaltet ein `default` Projekt, das den Zugriff auf alle Repositorys, Cluster und Namespaces ermöglicht. Das ist zwar für erste Tests nützlich, aber Sie können spezielle Projekte mit ausdrücklichen Einschränkungen für den produktiven Einsatz erstellen.

Einzelheiten zur Standard-Projektkonfiguration und wie man sie einschränkt, finden Sie unter [Das Standardprojekt](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#the-default-project) in der Argo-CD-Dokumentation.

## Erstellen eines Projekts
<a name="_create_a_project"></a>

Erstellen Sie ein Projekt, indem Sie eine `AppProject` Ressource auf Ihren Cluster anwenden.

 **Beispiel: Teamspezifisches Projekt** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  description: Applications for Team A

  # Source repositories this project can deploy from
  sourceRepos:
    - 'https://github.com/my-org/team-a-*'
    - 'https://github.com/my-org/shared-libs'

  # Destination clusters and namespaces
  destinations:
    - name: dev-cluster
      namespace: team-a-dev
    - name: prod-cluster
      namespace: team-a-prod

  # Allowed resource types
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace

  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
    - group: ''
      kind: ConfigMap
```

Wenden Sie das Projekt an:

```
kubectl apply -f team-a-project.yaml
```

## Konfiguration des Projekts
<a name="_project_configuration"></a>

### Quell-Repositorien
<a name="_source_repositories"></a>

Steuern Sie, welche Git-Repositorys Anwendungen in diesem Projekt verwenden können:

```
spec:
  sourceRepos:
    - 'https://github.com/my-org/app-*'  # Wildcard pattern
    - 'https://github.com/my-org/infra'  # Specific repo
```

Du kannst Platzhalter und Negationsmuster (`!`Präfix) verwenden, um bestimmte Repositorys zuzulassen oder abzulehnen. Einzelheiten finden Sie unter [Projekte verwalten](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) in der Argo-CD-Dokumentation.

### Einschränkungen im Hinblick auf Ziele
<a name="_destination_restrictions"></a>

Schränken Sie ein, wo Anwendungen bereitgestellt werden können:

```
spec:
  destinations:
    - name: prod-cluster  # Specific cluster by name
      namespace: production
    - name: '*'  # Any cluster
      namespace: team-a-*  # Namespace pattern
```

**Wichtig**  
Verwenden Sie für Produktionsprojekte spezifische Clusternamen und Namespace-Muster anstelle von Platzhaltern. Dies verhindert versehentliche Bereitstellungen in nicht autorisierten Clustern oder Namespaces.

Sie können Platzhalter und Negationsmuster verwenden, um Ziele zu steuern. Einzelheiten finden Sie unter [Projekte verwalten](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) in der Argo-CD-Dokumentation.

### Einschränkungen bei den Ressourcen
<a name="_resource_restrictions"></a>

Steuern Sie, welche Kubernetes-Ressourcentypen bereitgestellt werden können:

 Ressourcen im **Clusterbereich**:

```
spec:
  clusterResourceWhitelist:
    - group: ''
      kind: Namespace
    - group: 'rbac.authorization.k8s.io'
      kind: Role
```

 **Ressourcen im Namespace-Bereich**:

```
spec:
  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
    - group: ''
      kind: ConfigMap
    - group: 's3.services.k8s.aws'
      kind: Bucket
```

Verwenden Sie schwarze Listen, um bestimmte Ressourcen abzulehnen:

```
spec:
  namespaceResourceBlacklist:
    - group: ''
      kind: Secret  # Prevent direct Secret creation
```

## Ordnen Sie Anwendungen Projekten zu
<a name="_assign_applications_to_projects"></a>

Wenn Sie eine Anwendung erstellen, geben Sie das Projekt im `spec.project` Feld an:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: team-a  # Assign to team-a project
  source:
    repoURL: https://github.com/my-org/my-app
    path: manifests
  destination:
    name: prod-cluster
    namespace: team-a-prod
```

Anwendungen ohne ein bestimmtes Projekt verwenden das `default` Projekt.

## Projektrollen und RBAC
<a name="_project_roles_and_rbac"></a>

Projekte können benutzerdefinierte Rollen für eine differenzierte Zugriffskontrolle definieren. Ordnen Sie in Ihrer Funktionskonfiguration Projektrollen AWS Identity Center-Benutzern und -Gruppen zu, um zu kontrollieren, wer Anwendungen synchronisieren, aktualisieren oder löschen kann.

 **Beispiel: Projekt mit Entwickler- und Administratorrollen** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  sourceRepos:
    - '*'
  destinations:
    - name: '*'
      namespace: 'team-a-*'

  roles:
    - name: developer
      description: Developers can sync applications
      policies:
        - p, proj:team-a:developer, applications, sync, team-a/*, allow
        - p, proj:team-a:developer, applications, get, team-a/*, allow
      groups:
        - team-a-developers

    - name: admin
      description: Admins have full access
      policies:
        - p, proj:team-a:admin, applications, *, team-a/*, allow
      groups:
        - team-a-admins
```

Einzelheiten zu Projektrollen, JWT-Token für CI/CD Pipelines und der RBAC-Konfiguration finden Sie unter [Projektrollen](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#project-roles) in der Argo-CD-Dokumentation.

## Allgemeine Muster
<a name="_common_patterns"></a>

### Umweltbezogene Projekte
<a name="_environment_based_projects"></a>

Erstellen Sie separate Projekte für jede Umgebung:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/*'
  destinations:
    - name: prod-cluster
      namespace: '*'
  # Strict resource controls for production
  clusterResourceWhitelist: []
  namespaceResourceWhitelist:
    - group: 'apps'
      kind: Deployment
    - group: ''
      kind: Service
```

### Teambasierte Projekte
<a name="_team_based_projects"></a>

Isolieren Sie Teams mit speziellen Projekten:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: platform-team
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/platform-*'
  destinations:
    - name: '*'
      namespace: 'platform-*'
  # Platform team can manage cluster resources
  clusterResourceWhitelist:
    - group: '*'
      kind: '*'
```

### Projekte mit mehreren Clustern
<a name="_multi_cluster_projects"></a>

Stellen Sie die Lösung auf mehreren Clustern mit konsistenten Richtlinien bereit:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: global-app
  namespace: argocd
spec:
  sourceRepos:
    - 'https://github.com/my-org/global-app'
  destinations:
    - name: us-west-cluster
      namespace: app
    - name: eu-west-cluster
      namespace: app
    - name: ap-south-cluster
      namespace: app
```

## Best Practices
<a name="_best_practices"></a>

 **Beginnen Sie mit restriktiven Projekten**: Beginnen Sie mit engen Berechtigungen und erweitern Sie diese nach Bedarf, anstatt mit einem breiten Zugriff zu beginnen.

 **Verwenden Sie Namespace-Muster**: Nutzen Sie Platzhalter in Namespace-Einschränkungen (wie`team-a-*`), um Flexibilität zu gewährleisten und gleichzeitig die Grenzen beizubehalten.

 **Separate Produktionsprojekte**: Verwenden Sie spezielle Projekte für die Produktion mit strengeren Kontrollen und manuellen Synchronisierungsrichtlinien.

 **Projektzwecke dokumentieren**: Verwenden Sie das `description` Feld, um zu erklären, wofür jedes Projekt gedacht ist und wer es verwenden sollte.

 **Überprüfen Sie die Projektberechtigungen regelmäßig**: Prüfen Sie Projekte regelmäßig, um sicherzustellen, dass die Einschränkungen weiterhin den Teamanforderungen und Sicherheitsanforderungen entsprechen.

## Weitere Ressourcen
<a name="_additional_resources"></a>
+  [Argo-CD-Berechtigungen konfigurieren](argocd-permissions.md)- Konfigurieren Sie die Integration von RBAC und Identity Center
+  [Anwendungen erstellen](argocd-create-application.md)- Erstellen Sie Anwendungen innerhalb von Projekten
+  [Benutzen ApplicationSets](argocd-applicationsets.md)- Verwendung ApplicationSets mit Projekten für Bereitstellungen mit mehreren Clustern
+  [Dokumentation zu Argo CD Projects](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/) — Vollständige Upstream-Referenz

# Anwendungen erstellen
<a name="argocd-create-application"></a>

Anwendungen stellen Bereitstellungen in Zielclustern dar. Jede Anwendung definiert eine Quelle (Git-Repository) und ein Ziel (Cluster und Namespace). Wenn es angewendet wird, erstellt Argo CD die durch Manifeste im Git-Repository angegebenen Ressourcen für den Namespace im Cluster. Anwendungen spezifizieren häufig Workload-Bereitstellungen, können aber alle im Zielcluster verfügbaren Kubernetes-Ressourcen verwalten.

## Voraussetzungen
<a name="_prerequisites"></a>
+ Es wurde ein EKS-Cluster mit der Argo-CD-Funktion erstellt
+ Der Repository-Zugriff ist konfiguriert (siehe[Repository-Zugriff konfigurieren](argocd-configure-repositories.md))
+ Der Zielcluster ist registriert (siehe[Zielcluster registrieren](argocd-register-clusters.md))
+  `kubectl`für die Kommunikation mit Ihrem Cluster konfiguriert

## Erstellen Sie eine Basisanwendung
<a name="_create_a_basic_application"></a>

Definieren Sie eine Anwendung, die aus einem Git-Repository bereitgestellt wird:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: default
```

**Anmerkung**  
Verwenden Sie es `destination.name` mit dem Clusternamen, den Sie bei der Registrierung des Clusters verwendet haben (wie `in-cluster` für den lokalen Cluster). Das `destination.server` Feld funktioniert auch mit EKS-Clustern ARNs, aus Gründen der besseren Lesbarkeit wird jedoch die Verwendung von Clusternamen empfohlen.

Wenden Sie die Anwendung an:

```
kubectl apply -f application.yaml
```

Den Status der Bewerbung anzeigen:

```
kubectl get application guestbook -n argocd
```

## Konfiguration der Quelle
<a name="_source_configuration"></a>

 **Git-Repository**:

```
spec:
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: kubernetes/manifests
```

 **Spezifisches Git-Tag oder Commit**:

```
spec:
  source:
    targetRevision: v1.2.0  # or commit SHA
```

 **Helmdiagramm**:

```
spec:
  source:
    repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - values.yaml
      parameters:
      - name: image.tag
        value: v1.2.0
```

 **Helmdiagramm mit Werten aus dem externen Git-Repository** (Multisource-Muster):

```
spec:
  sources:
  - repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - $values/environments/production/values.yaml
  - repoURL: https://github.com/example/config-repo
    targetRevision: main
    ref: values
```

Weitere Informationen finden Sie unter [Helm Value Files from External Git Repository](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) in der Argo-CD-Dokumentation.

 **Helm-Diagramm aus ECR**:

```
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
```

Wenn die Capability-Rolle über die erforderlichen ECR-Berechtigungen verfügt, wird das Repository direkt verwendet und es ist keine Repository-Konfiguration erforderlich. Details dazu finden Sie unter [Repository-Zugriff konfigurieren](argocd-configure-repositories.md).

 **Git-Repository von CodeCommit**:

```
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Wenn die Capability-Rolle über die erforderlichen CodeCommit Berechtigungen verfügt, wird das Repository direkt verwendet und es ist keine Repository-Konfiguration erforderlich. Details dazu finden Sie unter [Repository-Zugriff konfigurieren](argocd-configure-repositories.md).

 **Git-Repository von CodeConnections**:

```
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Das Repository-URL-Format wird vom CodeConnections Verbindungs-ARN abgeleitet. Wenn die Capability-Rolle über die erforderlichen CodeConnections Berechtigungen verfügt und eine Verbindung konfiguriert ist, wird das Repository direkt verwendet und es ist keine Repository-Konfiguration erforderlich. Details dazu finden Sie unter [Repository-Zugriff konfigurieren](argocd-configure-repositories.md).

 **Anpassen**:

```
spec:
  source:
    repoURL: https://github.com/example/kustomize-app
    targetRevision: main
    path: overlays/production
    kustomize:
      namePrefix: prod-
```

## Richtlinien synchronisieren
<a name="_sync_policies"></a>

Steuern Sie, wie Argo CD Anwendungen synchronisiert.

 **Manuelle Synchronisation (Standard)**:

Für die Synchronisierung von Anwendungen ist eine manuelle Genehmigung erforderlich:

```
spec:
  syncPolicy: {}  # No automated sync
```

Synchronisation manuell auslösen:

```
kubectl patch application guestbook -n argocd \
  --type merge \
  --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'
```

 **Automatische Synchronisation**:

Anwendungen werden automatisch synchronisiert, wenn Git-Änderungen erkannt werden:

```
spec:
  syncPolicy:
    automated: {}
```

 **Selbstheilung**:

Manuelle Änderungen am Cluster automatisch rückgängig machen:

```
spec:
  syncPolicy:
    automated:
      selfHeal: true
```

Wenn diese Option aktiviert ist, macht Argo CD alle manuellen Änderungen rückgängig, die direkt am Cluster vorgenommen wurden, und stellt so sicher, dass Git die Quelle der Wahrheit bleibt.

 **Beschneiden:**

Automatisches Löschen von Ressourcen, die aus Git entfernt wurden:

```
spec:
  syncPolicy:
    automated:
      prune: true
```

**Warnung**  
Durch das Bereinigen werden Ressourcen aus Ihrem Cluster gelöscht. In Produktionsumgebungen mit Vorsicht verwenden.

 **Kombinierte automatische Synchronisation**:

```
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
```

 **Konfiguration erneut versuchen**:

Konfigurieren Sie das Wiederholungsverhalten für fehlgeschlagene Synchronisierungen:

```
spec:
  syncPolicy:
    retry:
      limit: 5  # Number of failed sync attempts; unlimited if less than 0
      backoff:
        duration: 5s  # Amount to back off (default unit: seconds, also supports "2m", "1h")
        factor: 2  # Factor to multiply the base duration after each failed retry
        maxDuration: 3m  # Maximum amount of time allowed for the backoff strategy
```

Dies ist besonders nützlich für Ressourcen, die darauf angewiesen sind, dass CRDs sie zuerst erstellt wurden, oder wenn Sie mit Kro-Instanzen arbeiten, bei denen die CRD möglicherweise nicht sofort verfügbar ist.

## Synchronisierungsoptionen
<a name="_sync_options"></a>

Zusätzliche Synchronisierungskonfiguration:

 **Erstellen Sie einen Namespace, falls er nicht existiert**:

```
spec:
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
```

 **Probelauf wegen fehlender Ressourcen überspringen**:

Nützlich beim Anwenden von Ressourcen, CRDs die davon abhängen, die noch nicht existieren (wie Kro-Instanzen):

```
spec:
  syncPolicy:
    syncOptions:
    - SkipDryRunOnMissingResource=true
```

Dies kann auch auf bestimmte Ressourcen angewendet werden, indem ein Label auf der Ressource selbst verwendet wird.

 **Überprüfen Sie die Ressourcen, bevor Sie sie anwenden**:

```
spec:
  syncPolicy:
    syncOptions:
    - Validate=true
```

 **Nur unsynchron anwenden**:

```
spec:
  syncPolicy:
    syncOptions:
    - ApplyOutOfSyncOnly=true
```

## Erweiterte Synchronisierungsfunktionen
<a name="_advanced_sync_features"></a>

Argo CD unterstützt erweiterte Synchronisierungsfunktionen für komplexe Bereitstellungen:
+  **Sync Waves** — Steuern Sie die Reihenfolge der Ressourcenerstellung mit Anmerkungen `argocd.argoproj.io/sync-wave`
+  **Hooks synchronisieren** — Führt Jobs vor oder nach der Synchronisierung mit `argocd.argoproj.io/hook` Anmerkungen aus (PreSync,, PostSync) SyncFail
+  **Bewertung des Ressourcenzustands** — Benutzerdefinierte Zustandsprüfungen für anwendungsspezifische Ressourcen

Einzelheiten finden Sie unter [Sync Waves](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/) und [Resource Hooks](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) in der Argo-CD-Dokumentation.

## Ignoriere Unterschiede
<a name="_ignore_differences"></a>

Verhindern Sie, dass Argo CD bestimmte Felder synchronisiert, die von anderen Controllern verwaltet werden (wie HPA, das Replikate verwaltet):

```
spec:
  ignoreDifferences:
  - group: apps
    kind: Deployment
    jsonPointers:
    - /spec/replicas
```

Einzelheiten zu Ignorierungsmustern und Feldausschlüssen finden Sie unter [Diffing Customization](https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/) in der Argo-CD-Dokumentation.

## Einsatz in mehreren Umgebungen
<a name="_multi_environment_deployment"></a>

Stellen Sie dieselbe Anwendung in mehreren Umgebungen bereit:

 **Entwicklung**:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-dev
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: develop
    path: overlays/development
  destination:
    name: dev-cluster
    namespace: my-app
```

 **Produktion**:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-prod
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: overlays/production
  destination:
    name: prod-cluster
    namespace: my-app
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
```

## Anwendungen überwachen und verwalten
<a name="_monitor_and_manage_applications"></a>

 **Status der Bewerbung anzeigen**:

```
kubectl get application my-app -n argocd
```

 **Greifen Sie auf die Benutzeroberfläche von Argo CD zu**:

Öffnen Sie die Benutzeroberfläche von Argo CD über die EKS-Konsole, um die Anwendungstopologie, den Synchronisierungsstatus, den Zustand der Ressourcen und den Bereitstellungsverlauf einzusehen. Anweisungen [Arbeiten mit Argo CD](working-with-argocd.md) zum Zugriff auf die Benutzeroberfläche finden Sie unter.

 **Rollback-Anwendungen**:

Rollback zu einer früheren Version mithilfe der Argo-CD-Benutzeroberfläche, der Argo-CD-CLI oder durch Aktualisierung der Anwendungsspezifikation `targetRevision` auf einen früheren Git-Commit oder -Tag.

Verwenden der Argo-CD-CLI:

```
argocd app rollback argocd/my-app <revision-id>
```

**Anmerkung**  
Wenn Sie die Argo CD-CLI mit der verwalteten Funktion verwenden, geben Sie Anwendungen mit dem Namespace-Präfix an:. `namespace/appname`

Weitere Informationen finden Sie unter [argocd app rollback in der Argo-CD-Dokumentation](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_rollback/).

## Weitere Ressourcen
<a name="_additional_resources"></a>
+  [Zusammenarbeit mit Argo CD Projects](argocd-projects.md)- Organisieren Sie Anwendungen mit Projekten für Umgebungen mit mehreren Mandanten
+  [Benutzen ApplicationSets](argocd-applicationsets.md)- Stellen Sie die Lösung mithilfe von Vorlagen auf mehreren Clustern bereit
+  [Anwendungsspezifikation](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) — Vollständige Anwendungs-API-Referenz
+  [Synchronisierungsoptionen](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/) — Erweiterte Synchronisierungskonfiguration

# Benutzen ApplicationSets
<a name="argocd-applicationsets"></a>

ApplicationSets Generieren Sie mehrere Anwendungen anhand von Vorlagen, sodass Sie dieselbe Anwendung mit einer einzigen Ressourcendefinition in mehreren Clustern, Umgebungen oder Namespaces bereitstellen können.

## Voraussetzungen
<a name="_prerequisites"></a>
+ Es wurde ein EKS-Cluster mit der Argo-CD-Funktion erstellt
+ Der Repository-Zugriff ist konfiguriert (siehe[Repository-Zugriff konfigurieren](argocd-configure-repositories.md))
+  `kubectl`für die Kommunikation mit Ihrem Cluster konfiguriert

**Anmerkung**  
Für sind nicht mehrere Zielcluster erforderlich ApplicationSets. Sie können andere Generatoren als den Cluster-Generator (wie Listen-, Git- oder Matrix-Generatoren) verwenden, um Anwendungen ohne Remote-Cluster bereitzustellen.

## Wie ApplicationSets funktionieren
<a name="_how_applicationsets_work"></a>

ApplicationSets Verwenden Sie Generatoren, um Parameter zu erzeugen, und wenden Sie diese Parameter dann auf eine Anwendungsvorlage an. Jeder Satz generierter Parameter erstellt eine Anwendung.

Allgemeine Generatoren für EKS-Bereitstellungen:
+  **Listengenerator** — Definieren Sie explizit Cluster und Parameter für jede Umgebung
+  **Cluster-Generator** — Automatische Bereitstellung auf allen registrierten Clustern
+  **Git Generator - Generieren** Sie Anwendungen aus der Repository-Struktur
+  **Matrixgenerator** — Kombinieren Sie Generatoren für mehrdimensionale Bereitstellungen
+  **Generator zusammenführen** — Fügt Parameter aus mehreren Generatoren zusammen

Eine vollständige Generator-Referenz finden Sie in der [ApplicationSet Dokumentation](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/).

## Listengenerator
<a name="_list_generator"></a>

Bereitstellung auf mehreren Clustern mit expliziter Konfiguration:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: guestbook-all-clusters
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - environment: dev
        replicas: "2"
      - environment: staging
        replicas: "3"
      - environment: prod
        replicas: "5"
  template:
    metadata:
      name: 'guestbook-{{environment}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/guestbook
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{environment}}-cluster'
        namespace: guestbook
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

**Anmerkung**  
Zur besseren Lesbarkeit `destination.name` zusammen mit Clusternamen verwenden. Das `destination.server` Feld funktioniert bei ARNs Bedarf auch mit EKS-Clustern.

Dadurch werden drei Anwendungen erstellt: `guestbook-dev``guestbook-staging`, und`guestbook-prod`.

## Clustergenerator
<a name="_cluster_generator"></a>

Automatisch auf allen registrierten Clustern bereitstellen:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cluster-addons
  namespace: argocd
spec:
  generators:
  - clusters: {}
  template:
    metadata:
      name: '{{name}}-addons'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/cluster-addons
        targetRevision: HEAD
        path: addons
      destination:
        server: '{{server}}'
        namespace: kube-system
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

Dadurch wird automatisch eine Anwendung für jeden registrierten Cluster erstellt.

 **Cluster filtern**:

Wird verwendet`matchLabels`, um bestimmte Cluster einzubeziehen oder `matchExpressions` um Cluster auszuschließen:

```
spec:
  generators:
  - clusters:
      selector:
        matchLabels:
          environment: production
        matchExpressions:
        - key: skip-appset
          operator: DoesNotExist
```

## Git-Generatoren
<a name="_git_generators"></a>

Git-Generatoren erstellen Anwendungen, die auf der Repository-Struktur basieren:
+  **Verzeichnisgenerator** — Stellen Sie jedes Verzeichnis als separate Anwendung bereit (nützlich für Microservices)
+  **Dateigenerator — Generieren** Sie Anwendungen aus Parameterdateien (nützlich für Bereitstellungen mit mehreren Mandanten)

 **Beispiel: Bereitstellung von Microservices** 

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: microservices
  namespace: argocd
spec:
  generators:
  - git:
      repoURL: https://github.com/example/microservices
      revision: HEAD
      directories:
      - path: services/*
  template:
    metadata:
      name: '{{path.basename}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/microservices
        targetRevision: HEAD
        path: '{{path}}'
      destination:
        name: my-cluster
        namespace: '{{path.basename}}'
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
        - CreateNamespace=true
```

Einzelheiten zu Git-Generatoren und dateibasierter Konfiguration finden Sie unter [Git Generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) in der Argo-CD-Dokumentation.

## Matrixgenerator
<a name="_matrix_generator"></a>

Kombinieren Sie mehrere Generatoren, um sie in mehreren Dimensionen (Umgebungen × Cluster) einzusetzen:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: multi-env-multi-cluster
  namespace: argocd
spec:
  generators:
  - matrix:
      generators:
      - list:
          elements:
          - environment: dev
          - environment: staging
          - environment: prod
      - clusters:
          selector:
            matchLabels:
              region: us-west-2
  template:
    metadata:
      name: 'app-{{environment}}-{{name}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{name}}'
        namespace: 'app-{{environment}}'
```

Einzelheiten zur Kombination von Generatoren finden Sie unter [Matrix Generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) in der Argo-CD-Dokumentation.

## Einsatz in mehreren Regionen
<a name="_multi_region_deployment"></a>

Bereitstellung auf Clustern in mehreren Regionen:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: global-app
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - clusterName: prod-us-west
        region: us-west-2
      - clusterName: prod-us-east
        region: us-east-1
      - clusterName: prod-eu-west
        region: eu-west-1
  template:
    metadata:
      name: 'app-{{region}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: kubernetes
        helm:
          parameters:
          - name: region
            value: '{{region}}'
      destination:
        name: '{{clusterName}}'
        namespace: app
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

## Verwalten ApplicationSets
<a name="_manage_applicationsets"></a>

 **Anwendungen anzeigen ApplicationSets und generieren**:

```
kubectl get applicationsets -n argocd
kubectl get applications -n argocd -l argocd.argoproj.io/application-set-name=<applicationset-name>
```

 **Aktualisieren und ApplicationSet**:

Ändern Sie die ApplicationSet Spezifikation und wenden Sie sie erneut an. Argo CD aktualisiert automatisch alle generierten Anwendungen:

```
kubectl apply -f applicationset.yaml
```

 **Löschen Sie und ApplicationSet**:

```
kubectl delete applicationset <name> -n argocd
```

**Warnung**  
Beim Löschen und ApplicationSet Löschen aller generierten Anwendungen werden alle generierten Anwendungen gelöscht. Wenn dies bei diesen Anwendungen der Fall ist`prune: true`, werden ihre Ressourcen ebenfalls aus den Zielclustern gelöscht.  
Um bereitgestellte Ressourcen beim Löschen eines `.syncPolicy.preserveResourcesOnDeletion` zu erhalten ApplicationSet, ist `true` in der ApplicationSet Spezifikation auf festgelegt. Weitere Informationen finden Sie unter [Anwendungsbereinigung und Löschen von Ressourcen](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Application-Deletion/) in der Argo-CD-Dokumentation.

**Wichtig**  
Die ApplicationSets Funktion von Argo CD beinhaltet Sicherheitsaspekte, die Sie vor der Verwendung beachten sollten. ApplicationSets Weitere Informationen finden Sie in der Argo-CD-Dokumentation unter [ApplicationSet Sicherheit](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Security/).

## Weitere Ressourcen
<a name="_additional_resources"></a>
+  [Zusammenarbeit mit Argo CD Projects](argocd-projects.md)- Organisieren Sie ApplicationSets mit Projekten
+  [Anwendungen erstellen](argocd-create-application.md)- Verstehen Sie die Anwendungskonfiguration
+  [ApplicationSet Dokumentation](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/) — Vollständige Generatorreferenz und Muster
+  [Generator-Referenz](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators/) — Detaillierte Generatorspezifikationen

# Überlegungen zu Argo CD
<a name="argocd-considerations"></a>

In diesem Thema werden wichtige Überlegungen zur Nutzung der EKS-Funktion für Argo CD behandelt, darunter Planung, Berechtigungen, Authentifizierung und Bereitstellungsmuster für mehrere Cluster.

## Planung
<a name="_planning"></a>

Beachten Sie vor der Bereitstellung von Argo CD Folgendes:

 **Repository-Strategie**: Legen Sie fest, wo Ihre Anwendungsmanifeste gespeichert werden (CodeCommit,, GitHub GitLab, Bitbucket). Plane deine Repository-Struktur und Branching-Strategie für verschiedene Umgebungen.

 **RBAC-Strategie**: Planen Sie, welche Teams oder Benutzer Administrator-, Redakteur- oder Viewer-Zugriff haben sollen. Ordnen Sie diese AWS Identity Center-Gruppen oder Argo-CD-Rollen zu.

 **Multi-Cluster-Architektur**: Stellen Sie fest, ob Sie mehrere Cluster von einer einzigen Argo-CD-Instance aus verwalten möchten. Erwägen Sie die Verwendung eines dedizierten Management-Clusters für Argo CD.

 **Organisation der Anwendungen**: Planen Sie, wie Sie Anwendungen strukturieren und ApplicationSets. Erwägen Sie die Verwendung von Projekten, um Anwendungen nach Team oder Umgebung zu organisieren.

 **Synchronisierungsrichtlinien**: Entscheiden Sie, ob Anwendungen automatisch synchronisiert werden sollen oder ob eine manuelle Genehmigung erforderlich ist. Automatisierte Synchronisation ist in der Entwicklung üblich, manuelle in der Produktion.

## Berechtigungen
<a name="_permissions"></a>

Ausführliche Informationen zu IAM-Fähigkeitsrollen, Vertrauensrichtlinien und bewährten Sicherheitsmethoden finden Sie unter [IAM-Rolle für Amazon EKS-Funktionen](capability-role.md) und[Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md).

### Überblick über die IAM-Fähigkeitsrollen
<a name="_iam_capability_role_overview"></a>

Wenn Sie eine Argo-CD-Funktionsressource erstellen, geben Sie eine IAM-Fähigkeitsrolle an. Im Gegensatz zu ACK verwaltet Argo CD hauptsächlich Kubernetes-Ressourcen, nicht Ressourcen direkt. AWS Die IAM-Capability Role ist jedoch erforderlich für:
+ Zugriff auf private Git-Repositorys in CodeCommit
+ Integration mit AWS Identity Center zur Authentifizierung
+ Zugreifen auf AWS Geheimnisse im Secrets Manager (falls konfiguriert)
+ Clusterübergreifende Bereitstellungen auf anderen EKS-Clustern

### CodeCommit Integration
<a name="_codecommit_integration"></a>

Wenn Sie CodeCommit Repositorys verwenden, fügen Sie eine Richtlinie mit Leseberechtigungen hinzu:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "*"
    }
  ]
}
```

**Wichtig**  
Beschränken Sie das `Resource` Feld für Produktionszwecke auf ein bestimmtes Repository, ARNs anstatt es zu verwenden`"*"`.  
Beispiel:  

```
"Resource": "arn:aws:codecommit:us-west-2:111122223333:my-app-repo"
```
Dadurch wird der Zugriff der Argo-CD-Funktion nur auf die Repositorys beschränkt, die sie verwalten muss.

### Integration von Secrets Manager
<a name="_secrets_manager_integration"></a>

Wenn Sie Repository-Anmeldeinformationen in Secrets Manager speichern, fügen Sie die verwaltete Richtlinie für den Lesezugriff hinzu:

```
arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess
```

Diese Richtlinie umfasst die erforderlichen Berechtigungen: `secretsmanager:GetSecretValue``secretsmanager:DescribeSecret`, und KMS-Entschlüsselungsberechtigungen.

### Grundlegende Einrichtung
<a name="_basic_setup"></a>

Für die grundlegende Funktionalität von Argo CD mit öffentlichen Git-Repositorys sind außer der Vertrauensrichtlinie keine zusätzlichen IAM-Richtlinien erforderlich.

## Authentifizierung
<a name="_authentication"></a>

### AWS Identity Center-Integration
<a name="shared_aws_identity_center_integration"></a>

Die verwaltete Funktion von Argo CD lässt sich direkt in AWS Identity Center (früher AWS SSO) integrieren, sodass Sie Ihren vorhandenen Identitätsanbieter für die Authentifizierung verwenden können.

Wenn Sie die AWS Identity Center-Integration konfigurieren:

1. Benutzer greifen über die EKS-Konsole auf die Benutzeroberfläche von Argo CD zu

1. Sie authentifizieren sich mithilfe von AWS Identity Center (das eine Verbindung zu Ihrem Corporate Identity Provider herstellen kann)

1.  AWS Identity Center stellt Benutzer- und Gruppeninformationen für Argo CD bereit

1. Argo CD ordnet Benutzer und Gruppen basierend auf Ihrer Konfiguration RBAC-Rollen zu

1. Benutzer sehen nur die Anwendungen und Ressourcen, für deren Zugriff sie berechtigt sind

### Vereinfachung des Zugriffs mit Identity Center-Berechtigungssätzen
<a name="_simplifying_access_with_identity_center_permission_sets"></a>

 AWS Identity Center bietet bei der Arbeit mit Argo CD zwei unterschiedliche Authentifizierungspfade:

 **Argo CD API-Authentifizierung**: Identity Center bietet SSO-Authentifizierung für die Benutzeroberfläche und API von Argo CD. Dies wird über die RBAC-Rollenzuordnungen der Argo-CD-Funktion konfiguriert.

 **EKS-Clusterzugriff**: Die Argo-CD-Funktion verwendet die vom Kunden bereitgestellte IAM-Rolle, um sich über Zugriffseinträge bei EKS-Clustern zu authentifizieren. Diese Zugriffseinträge können manuell konfiguriert werden, um Berechtigungen hinzuzufügen oder zu entfernen.

Sie können [Identity Center-Berechtigungssätze](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) verwenden, um das Identitätsmanagement zu vereinfachen, indem Sie einer einzigen Identität den Zugriff auf Argo CD- und EKS-Cluster ermöglichen. Dies reduziert den Aufwand, da Sie nur eine Identität auf beiden Systemen verwalten müssen, anstatt separate Anmeldeinformationen für den Argo-CD-Zugriff und den Clusterzugriff zu verwalten.

### RBAC-Rollenzuordnungen
<a name="_rbac_role_mappings"></a>

Argo CD verfügt über integrierte Rollen, die Sie AWS Identity Center-Benutzern und Gruppen zuordnen können:

 **ADMIN**: Vollzugriff auf alle Anwendungen und Einstellungen. Kann Anwendungen erstellen, aktualisieren und löschen. Kann die Argo-CD-Konfiguration verwalten.

 **EDITOR**: Kann Anwendungen erstellen und ändern. Die Argo-CD-Einstellungen können nicht geändert oder Anwendungen gelöscht werden.

 **VIEWER**: Schreibgeschützter Zugriff auf Anwendungen. Kann den Status und den Verlauf der Bewerbung einsehen. Es können keine Änderungen vorgenommen werden.

**Anmerkung**  
Bei Rollennamen wird zwischen Groß- und Kleinschreibung unterschieden und sie müssen in Großbuchstaben geschrieben werden (ADMIN, EDITOR, VIEWER).

**Wichtig**  
Die Integration von EKS Capabilities in AWS Identity Center unterstützt bis zu 1.000 Identitäten pro Argo-CD-Funktion. Eine Identität kann ein Benutzer oder eine Gruppe sein.

## Bereitstellungen mit mehreren Clustern
<a name="_multi_cluster_deployments"></a>

Die verwaltete Argo-CD-Funktion unterstützt Bereitstellungen mit mehreren Clustern, sodass Sie Anwendungen für Entwicklungs-, Staging- und Produktionscluster von einer einzigen Argo-CD-Instance aus verwalten können.

### So funktioniert Multi-Cluster
<a name="_how_multi_cluster_works"></a>

Wenn Sie zusätzliche Cluster bei Argo CD registrieren:

1. Sie erstellen Clustergeheimnisse, die per ARN auf EKS-Zielcluster verweisen.

1. Sie erstellen Anwendungen oder ApplicationSets die auf verschiedene Cluster abzielen

1. Argo CD stellt eine Verbindung zu jedem Cluster her, um Ressourcen bereitzustellen und zu überwachen

1. Sie können alle Cluster von einer einzigen Argo-CD-Benutzeroberfläche aus anzeigen und verwalten

### Voraussetzungen für Multi-Cluster
<a name="_prerequisites_for_multi_cluster"></a>

Bevor Sie weitere Cluster registrieren:
+ Erstellen Sie einen Access-Eintrag auf dem Zielcluster für die Argo-CD-Capability-Rolle
+ Stellen Sie die Netzwerkkonnektivität zwischen der Argo-CD-Funktion und den Zielclustern sicher
+ Überprüfen Sie die IAM-Berechtigungen für den Zugriff auf die Zielcluster

### Registrieren Sie einen Cluster
<a name="_register_a_cluster"></a>

Registrieren Sie Cluster mithilfe von Kubernetes Secrets im `argocd` Namespace.

Rufen Sie den Zielcluster-ARN ARN. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Zielcluster befindet, und *target-cluster* ersetzen Sie es durch den Namen Ihres Zielclusters.

```
aws eks describe-cluster \
  --region region-code \
  --name target-cluster \
  --query 'cluster.arn' \
  --output text
```

Erstellen Sie mit dem Cluster-ARN ein Cluster-Geheimnis:

```
apiVersion: v1
kind: Secret
metadata:
  name: target-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
type: Opaque
stringData:
  name: target-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/target-cluster
  project: default
```

**Wichtig**  
Verwenden Sie den EKS-Cluster-ARN im `server` Feld, nicht die Kubernetes-API-Server-URL. Die verwaltete Funktion erfordert die Identifizierung ARNs von Zielclustern.

Wenden Sie das Geheimnis an:

```
kubectl apply -f cluster-secret.yaml
```

### Access Entry auf dem Zielcluster konfigurieren
<a name="_configure_access_entry_on_target_cluster"></a>

Der Zielcluster muss über einen Access-Eintrag verfügen, der der Argo-CD-Capability-Rolle die Berechtigung zur Bereitstellung von Anwendungen erteilt. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Zielcluster befindet, *target-cluster* ersetzen Sie es durch den Namen Ihres Zielclusters und ersetzen Sie den ARN durch den ARN Ihrer Argo-CD-Funktionsrolle.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD \
  --kubernetes-groups system:masters
```

**Anmerkung**  
Für den Einsatz in der Produktion sollten Sie erwägen, restriktivere Kubernetes-Gruppen anstelle von zu verwenden. `system:masters`

### Privater Cluster-Zugriff
<a name="_private_cluster_access"></a>

Die verwaltete Argo-CD-Funktion kann auf vollständig privaten EKS-Clustern bereitgestellt werden, ohne dass VPC-Peering oder eine spezielle Netzwerkkonfiguration erforderlich sind. AWS verwaltet automatisch die Konnektivität zwischen der Argo-CD-Funktion und privaten Remote-Clustern. Stellen Sie sicher, dass Ihre Repository-Zugriffskontrollen und die Argo CD RBAC-Richtlinien ordnungsgemäß konfiguriert sind.

### Kontoübergreifende Bereitstellungen
<a name="_cross_account_deployments"></a>

Für kontoübergreifende Bereitstellungen fügen Sie die Argo CD IAM Capability Role aus dem Quellkonto zum EKS-Zugriffseintrag des Zielclusters hinzu:

1. Erstellen Sie im Zielkonto einen Access-Eintrag auf dem EKS-Zielcluster

1. Verwenden Sie den Argo CD IAM Capability Role ARN aus dem Quellkonto als Principal

1. Konfigurieren Sie die entsprechenden Kubernetes-RBAC-Berechtigungen für den Access-Eintrag

1. Registrieren Sie den Zielcluster in Argo CD mit seinem EKS-Cluster-ARN

Es ist keine zusätzliche IAM-Rollenerstellung oder Konfiguration von Vertrauensrichtlinien erforderlich — EKS Access Entries kümmern sich um den kontoübergreifenden Zugriff.

## Best Practices
<a name="_best_practices"></a>

 **Verwenden Sie deklarative Quellen als Informationsquelle**: Speichern Sie alle Ihre Anwendungsmanifeste in deklarativen Quellen (Git-Repositorys, Helm-Registries oder OCI-Images), um Versionskontrolle, Audit-Trails und Zusammenarbeit zu ermöglichen.

 **Richtiges RBAC implementieren**: Verwenden Sie die AWS Identity Center-Integration, um zu kontrollieren, wer auf Anwendungen in Argo CD zugreifen und diese verwalten kann. Argo CD unterstützt eine differenzierte Zugriffskontrolle auf Ressourcen innerhalb von Anwendungen (Deployments, Pods, Secrets). ConfigMaps

 **Verwendung ApplicationSets für Bereitstellungen in mehreren Umgebungen**: Wird verwendet, ApplicationSets um Anwendungen in mehreren Clustern oder Namespaces mit unterschiedlichen Konfigurationen bereitzustellen.

## Lebenszyklusmanagement
<a name="_lifecycle_management"></a>

### Richtlinien zur Anwendungssynchronisierung
<a name="_application_sync_policies"></a>

Steuern Sie, wie Argo CD Anwendungen synchronisiert:

 **Manuelle Synchronisierung**: Anwendungen müssen manuell genehmigt werden, um Änderungen zu synchronisieren. Für **Produktionsumgebungen** empfohlen.

 **Automatische Synchronisierung**: Anwendungen werden automatisch synchronisiert, wenn Git-Änderungen erkannt werden. Häufig in Entwicklungs- und Staging-Umgebungen.

 **Selbstheilung**: Automatische Wiederherstellung manueller Änderungen am Cluster. Stellt sicher, dass der Clusterstatus mit Git übereinstimmt.

 **Bereinigen**: Automatisches Löschen von Ressourcen, die aus Git entfernt wurden. Verwenden Sie dies mit Vorsicht, da dadurch Ressourcen gelöscht werden können.

### Integrität der Anwendung
<a name="_application_health"></a>

Argo CD überwacht kontinuierlich den Zustand der Anwendung:
+  **Fehlerfrei**: Alle Ressourcen laufen wie erwartet
+  **Fortschritt**: Ressourcen werden erstellt oder aktualisiert
+  **Eingeschränkt**: Einige Ressourcen sind nicht funktionsfähig
+  **Ausgesetzt**: Die Anwendung wurde angehalten
+  **Fehlt**: Ressourcen fehlen im Cluster

### Synchronisieren Sie Fenster
<a name="_sync_windows"></a>

Konfigurieren Sie Synchronisierungsfenster, um zu steuern, wann Anwendungen synchronisiert werden können:
+ Synchronisierungen nur während Wartungsfenstern zulassen
+ Blockieren Sie Synchronisierungen während der Geschäftszeiten
+ Planen Sie automatische Synchronisierungen für bestimmte Zeiten
+ Verwenden Sie Synchronisierungsfenster in Situationen, in denen Sie Änderungen vornehmen und Synchronisierungen beenden müssen (Break-Glass-Szenarien)

## Webhook-Konfiguration für eine schnellere Synchronisierung
<a name="_webhook_configuration_for_faster_sync"></a>

Standardmäßig fragt Argo CD alle 6 Minuten Git-Repositorys ab, um Änderungen zu erkennen. Für reaktionsschnellere Bereitstellungen konfigurieren Sie Git-Webhooks so, dass sie sofortige Synchronisierungen auslösen, wenn Änderungen übertragen werden.

Webhooks bieten mehrere Vorteile:
+ Sofortige Synchronisierungsreaktion, wenn Code übertragen wird (Sekunden statt Minuten)
+ Reduzierter Mehraufwand für Abfragen und verbesserte Systemleistung
+ Effizientere Nutzung von API-Ratenbegrenzungen
+ Bessere Benutzererfahrung mit schnellerem Feedback

### Webhook-Endpunkt
<a name="_webhook_endpoint"></a>

Die Webhook-URL folgt dem Muster`${serverUrl}/api/webhook`, wo sich Ihre Argo-CD-Server-URL `serverUrl` befindet.

Wenn Ihre Argo-CD-Server-URL beispielsweise lautet`https://abc123.eks-capabilities.us-west-2.amazonaws.com`, lautet die Webhook-URL:

```
https://abc123.eks-capabilities.us-west-2.amazonaws.com/api/webhook
```

### Webhooks nach Git-Anbieter konfigurieren
<a name="_configure_webhooks_by_git_provider"></a>

 **GitHub**: Fügen Sie in Ihren Repository-Einstellungen einen Webhook mit der Argo CD-Webhook-URL hinzu. Stellen Sie den Inhaltstyp auf ein `application/json` und wählen Sie „Nur das Push-Ereignis“.

 **GitLab**: Fügen Sie in Ihren Projekteinstellungen einen Webhook mit der Argo CD-Webhook-URL hinzu. Aktivieren Sie „Push-Ereignisse“ und optional „Tag-Push-Ereignisse“.

 **Bitbucket**: Fügen Sie in Ihren Repository-Einstellungen einen Webhook mit der Argo CD-Webhook-URL hinzu. Wählen Sie „Repository-Push“ als Auslöser aus.

 **CodeCommit**: Erstellen Sie eine EventBridge Amazon-Regel, die bei Änderungen des CodeCommit Repository-Status ausgelöst wird und Benachrichtigungen an den Argo CD-Webhook-Endpunkt sendet.

Eine ausführliche Anleitung zur Webhook-Konfiguration finden Sie unter [Argo](https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/) CD Webhook-Konfiguration.

**Anmerkung**  
Webhooks ergänzen das Polling — sie ersetzen es nicht. Argo CD fragt weiterhin Repositorys als Ausweichmechanismus für den Fall ab, dass Webhook-Benachrichtigungen übersehen werden.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Erfahren Sie, wie Sie Argo CD-Anwendungen erstellen und verwalten
+  [Probleme mit den Funktionen von Argo CD beheben](argocd-troubleshooting.md)- Beheben Sie Probleme mit Argo CD
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalten Sie Ihre Argo-CD-Funktionsressourcen

# Probleme mit den Funktionen von Argo CD beheben
<a name="argocd-troubleshooting"></a>

Dieses Thema enthält Anleitungen zur Fehlerbehebung für die EKS-Capability for Argo-CD, einschließlich Funktionsprüfungen, Problemen mit der Anwendungssynchronisierung, Repository-Authentifizierung und Bereitstellungen in mehreren Clustern.

**Anmerkung**  
Die EKS-Funktionen werden vollständig verwaltet und außerhalb Ihres Clusters ausgeführt. Sie haben keinen Zugriff auf die Argo CD-Serverprotokolle oder den `argocd` Namespace. Die Fehlerbehebung konzentriert sich auf den Zustand der Funktionen, den Anwendungsstatus und die Konfiguration.

## Die Funktion ist AKTIV, aber die Anwendungen werden nicht synchronisiert
<a name="_capability_is_active_but_applications_arent_syncing"></a>

Wenn Ihre Argo-CD-Funktion `ACTIVE` den Status anzeigt, Anwendungen aber nicht synchronisiert werden, überprüfen Sie den Funktionsstatus und den Anwendungsstatus.

 **Überprüfen Sie den Zustand der Funktionen**:

Sie können Funktionszustands- und Statusprobleme in der EKS-Konsole oder über die AWS CLI anzeigen.

 **Konsole**:

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus.

1. Wählen Sie den Registerkarte **Beobachtbarkeit**.

1. Wählen Sie **Cluster überwachen** aus.

1. Wählen Sie die Registerkarte **Funktionen**, um den Zustand und den Status aller Funktionen anzuzeigen.

 ** AWS CLI**:

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd

# Look for issues in the health section
```

 **Häufige Ursachen:**
+  **Repository nicht konfiguriert**: Git-Repository wurde nicht zur Argo-CD hinzugefügt
+  **Authentifizierung fehlgeschlagen**: SSH-Schlüssel, Token oder CodeCommit Anmeldeinformationen sind ungültig
+  **Anwendung nicht erstellt**: Im Cluster sind keine Anwendungsressourcen vorhanden
+  **Synchronisierungsrichtlinie**: Manuelle Synchronisierung erforderlich (automatische Synchronisierung nicht aktiviert)
+  **IAM-Berechtigungen**: Fehlende Berechtigungen für CodeCommit oder Secrets Manager

 **Überprüfen Sie den Status der Bewerbung**:

```
# List applications
kubectl get application -n argocd

# View sync status
kubectl get application my-app -n argocd -o jsonpath='{.status.sync.status}'

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

 **Überprüfen Sie die Bewerbungsbedingungen**:

```
# Describe application to see detailed status
kubectl describe application my-app -n argocd

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

## Anwendungen bleiben im Status „In Bearbeitung“ hängen
<a name="_applications_stuck_in_progressing_state"></a>

Wenn eine Anwendung angezeigt wird, `Progressing` aber nie erreicht wird`Healthy`, überprüfen Sie den Ressourcenstatus und die Ereignisse der Anwendung.

 **Überprüfen Sie den Zustand der Ressourcen**:

```
# View application resources
kubectl get application my-app -n argocd -o jsonpath='{.status.resources}'

# Check for unhealthy resources
kubectl describe application my-app -n argocd | grep -A 10 "Health Status"
```

 **Häufige Ursachen:**
+  **Bereitstellung nicht bereit**: Pods können nicht gestartet werden oder Bereitschaftstests schlagen fehl
+  **Ressourcenabhängigkeiten**: Ressourcen, die darauf warten, dass andere Ressourcen bereit sind
+  **Fehler beim Abrufen von** Bildern: Auf Container-Images kann nicht zugegriffen werden
+  **Unzureichende Ressourcen**: Dem Cluster fehlt es an CPU oder Arbeitsspeicher für Pods

 **Überprüfen Sie die Zielclusterkonfiguration** (für Multi-Cluster-Setups):

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# View cluster secret details
kubectl get secret cluster-secret-name -n argocd -o yaml
```

## Fehler beim Repository-Authentifizierung
<a name="_repository_authentication_failures"></a>

Wenn Argo CD nicht auf Ihre Git-Repositorys zugreifen kann, überprüfen Sie die Authentifizierungskonfiguration.

 **Für CodeCommit ** Repositorys:

Stellen Sie sicher, dass die IAM-Capability-Rolle über Berechtigungen verfügt CodeCommit :

```
# View IAM policies
aws iam list-attached-role-policies --role-name my-argocd-capability-role
aws iam list-role-policies --role-name my-argocd-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-argocd-capability-role --policy-name policy-name
```

Die Rolle benötigt eine `codecommit:GitPull` Genehmigung für die Repositorys.

 **Für private Git-Repositorys**:

Stellen Sie sicher, dass die Repository-Anmeldeinformationen korrekt konfiguriert sind:

```
# Check repository secret exists
kubectl get secret -n argocd repo-secret-name -o yaml
```

Stellen Sie sicher, dass das Geheimnis die richtigen Authentifizierungsdaten (SSH-Schlüssel, Token oder Benutzername/Passwort) enthält.

 **Für Repositorien, die Secrets Manager verwenden**:

```
# Verify IAM Capability Role has Secrets Manager permissions
aws iam list-attached-role-policies --role-name my-argocd-capability-role

# Test secret retrieval
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:region-code:111122223333:secret:my-secret
```

## Probleme bei der Bereitstellung mehrerer Cluster
<a name="_multi_cluster_deployment_issues"></a>

Wenn Anwendungen nicht auf Remote-Clustern bereitgestellt werden, überprüfen Sie die Clusterregistrierung und die Zugriffskonfiguration.

 **Überprüfen Sie die Clusterregistrierung**:

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# Verify cluster secret format
kubectl get secret CLUSTER_SECRET_NAME -n argocd -o yaml
```

Stellen Sie sicher, dass das `server` Feld den EKS-Cluster-ARN und nicht die Kubernetes-API-URL enthält.

 **Überprüfen Sie den Zugriffseintrag für den Zielcluster**:

Überprüfen Sie auf dem Zielcluster, ob die Argo-CD-Capability-Rolle über einen Zugriffseintrag verfügt:

```
# List access entries (run on target cluster or use AWS CLI)
aws eks list-access-entries --cluster-name target-cluster

# Describe specific access entry
aws eks describe-access-entry \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/my-argocd-capability-role
```

 **Überprüfen Sie die IAM-Berechtigungen für kontoübergreifend**:

Stellen Sie bei kontoübergreifenden Bereitstellungen sicher, dass die Argo-CD-Capability-Rolle über einen Zugriffseintrag auf dem Zielcluster verfügt. Die verwaltete Funktion verwendet EKS-Zugriffseinträge für den kontoübergreifenden Zugriff und nicht für die Übernahme von IAM-Rollen.

Weitere Informationen zur Konfiguration mehrerer Cluster finden Sie unter. [Zielcluster registrieren](argocd-register-clusters.md)

## Nächste Schritte
<a name="_next_steps"></a>
+  [Überlegungen zu Argo CD](argocd-considerations.md)- Überlegungen und bewährte Verfahren für Argo CD
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Erstellen und verwalten Sie Argo CD-Anwendungen
+  [Zielcluster registrieren](argocd-register-clusters.md)- Konfigurieren Sie Bereitstellungen mit mehreren Clustern
+  [Problembehebung bei EKS-Funktionen](capabilities-troubleshooting.md)- Allgemeine Hinweise zur Problembehebung

# Vergleich der EKS-Funktionen für Argo CD mit selbstverwalteter Argo-CD
<a name="argocd-comparison"></a>

Die EKS-Funktion für Argo CD bietet ein vollständig verwaltetes Argo-CD-Erlebnis, das in EKS ausgeführt wird. Einen allgemeinen Vergleich zwischen EKS-Funktionen und selbstverwalteten Lösungen finden Sie unter. [Überlegungen zu den EKS-Fähigkeiten](capabilities-considerations.md) Dieses Thema konzentriert sich auf die spezifischen Unterschiede zwischen Argo CD, einschließlich Authentifizierung, Multi-Cluster-Management und Unterstützung von Upstream-Funktionen.

## Unterschiede zur Upstream-Version von Argo CD
<a name="_differences_from_upstream_argo_cd"></a>

Die EKS-Funktion für Argo CD basiert auf der Upstream-Argo-CD, unterscheidet sich jedoch darin, wie auf sie zugegriffen wird, wie sie konfiguriert und in Dienste integriert wird. AWS 

 **RBAC und Authentifizierung**: Die Funktion umfasst drei RBAC-Rollen (Admin, Editor, Viewer) und verwendet AWS Identity Center für die Authentifizierung anstelle der integrierten Authentifizierung von Argo CD. Konfigurieren Sie Rollenzuordnungen über den `rbacRoleMapping` Parameter der Funktion, um Identity Center-Gruppen Argo-CD-Rollen zuzuordnen, nicht über Argo-CDs. `argocd-rbac-cm` ConfigMap Die Benutzeroberfläche von Argo CD wird mit einer eigenen direkten URL gehostet (diese finden Sie in der EKS-Konsole unter dem Tab Capabilities Ihres Clusters), und der API-Zugriff erfolgt über AWS Authentifizierung und Autorisierung über IAM.

 **Cluster-Konfiguration**: Die Funktion konfiguriert nicht automatisch lokale Cluster oder hub-and-spoke Topologien. Sie konfigurieren Ihre Bereitstellungszielcluster und EKS-Zugriffseinträge. Die Funktion unterstützt nur Amazon EKS-Cluster als Bereitstellungsziele, die den EKS-Cluster ARNs (nicht den Kubernetes-API-Server URLs) verwenden. Die Funktion fügt den lokalen Cluster (`kubernetes.default.svc`) nicht automatisch als Bereitstellungsziel hinzu. Um die Bereitstellung auf demselben Cluster durchzuführen, auf dem die Funktion erstellt wurde, registrieren Sie diesen Cluster explizit mit seinem ARN.

 **Vereinfachter Remote-Cluster-Zugriff**: Die Funktion vereinfacht Bereitstellungen auf mehreren Clustern, indem mithilfe von EKS-Zugriffseinträgen Argo-CD-Zugriff auf Remote-Cluster gewährt wird. Dadurch entfällt die Notwendigkeit, IAM-Rollen für Dienstkonten (IRSA) zu konfigurieren oder kontenübergreifende IAM-Rollenannahmen einzurichten. Die Funktion bietet auch transparenten Zugriff auf vollständig private EKS-Cluster, ohne dass VPC-Peering oder eine spezielle Netzwerkkonfiguration erforderlich sind. Die Konnektivität zwischen der Argo-CD-Funktion und privaten Remote-Clustern wird automatisch AWS verwaltet.

 **Direkte AWS Serviceintegration**: Die Funktion ermöglicht die direkte Integration mit AWS Diensten über die IAM-Berechtigungen der Capability Role. Sie können CodeCommit Repositorys, ECR-Helm-Diagramme und CodeConnections direkt in Anwendungsressourcen referenzieren, ohne Repository-Konfigurationen erstellen zu müssen. Dies vereinfacht die Authentifizierung und macht die Verwaltung separater Anmeldeinformationen für AWS Dienste überflüssig. Details dazu finden Sie unter [Repository-Zugriff konfigurieren](argocd-configure-repositories.md).

 **Namespace-Unterstützung**: Für diese Funktion müssen Sie einen einzelnen Namespace angeben, ApplicationSet in dem Argo CD Application und AppProject benutzerdefinierte Ressourcen erstellt werden müssen.

**Anmerkung**  
Diese Namespace-Beschränkung gilt nur für die eigenen benutzerdefinierten Ressourcen von Argo CD (Application,,). ApplicationSet AppProject Ihre Anwendungs-Workloads können in jedem Namespace in jedem Zielcluster bereitgestellt werden. Wenn Sie die Funktion beispielsweise mit Namespace erstellen`argocd`, CRs müssen alle Anwendungen im Namespace erstellt werden, aber diese Anwendungen können Workloads in,, oder jedem anderen `argocd` Namespace bereitstellen. `default` `production` `staging`

**Anmerkung**  
Die verwaltete Funktion hat spezifische Anforderungen an die Verwendung und AppProject Konfiguration der CLI:  
Wenn Sie die Argo-CD-CLI verwenden, geben Sie Anwendungen mit dem Namespace-Präfix an: `argocd app sync namespace/appname` 
AppProject Ressourcen müssen angeben`.spec.sourceNamespaces`, um zu definieren, welche Namespaces das Projekt nach Anwendungen durchsuchen kann (normalerweise auf den Namespace gesetzt, den Sie bei der Erstellung der Funktion angegeben haben)
Anmerkungen zur Ressourcenverfolgung verwenden das folgende Format: `namespace_appname:group/kind:namespace/name` 

 **Nicht unterstützte Funktionen**: Die folgenden Funktionen sind in der verwalteten Funktion nicht verfügbar:
+ Config Management Plugins (CMPs) für die Generierung benutzerdefinierter Manifeste
+ Benutzerdefinierte Lua-Skripte für die Bewertung des Ressourcenzustands (integrierte Zustandsprüfungen für Standardressourcen werden unterstützt)
+ Der Benachrichtigungs-Controller
+ Benutzerdefinierte SSO-Anbieter (nur AWS Identity Center wird unterstützt, einschließlich föderierter Identitäten von Drittanbietern über AWS Identity Center)
+ Benutzeroberflächenerweiterungen und benutzerdefinierte Banner
+ Direkter Zugriff auf `argocd-cm``argocd-params`, und andere Konfigurationen ConfigMaps
+ Änderung des Synchronisierungs-Timeouts (fest auf 120 Sekunden festgelegt)

 **Kompatibilität**: Anwendungen und E ApplicationSets funktionieren genauso wie die Upstream-Argo-CD, ohne dass Ihre Manifeste geändert werden. Die Funktion verwendet dasselbe Kubernetes APIs und CRDs daher `kubectl` funktionieren Tools wie auf die gleiche Weise. Die Funktion unterstützt vollständig Anwendungen und GitOps Workflows mit automatischer Synchronisierung ApplicationSets, Multi-Cluster-Bereitstellungen, Synchronisierungsrichtlinien (automatisiert, bereinigt, selbstheilend), Synchronisierungswellen und Hooks, Integritätsbeurteilungen für Standard-Kubernetes-Ressourcen, Rollback-Funktionen, Git-Repository-Quellen (HTTPS und SSH), Helm-, Kustomize- und einfache YAML-Manifeste, GitHub App-Anmeldeinformationen, Projekte für Mehrmandantenfähigkeit sowie Ressourcenausschlüsse und -einschlüsse.

## Verwenden der Argo-CD-CLI mit der verwalteten Funktion
<a name="argocd-cli-configuration"></a>

Die Argo-CD-CLI funktioniert für die meisten Operationen genauso wie die Upstream-Argo-CD, aber Authentifizierung und Clusterregistrierung unterscheiden sich.

### Voraussetzungen
<a name="_prerequisites"></a>

Installieren Sie die Argo-CD-CLI gemäß den [Upstream-Installationsanweisungen](https://argo-cd.readthedocs.io/en/stable/cli_installation/).

### Konfiguration
<a name="_configuration"></a>

Konfigurieren Sie die CLI mithilfe von Umgebungsvariablen:

1. Rufen Sie die URL des Argo-CD-Servers von der EKS-Konsole (auf der Registerkarte **Capabilities** Ihres Clusters) oder mithilfe der AWS CLI ab. Das `https://` Präfix muss entfernt werden:

   ```
   export ARGOCD_SERVER=$(aws eks describe-capability \
     --cluster-name my-cluster \
     --capability-name my-argocd \
     --query 'capability.configuration.argoCd.serverUrl' \
     --output text \
     --region region-code | sed 's|^https://||')
   ```

1. Generieren Sie ein Konto-Token über die Benutzeroberfläche von Argo CD (**Einstellungen** → **Konten** → **admin** → **Neues Token generieren**) und legen Sie es dann als Umgebungsvariable fest:

   ```
   export ARGOCD_AUTH_TOKEN="your-token-here"
   ```

**Wichtig**  
Diese Konfiguration verwendet das Admin-Kontotoken für die Ersteinrichtung und die Entwicklungsabläufe. Verwenden Sie für Anwendungsfälle in der Produktion projektbezogene Rollen und Token, um dem Prinzip der geringsten Rechte zu folgen. Weitere Informationen zur Konfiguration von Projektrollen und RBAC finden Sie unter. [Argo-CD-Berechtigungen konfigurieren](argocd-permissions.md)

1. Stellen Sie die erforderliche gRPC-Option ein:

   ```
   export ARGOCD_OPTS="--grpc-web"
   ```

Wenn diese Umgebungsvariablen gesetzt sind, können Sie die Argo CD CLI ohne den `argocd login` Befehl verwenden.

### Die wichtigsten Unterschiede:
<a name="_key_differences"></a>

Für die verwaltete Funktion gelten die folgenden CLI-Einschränkungen:
+  `argocd admin`Befehle werden nicht unterstützt (sie erfordern direkten Pod-Zugriff)
+  `argocd login`wird nicht unterstützt (verwenden Sie stattdessen Konto- oder Projekt-Token)
+  `argocd cluster add`benötigt das `--aws-cluster-name` Flag mit dem EKS-Cluster-ARN

### Beispiel: Registrieren Sie einen Cluster
<a name="_example_register_a_cluster"></a>

Registrieren Sie einen EKS-Cluster für die Anwendungsbereitstellung:

```
# Get the cluster ARN
CLUSTER_ARN=$(aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.arn' \
  --output text)

# Register the cluster
argocd cluster add $CLUSTER_ARN \
  --aws-cluster-name $CLUSTER_ARN \
  --name in-cluster \
  --project default
```

Die vollständige Argo CD CLI-Dokumentation finden Sie in der [Argo CD CLI-Referenz](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/).

## Migrationspfad
<a name="_migration_path"></a>

Sie können von der selbstverwalteten Argo-CD zur verwalteten Funktion migrieren:

1. Überprüfen Sie Ihre aktuelle Argo-CD-Konfiguration auf nicht unterstützte Funktionen (Benachrichtigungs-Controller, benutzerdefinierte Integritätsprüfungen CMPs, Benutzeroberflächenerweiterungen)

1. Skalieren Sie Ihre selbstverwalteten Argo-CD-Controller auf null Replikate, um Konflikte zu vermeiden

1. Erstellen Sie eine Argo-CD-Funktionsressource auf Ihrem Cluster

1. Exportieren Sie Ihre vorhandenen Anwendungen, ApplicationSets, und AppProjects

1. Migrieren Sie Repository-Anmeldeinformationen, Cluster-Geheimnisse und Vorlagen für Repository-Anmeldeinformationen (Repocreds)

1. Wenn Sie GPG-Schlüssel, TLS-Zertifikate oder bekannte SSH-Hosts verwenden, migrieren Sie auch diese Konfigurationen

1. Aktualisieren Sie die `destination.server` Felder, um Clusternamen oder EKS-Cluster zu verwenden ARNs

1. Wenden Sie sie auf die verwaltete Argo-CD-Instanz an

1. Stellen Sie sicher, dass die Anwendungen korrekt synchronisiert werden

1. Nehmen Sie Ihre selbstverwaltete Argo-CD-Installation außer Betrieb

Die verwaltete Funktion verwendet dieselben Argo-CD APIs - und Ressourcendefinitionen, sodass Ihre vorhandenen Manifeste mit minimalen Änderungen funktionieren.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Erstellen einer Argo CD-Funktion](create-argocd-capability.md)- Erstellen Sie eine Argo-CD-Funktionsressource
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Stellen Sie Ihre erste Anwendung bereit
+  [Überlegungen zu Argo CD](argocd-considerations.md)- Konfigurieren Sie die AWS Identity Center-Integration

# Zusammenstellung von Ressourcen mit kro (Kube Resource Orchestrator)
<a name="kro"></a>

 **kro (Kube Resource Orchestrator)** ist ein Kubernetes-natives Open-Source-Projekt, mit dem Sie benutzerdefinierte Kubernetes mithilfe einer einfachen und unkomplizierten Konfiguration definieren können. APIs Mit kro können Sie ganz einfach neue benutzerdefinierte Objekte konfigurieren, die eine Gruppe von Kubernetes-Objekten und APIs die logischen Operationen zwischen ihnen erstellen.

Mit EKS Capabilities wird kro vollständig von verwaltet AWS, sodass Sie Kro-Controller nicht mehr auf Ihren Clustern installieren, warten und skalieren müssen.

## Wie funktioniert Kro
<a name="_how_kro_works"></a>

kro führt eine benutzerdefinierte Ressourcendefinition (CRD) namens `ResourceGraphDefinition` (RGD) ein, die die einfache und optimierte Erstellung von benutzerdefinierten Kubernetes ermöglicht. APIs Wenn Sie eine erstellen, verwendet Kro native Kubernetes-Erweiterungen`ResourceGraphDefinition`, um neue in Ihrem Cluster zu erstellen und zu verwalten. APIs Auf der Grundlage dieser einzelnen Ressourcenspezifikation erstellt und registriert kro für Sie eine neue CRD auf der Grundlage Ihrer Spezifikation und passt sich an die Verwaltung Ihrer neu definierten benutzerdefinierten Ressourcen an.

RGDs kann mehrere Ressourcen beinhalten, und Kro bestimmt die gegenseitigen Abhängigkeiten und die Reihenfolge der Ressourcen, sodass Sie sich nicht darum kümmern müssen. Sie können eine einfache Syntax verwenden, um Konfigurationen von einer Ressource in eine andere zu übertragen, wodurch Kompositionen erheblich vereinfacht werden und die Notwendigkeit von „Glue“ -Operatoren in Ihrem Cluster entfällt. Mit kro können Ihre benutzerdefinierten Ressourcen sowohl native Kubernetes-Ressourcen als auch alle im Cluster installierten benutzerdefinierten Ressourcendefinitionen (CRDs) enthalten.

kro unterstützt einen einzigen primären Ressourcentyp:
+  **ResourceGraphDefinition (RGD)**: Definiert eine benutzerdefinierte Kubernetes-Ressource, die eine oder mehrere zugrunde liegende native oder benutzerdefinierte Kubernetes-Ressourcen kapselt

Zusätzlich zu dieser Ressource erstellt und verwaltet kro den Lebenszyklus Ihrer damit erstellten benutzerdefinierten Ressourcen sowie aller zugehörigen Ressourcen.

kro lässt sich nahtlos in AWS Controllers for Kubernetes (ACK) integrieren, sodass Sie Workload-Ressourcen mit AWS Ressourcen zusammenstellen können, um Abstraktionen auf höherer Ebene zu erstellen. Auf diese Weise können Sie Ihre eigenen Cloud-Bausteine erstellen, das Ressourcenmanagement vereinfachen und wiederverwendbare Muster mit standardmäßigen und unveränderlichen Konfigurationseinstellungen ermöglichen, die auf Ihren Unternehmensstandards basieren.

## Vorteile von Kro
<a name="_benefits_of_kro"></a>

kro ermöglicht es Plattformteams, benutzerdefinierte Kubernetes zu erstellen, APIs die mehrere Ressourcen zu Abstraktionen auf höherer Ebene zusammensetzen. Dies vereinfacht das Ressourcenmanagement, da Entwickler komplexe Anwendungen mithilfe einfacher, standardisierter und versionierter benutzerdefinierter Ressourcen bereitstellen können. Sie definieren wiederverwendbare Muster für gängige Ressourcenkombinationen und ermöglichen so eine konsistente Ressourcenerstellung in Ihrer gesamten Organisation.

kro verwendet [Common Expression Language (CEL) in Kubernetes](https://kubernetes.io/docs/reference/using-api/cel/), um Werte zwischen Ressourcen zu übergeben und bedingte Logik zu integrieren, was Flexibilität bei der Ressourcenzusammensetzung bietet. Sie können sowohl Kubernetes-Ressourcen als auch von ACK verwaltete Ressourcen zu einheitlichen benutzerdefinierten AWS Ressourcen zusammenfassen APIs, sodass vollständige Anwendungs- und Infrastrukturdefinitionen möglich sind.

kro unterstützt die deklarative Konfiguration über Kubernetes-Manifeste und ermöglicht so GitOps Workflows und Infrastruktur als Code-Praktiken, die sich nahtlos in Ihre bestehenden Entwicklungsprozesse integrieren lassen. Als Teil von EKS Managed Capabilities wird kro vollständig von verwaltet AWS, sodass Sie keine Kro-Controller auf Ihren Clustern installieren, konfigurieren und warten müssen.

 **Beispiel: Erstellen eines ResourceGraphDefinition** 

Das folgende Beispiel zeigt ein einfaches Beispiel`ResourceGraphDefinition`, das eine Webanwendung mit einem Deployment und einem Service erstellt:

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: web-application
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    spec:
      name: string
      replicas: integer | default=3
  resources:
    - id: deployment
      template:
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: ${schema.spec.name}
        spec:
          replicas: ${schema.spec.replicas}
    - id: service
      template:
        apiVersion: v1
        kind: Service
        metadata:
          name: ${schema.spec.name}
```

Wenn Benutzer Instanzen der `WebApplication` benutzerdefinierten Ressource erstellen, erstellt Kro automatisch die entsprechenden Bereitstellungs- und Dienstressourcen und verwaltet deren Lebenszyklus zusammen mit der benutzerdefinierten Ressource.

## Integration mit anderen von EKS verwalteten Funktionen
<a name="_integration_with_other_eks_managed_capabilities"></a>

kro lässt sich in andere von EKS verwaltete Funktionen integrieren.
+  ** AWS Controller für Kubernetes (ACK)**: Verwenden Sie Kro, um ACK-Ressourcen in Abstraktionen auf höherer Ebene zusammenzustellen und so das Ressourcenmanagement zu vereinfachen. AWS 
+  **Argo CD**: Verwenden Sie Argo CD, um die Bereitstellung von benutzerdefinierten Kro-Ressourcen in mehreren Clustern zu verwalten und so Workflows für Ihre Plattformbausteine und Anwendungsstapel zu ermöglichen GitOps .

## Erste Schritte mit Kro
<a name="_getting_started_with_kro"></a>

Um mit der EKS-Funktion für kro zu beginnen:

1.  [Erstellen Sie eine Kro-Capability-Ressource](create-kro-capability.md) auf Ihrem EKS-Cluster über die AWS Konsole, AWS CLI oder Ihr bevorzugtes Infrastructure-as-Code-Tool.

1. Create ResourceGraphDefinitions (RGDs), die Ihre benutzerdefinierte Zusammensetzung APIs und Ihre Ressourcenzusammensetzung definieren.

1. Wenden Sie Instanzen Ihrer benutzerdefinierten Ressourcen an, um die zugrunde liegenden Kubernetes und Ressourcen bereitzustellen und AWS zu verwalten.

# Eine Kro-Fähigkeit erstellen
<a name="create-kro-capability"></a>

In diesem Thema wird erklärt, wie Sie eine Kro-Funktion auf Ihrem Amazon EKS-Cluster erstellen.

## Voraussetzungen
<a name="_prerequisites"></a>

Bevor Sie eine Kro-Fähigkeit erstellen, stellen Sie sicher, dass Sie über Folgendes verfügen:
+ Ein vorhandener Amazon EKS-Cluster, auf dem eine unterstützte Kubernetes-Version ausgeführt wird (alle Versionen mit Standard- und erweitertem Support werden unterstützt)
+ Ausreichende IAM-Berechtigungen zum Erstellen von Funktionsressourcen auf EKS-Clustern
+ (Für CLI/eksCTL) Das entsprechende CLI-Tool wurde installiert und konfiguriert

**Anmerkung**  
Im Gegensatz zu ACK und Argo CD benötigt kro keine zusätzlichen IAM-Berechtigungen, die über die Vertrauensrichtlinie hinausgehen. Kro arbeitet ausschließlich innerhalb Ihres Clusters und führt keine API-Aufrufe durch. AWS Sie müssen jedoch weiterhin eine IAM-Fähigkeitsrolle mit der entsprechenden Vertrauensrichtlinie bereitstellen. Informationen zur Konfiguration von Kubernetes-RBAC-Berechtigungen für Kro finden Sie unter. [Kro-Berechtigungen konfigurieren](kro-permissions.md)

## Wählen Sie Ihr Tool
<a name="_choose_your_tool"></a>

Sie können eine Kro-Fähigkeit mit der AWS-Managementkonsole AWS CLI oder eksctl erstellen:
+  [Erstellen Sie mit der Konsole eine Kro-Fähigkeit](kro-create-console.md)- Verwenden Sie die Konsole für ein geführtes Erlebnis
+  [Erstellen Sie eine Kro-Fähigkeit mit der CLI AWS](kro-create-cli.md)- Verwenden Sie die AWS CLI für Scripting und Automatisierung
+  [Erstellen Sie eine Kro-Fähigkeit mit eksctl](kro-create-eksctl.md)- Verwenden Sie eksctl für ein Kubernetes-natives Erlebnis

## Was passiert, wenn Sie eine Kro-Fähigkeit erstellen
<a name="_what_happens_when_you_create_a_kro_capability"></a>

Wenn Sie eine Kro-Fähigkeit erstellen:

1. EKS erstellt den Kro-Capability Service und konfiguriert ihn für die Überwachung und Verwaltung der Ressourcen in Ihrem Cluster

1. Benutzerdefinierte Ressourcendefinitionen (CRDs) sind in Ihrem Cluster installiert

1. Für Ihre IAM-Capability Role wird automatisch ein Zugriffseintrag erstellt`AmazonEKSKROPolicy`, der Berechtigungen für die Verwaltung ResourceGraphDefinitions und die zugehörigen Instanzen gewährt (siehe[Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md))

1. Die Funktion übernimmt die von Ihnen angegebene IAM-Fähigkeitsrolle (wird nur für die Vertrauensbeziehung verwendet)

1. kro beginnt, nach `ResourceGraphDefinition` Ressourcen und ihren Instanzen Ausschau zu halten

1. Der Status der Fähigkeit ändert sich von zu `CREATING` `ACTIVE` 

Sobald diese Option aktiviert ist, können Sie benutzerdefinierte Objekte erstellen, definieren APIs und Instanzen davon erstellen APIs. ResourceGraphDefinitions 

**Anmerkung**  
Der automatisch erstellte Zugriffseintrag beinhaltet den Eintrag`AmazonEKSKROPolicy`, der Kros Berechtigungen zur Verwaltung gewährt, ResourceGraphDefinitions und deren Instanzen. Damit Kro die zugrunde liegenden Kubernetes-Ressourcen, die in Ihren definiert sind ResourceGraphDefinitions (wie Deployments, Services oder ACK-Ressourcen), erstellen kann, müssen Sie zusätzliche Zugriffsrichtlinien konfigurieren. Weitere Informationen zu Zugriffseinträgen und zur Konfiguration zusätzlicher Berechtigungen finden Sie unter und. [Kro-Berechtigungen konfigurieren](kro-permissions.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Nächste Schritte
<a name="_next_steps"></a>

Nach der Erstellung der Kro-Fähigkeit:
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen
+  [Kro-Konzepte](kro-concepts.md)- Erfahren Sie mehr über SimpleSchema CEL-Ausdrücke und Muster der Ressourcenzusammensetzung

# Erstellen Sie mit der Konsole eine Kro-Fähigkeit
<a name="kro-create-console"></a>

In diesem Thema wird beschrieben, wie Sie eine Kro-Fähigkeit (Kube Resource Orchestrator) mithilfe von erstellen. AWS-Managementkonsole

## Erstellen Sie die Kro-Fähigkeit
<a name="_create_the_kro_capability"></a>

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus, um die Cluster-Detailseite zu öffnen.

1. Wählen Sie die Registerkarte **Funktionen**.

1. Wählen Sie in der linken Navigationsleiste **kro (Kube Resource Orchestrator**) aus.

1. Wählen Sie Kro-Fähigkeit **erstellen** aus.

1. Für die Rolle „**IAM-Fähigkeit**“:
   + Wenn Sie bereits über eine IAM-Fähigkeitsrolle verfügen, wählen Sie sie aus der Dropdownliste aus
   + Wenn Sie eine Rolle erstellen müssen, wählen Sie **Create** kro role 

     Dadurch wird die IAM-Konsole auf einer neuen Registerkarte mit einer vorab ausgefüllten Vertrauensrichtlinie geöffnet. Für die Rolle sind keine zusätzlichen IAM-Berechtigungen erforderlich, da Kro vollständig in Ihrem Cluster ausgeführt wird.

     Kehren Sie nach dem Erstellen der Rolle zur EKS-Konsole zurück. Die Rolle wird automatisch ausgewählt.
**Anmerkung**  
Im Gegensatz zu ACK und Argo CD benötigt kro keine zusätzlichen IAM-Berechtigungen, die über die Vertrauensrichtlinie hinausgehen. Kro arbeitet ausschließlich innerhalb Ihres Clusters und führt keine API-Aufrufe durch. AWS 

1. Wählen Sie **Erstellen** aus.

Der Prozess zur Schaffung von Fähigkeiten beginnt.

## Stellen Sie sicher, dass die Fähigkeit aktiv ist
<a name="_verify_the_capability_is_active"></a>

1. Sehen Sie sich auf der Registerkarte **Funktionen** den Status der Kro-Fähigkeit an.

1. Warten Sie, bis sich der Status von `CREATING` zu `ACTIVE` ändert.

1. Sobald die Funktion aktiv ist, ist sie einsatzbereit.

Informationen zum Status der Funktionen und zur Problembehandlung finden Sie unter[Mit Capability-Ressourcen arbeiten](working-with-capabilities.md).

## Erteilen Sie Berechtigungen zur Verwaltung von Kubernetes-Ressourcen
<a name="_grant_permissions_to_manage_kubernetes_resources"></a>

Wenn Sie eine Kro-Funktion erstellen, wird automatisch ein EKS-Zugriffseintrag mit dem erstellt`AmazonEKSKROPolicy`, sodass Kro und ihre Instanzen verwalten ResourceGraphDefinitions können. Es werden jedoch standardmäßig keine Berechtigungen zum Erstellen der zugrunde liegenden Kubernetes-Ressourcen (wie Bereitstellungen, Dienste usw.) gewährt, die in ConfigMaps Ihrem definiert sind. ResourceGraphDefinitions

Dieses vorsätzliche Design folgt dem Prinzip der geringsten Rechte ResourceGraphDefinitions — unterschiedliche Rechte erfordern unterschiedliche Berechtigungen. Sie müssen die Berechtigungen, die kro benötigt, explizit auf der Grundlage der Ressourcen konfigurieren, die Sie verwalten werden. ResourceGraphDefinitions 

Verwenden `AmazonEKSClusterAdminPolicy` Sie für einen schnellen Einstieg in Test- oder Entwicklungsumgebungen:

1. Navigieren Sie in der EKS-Konsole zur Registerkarte **Access** Ihres Clusters.

1. Suchen Sie unter **Access-Einträge** den Eintrag für Ihre Kro-Capability-Rolle (sie wird den Rollen-ARN haben, den Sie zuvor erstellt haben).

1. Wählen Sie den Access-Eintrag aus, um die zugehörigen Details zu öffnen.

1. Wählen Sie im Abschnitt **Zugriffsrichtlinien die** Option **Zugriffsrichtlinie zuordnen** aus.

1. Wählen Sie `AmazonEKSClusterAdminPolicy` aus der Richtlinienliste aus.

1. Wählen Sie als **Zugriffsbereich** die Option **Cluster** aus.

1. Wählen Sie **Associate** aus.

**Wichtig**  
Das `AmazonEKSClusterAdminPolicy` gewährt umfassende Berechtigungen zum Erstellen und Verwalten aller Kubernetes-Ressourcen, einschließlich der Möglichkeit, beliebige Ressourcentypen in allen Namespaces zu erstellen. Dies ist praktisch für die Entwicklung, sollte POCs aber nicht in der Produktion verwendet werden. Erstellen Sie für die Produktion benutzerdefinierte RBAC-Richtlinien, die nur die Berechtigungen gewähren, die für die spezifischen Ressourcen erforderlich sind, die Sie verwalten ResourceGraphDefinitions werden. Anleitungen zur Konfiguration von Berechtigungen mit den geringsten Rechten finden Sie unter und. [Kro-Berechtigungen konfigurieren](kro-permissions.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_verify_custom_resources_are_available"></a>

Nachdem die Funktion aktiviert wurde, stellen Sie sicher, dass benutzerdefinierte KRO-Ressourcen in Ihrem Cluster verfügbar sind.

 **Verwenden der Konsole** 

1. Navigieren Sie in der Amazon EKS-Konsole zu Ihrem Cluster

1. Wählen Sie die Registerkarte **Ressourcen**

1. Wählen Sie **Erweiterungen** 

1. Wählen Sie **CustomResourceDefinitions** aus. 

Der `ResourceGraphDefinition` Ressourcentyp sollte aufgeführt sein.

 **Verwenden Sie kubectl** 

```
kubectl api-resources | grep kro.run
```

Der `ResourceGraphDefinition` Ressourcentyp sollte aufgeführt sein.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen
+  [Kro-Konzepte](kro-concepts.md)- Erfahren Sie mehr über SimpleSchema CEL-Ausdrücke und Kompositionsmuster
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalte deine Ressourcen für Kro-Fähigkeiten

# Erstellen Sie eine Kro-Fähigkeit mit der CLI AWS
<a name="kro-create-cli"></a>

In diesem Thema wird beschrieben, wie Sie mit der CLI eine KRO-Funktion (Kube Resource Orchestrator) erstellen. AWS 

## Voraussetzungen
<a name="_prerequisites"></a>
+  ** AWS CLI** — Version `2.12.3` oder höher. Führen Sie den Befehl aus, um Ihre Version zu überprüfen`aws --version`. Weitere Informationen finden Sie im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle unter [Installation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html).
+  ** `kubectl` ** – Ein Befehlszeilentool für die Arbeit mit Kubernetes-Clustern. Weitere Informationen finden Sie unter [`kubectl` und `eksctl` einrichten](install-kubectl.md).

## Schritt 1: Erstellen Sie eine IAM-Capability-Rolle
<a name="_step_1_create_an_iam_capability_role"></a>

Erstellen Sie eine Vertrauensrichtliniendatei:

```
cat > kro-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Erstellen Sie die IAM-Rolle:

```
aws iam create-role \
  --role-name KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**Anmerkung**  
Im Gegensatz zu ACK und Argo CD benötigt kro keine zusätzlichen IAM-Berechtigungen. kro arbeitet vollständig innerhalb Ihres Clusters und führt keine API-Aufrufe durch. AWS Die Rolle wird nur benötigt, um die Vertrauensstellung mit dem EKS-Capabilities Service herzustellen.

## Schritt 2: Erstellen Sie die Kro-Fähigkeit
<a name="_step_2_create_the_kro_capability"></a>

Erstellen Sie die Kro-Capability-Ressource auf Ihrem Cluster. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet (z. B.`us-west-2`), und *my-cluster* durch Ihren Clusternamen.

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/KROCapabilityRole \
  --delete-propagation-policy RETAIN
```

Der Befehl wird sofort zurückgegeben, aber es dauert einige Zeit, bis die Funktion aktiv wird, da EKS die erforderliche Fähigkeitsinfrastruktur und die erforderlichen Komponenten erstellt. EKS installiert die benutzerdefinierten Kubernetes-Ressourcendefinitionen, die sich auf diese Funktion beziehen, in Ihrem Cluster, während dieser erstellt wird.

**Anmerkung**  
Wenn Sie eine Fehlermeldung erhalten, dass der Cluster nicht existiert oder Sie keine Berechtigungen haben, überprüfen Sie Folgendes:  
Der Clustername ist korrekt
Ihre AWS CLI ist für die richtige Region konfiguriert
Sie verfügen über die erforderlichen IAM-Berechtigungen

## Schritt 3: Stellen Sie sicher, dass die Funktion aktiv ist
<a name="_step_3_verify_the_capability_is_active"></a>

Warten Sie, bis die Funktion aktiv wird. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --query 'capability.status' \
  --output text
```

Die Funktion ist bereit, wenn der Status angezeigt wird`ACTIVE`.

Sie können sich auch die vollständigen Funktionsdetails ansehen:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro
```

## Schritt 4: Erteilen Sie Berechtigungen zur Verwaltung von Kubernetes-Ressourcen
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

Wenn Sie eine Kro-Funktion erstellen, wird automatisch ein EKS-Zugriffseintrag mit dem erstellt`AmazonEKSKROPolicy`, sodass Kro und ihre Instanzen verwalten ResourceGraphDefinitions können. Es werden jedoch standardmäßig keine Berechtigungen zum Erstellen der zugrunde liegenden Kubernetes-Ressourcen (wie Bereitstellungen, Dienste usw.) gewährt, die in ConfigMaps Ihrem definiert sind. ResourceGraphDefinitions

Dieses absichtliche Design folgt dem Prinzip der geringsten Rechte ResourceGraphDefinitions — unterschiedliche Rechte erfordern unterschiedliche Berechtigungen. Beispiel: \$1 Ein System ResourceGraphDefinition , das nur ConfigMaps Secrets erstellt, benötigt andere Berechtigungen als ein System, das Deployments und Services erstellt. \$1 Ein System ResourceGraphDefinition , das ACK-Ressourcen erstellt, benötigt Berechtigungen für diese spezifischen benutzerdefinierten Ressourcen. \$1 Manche Benutzer lesen ResourceGraphDefinitions möglicherweise nur vorhandene Ressourcen, ohne neue zu erstellen

Sie müssen die Berechtigungen, die kro benötigt, explizit auf der Grundlage der Ressourcen konfigurieren, die Sie verwalten ResourceGraphDefinitions werden.

### Quick Setup
<a name="_quick_setup"></a>

Verwenden `AmazonEKSClusterAdminPolicy` Sie für einen schnellen Einstieg in Test- oder Entwicklungsumgebungen:

Rufen Sie den ARN der Funktionsrolle ab:

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

Ordnen Sie die Cluster-Admin-Richtlinie zu:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Wichtig**  
Das `AmazonEKSClusterAdminPolicy` gewährt umfassende Berechtigungen zum Erstellen und Verwalten aller Kubernetes-Ressourcen, einschließlich der Möglichkeit, beliebige Ressourcentypen in allen Namespaces zu erstellen. Dies ist praktisch für die Entwicklung, sollte POCs aber nicht in der Produktion verwendet werden. Erstellen Sie für die Produktion benutzerdefinierte RBAC-Richtlinien, die nur die Berechtigungen gewähren, die für die spezifischen Ressourcen erforderlich sind, die Sie verwalten ResourceGraphDefinitions werden. Anleitungen zur Konfiguration von Berechtigungen mit den geringsten Rechten finden Sie unter und. [Kro-Berechtigungen konfigurieren](kro-permissions.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Schritt 5: Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_step_5_verify_custom_resources_are_available"></a>

Nachdem die Funktion aktiviert ist, stellen Sie sicher, dass benutzerdefinierte KRO-Ressourcen in Ihrem Cluster verfügbar sind:

```
kubectl api-resources | grep kro.run
```

Der `ResourceGraphDefinition` Ressourcentyp sollte aufgeführt sein.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen
+  [Kro-Konzepte](kro-concepts.md)- Erfahren Sie mehr über SimpleSchema CEL-Ausdrücke und Kompositionsmuster
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalte deine Ressourcen für Kro-Fähigkeiten

# Erstellen Sie eine Kro-Fähigkeit mit eksctl
<a name="kro-create-eksctl"></a>

In diesem Thema wird beschrieben, wie Sie mit eksctl eine Kro-Fähigkeit (Kube Resource Orchestrator) erstellen.

**Anmerkung**  
Für die folgenden Schritte ist die Version eksctl oder höher erforderlich. `0.220.0` Führen Sie den Befehl aus, um Ihre Version zu überprüfen. `eksctl version`

## Schritt 1: Erstellen Sie eine IAM-Capability-Rolle
<a name="_step_1_create_an_iam_capability_role"></a>

Erstellen Sie eine Vertrauensrichtliniendatei:

```
cat > kro-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Erstellen Sie die IAM-Rolle:

```
aws iam create-role \
  --role-name KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**Anmerkung**  
Im Gegensatz zu ACK und Argo CD benötigt kro keine zusätzlichen IAM-Berechtigungen, die über die Vertrauensrichtlinie hinausgehen. Kro arbeitet ausschließlich innerhalb Ihres Clusters und führt keine API-Aufrufe durch. AWS 

## Schritt 2: Erstellen Sie die Kro-Fähigkeit
<a name="_step_2_create_the_kro_capability"></a>

Erstellen Sie die Kro-Fähigkeit mit eksctl. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
eksctl create capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::[.replaceable]111122223333:role/KROCapabilityRole
```

Der Befehl kehrt sofort zurück, aber es dauert einige Zeit, bis die Funktion aktiv wird.

## Schritt 3: Stellen Sie sicher, dass die Funktion aktiv ist
<a name="_step_3_verify_the_capability_is_active"></a>

Überprüfen Sie den Status der Fähigkeit. *region-code*Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet, und *my-cluster* ersetzen Sie es durch den Namen Ihres Clusters.

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro
```

Die Funktion ist bereit, wenn der Status angezeigt wird`ACTIVE`.

## Schritt 4: Erteilen Sie Berechtigungen zur Verwaltung von Kubernetes-Ressourcen
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

Standardmäßig kann Kro nur deren Instanzen erstellen ResourceGraphDefinitions und verwalten. Damit kro die zugrunde liegenden Kubernetes-Ressourcen, die in Ihrem definiert sind, erstellen und verwalten kann ResourceGraphDefinitions, verknüpfen Sie die `AmazonEKSClusterAdminPolicy` Zugriffsrichtlinie mit dem Zugriffseintrag der Funktion.

Rufen Sie den ARN der Funktionsrolle ab:

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

Ordnen Sie die Cluster-Admin-Richtlinie zu:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Wichtig**  
Die `AmazonEKSClusterAdminPolicy` gewährt umfassende Berechtigungen zur Erstellung und Verwaltung aller Kubernetes-Ressourcen und soll den Einstieg vereinfachen. Für den produktiven Einsatz sollten Sie restriktivere RBAC-Richtlinien erstellen, die nur die Berechtigungen gewähren, die für die spezifischen Ressourcen erforderlich sind, die Sie verwalten werden. ResourceGraphDefinitions Anleitungen zur Konfiguration von Berechtigungen mit den geringsten Rechten finden Sie unter und. [Kro-Berechtigungen konfigurieren](kro-permissions.md) [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)

## Schritt 5: Stellen Sie sicher, dass benutzerdefinierte Ressourcen verfügbar sind
<a name="_step_5_verify_custom_resources_are_available"></a>

Nachdem die Funktion aktiviert ist, stellen Sie sicher, dass benutzerdefinierte KRO-Ressourcen in Ihrem Cluster verfügbar sind:

```
kubectl api-resources | grep kro.run
```

Der `ResourceGraphDefinition` Ressourcentyp sollte aufgeführt sein.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen
+  [Kro-Konzepte](kro-concepts.md)- Erfahren Sie mehr über SimpleSchema CEL-Ausdrücke und Kompositionsmuster
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Verwalte deine Ressourcen für Kro-Fähigkeiten

# Kro-Konzepte
<a name="kro-concepts"></a>

kro ermöglicht es Plattformteams, benutzerdefinierte Kubernetes zu erstellen, die mehrere Ressourcen zu Abstraktionen auf APIs höherer Ebene zusammensetzen. In diesem Thema wird ein praktisches Beispiel vorgestellt und anschließend die Kernkonzepte erklärt, die Sie verstehen müssen, wenn Sie mit der EKS-Funktion für kro arbeiten.

## Erste Schritte mit Kro
<a name="_getting_started_with_kro"></a>

Nachdem Sie die Kro-Fähigkeit erstellt haben (siehe[Eine Kro-Fähigkeit erstellen](create-kro-capability.md)), können Sie APIs mit der Erstellung benutzerdefinierter Anwendungen ResourceGraphDefinitions in Ihrem Cluster beginnen.

Hier ist ein vollständiges Beispiel, das eine einfache Abstraktion einer Webanwendung erstellt:

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: webapplication
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    group: kro.run
    spec:
      name: string | required=true
      image: string | default="nginx:latest"
      replicas: integer | default=3
  resources:
  - id: deployment
    template:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: ${schema.spec.name}
      spec:
        replicas: ${schema.spec.replicas}
        selector:
          matchLabels:
            app: ${schema.spec.name}
        template:
          metadata:
            labels:
              app: ${schema.spec.name}
          spec:
            containers:
            - name: app
              image: ${schema.spec.image}
              ports:
              - containerPort: 80
  - id: service
    template:
      apiVersion: v1
      kind: Service
      metadata:
        name: ${schema.spec.name}
      spec:
        selector:
          app: ${schema.spec.name}
        ports:
        - protocol: TCP
          port: 80
          targetPort: 80
```

Nach der Anwendung ResourceGraphDefinition können Anwendungsteams Webanwendungen mithilfe Ihrer vereinfachten API erstellen:

```
apiVersion: kro.run/v1alpha1
kind: WebApplication
metadata:
  name: my-app
spec:
  name: my-app
  replicas: 5
```

kro erstellt das Deployment und den Service automatisch mit der entsprechenden Konfiguration. Da `image` nicht angegeben ist, wird der Standardwert `nginx:latest` aus dem Schema verwendet.

## Schlüsselkonzepte
<a name="_core_concepts"></a>

**Wichtig**  
kro validiert zur Zeit ResourceGraphDefinitions der Erstellung, nicht zur Laufzeit. Wenn Sie eine RGD erstellen, validiert Kro die CEL-Syntax, überprüft Ausdrücke anhand der tatsächlichen Kubernetes-Schemas, verifiziert das Vorhandensein von Feldern und erkennt zirkuläre Abhängigkeiten. Das bedeutet, dass Fehler sofort bei der Erstellung der RGD erkannt werden, bevor Instanzen bereitgestellt werden.

### ResourceGraphDefinition
<a name="_resourcegraphdefinition"></a>

A ResourceGraphDefinition (RGD) definiert eine benutzerdefinierte Kubernetes-API durch Angabe von:
+  **Schema** — Die API-Struktur unter Verwendung des SimpleSchema Formats (Feldnamen, Typen, Standardwerte, Validierung)
+  **Ressourcen** — Vorlagen für das zugrunde liegende Kubernetes oder AWS zu erstellende Ressourcen
+  **Abhängigkeiten** — Wie Ressourcen zueinander in Beziehung stehen (wird automatisch anhand von Feldreferenzen erkannt)

Wenn Sie eine RGD anwenden, registriert Kro eine neue benutzerdefinierte Ressourcendefinition (CRD) in Ihrem Cluster. Anwendungsteams können dann Instanzen Ihrer benutzerdefinierten API erstellen, und kro kümmert sich um die Erstellung und Verwaltung aller zugrunde liegenden Ressourcen.

Weitere Informationen finden Sie in der Kro-Dokumentation unter [ResourceGraphDefinition Überblick](https://kro.run/docs/concepts/rgd/overview/).

### SimpleSchema formatieren
<a name="_simpleschema_format"></a>

SimpleSchema bietet eine vereinfachte Möglichkeit, API-Schemas zu definieren, ohne dass OpenAPI-Kenntnisse erforderlich sind:

```
schema:
  apiVersion: v1alpha1
  kind: Database
  spec:
    name: string | required=true description="Database name"
    size: string | default="small" enum=small,medium,large
    replicas: integer | default=1 minimum=1 maximum=5
```

SimpleSchema unterstützt`string`, `integer``boolean`, und `number` Typen mit Einschränkungen wie`required`,`default`,`minimum`/`maximum``enum`, und. `pattern`

Weitere Informationen finden Sie [SimpleSchema](https://kro.run/docs/concepts/rgd/schema/)in der KRO-Dokumentation.

### CEL-Ausdrücke
<a name="_cel_expressions"></a>

kro verwendet Common Expression Language (CEL), um Werte dynamisch zu referenzieren und bedingte Logik hinzuzufügen. CEL-Ausdrücke sind in `${` und eingeschlossen `}` und können auf zwei Arten verwendet werden:

 **Eigenständige Ausdrücke** — Der gesamte Feldwert ist ein einziger Ausdruck:

```
spec:
  replicas: ${schema.spec.replicaCount}  # Expression returns integer
  labels: ${schema.spec.labelMap}        # Expression returns object
```

Das Ausdrucksergebnis ersetzt den gesamten Feldwert und muss dem erwarteten Feldtyp entsprechen.

 **Zeichenkettenvorlagen** — Ein oder mehrere Ausdrücke, die in eine Zeichenfolge eingebettet sind:

```
metadata:
  name: "${schema.spec.prefix}-${schema.spec.name}"  # Multiple expressions
  annotation: "Created by ${schema.spec.owner}"      # Single expression in string
```

Alle Ausdrücke in Zeichenkettenvorlagen müssen Zeichenketten zurückgeben. Wird verwendet`string()`, um andere Typen zu konvertieren:`"replicas-${string(schema.spec.count)}"`.

 **Feldverweise** — Greifen Sie auf Instanzspezifikationswerte zu, indem Sie`schema.spec`:

```
template:
  metadata:
    name: ${schema.spec.name}-deployment
    namespace: ${schema.metadata.namespace}  # Can also reference metadata
  spec:
    replicas: ${schema.spec.replicas}
```

 **Optionaler Feldzugriff** — Wird `?` für Felder verwendet, die möglicherweise nicht existieren:

```
# For ConfigMaps or Secrets with unknown structure
value: ${configmap.data.?DATABASE_URL}

# For optional status fields
ready: ${deployment.status.?readyReplicas > 0}
```

Wenn das Feld nicht existiert, wird der Ausdruck zurückgegeben `null` und schlägt nicht fehl.

 **Bedingte Ressourcen** — Beziehen Sie Ressourcen nur ein, wenn die Bedingungen erfüllt sind:

```
resources:
- id: ingress
  includeWhen:
    - ${schema.spec.enableIngress == true}
  template:
    # ... ingress configuration
```

Das `includeWhen` Feld akzeptiert eine Liste von booleschen Ausdrücken. Alle Bedingungen müssen erfüllt sein, damit die Ressource erstellt werden kann. Derzeit `includeWhen` können nur `schema.spec` Felder referenziert werden.

 **Transformationen** — Transformieren Sie Werte mit ternären Operatoren und Funktionen:

```
template:
  spec:
    resources:
      requests:
        memory: ${schema.spec.size == "small" ? "512Mi" : "2Gi"}

    # String concatenation
    image: ${schema.spec.registry + "/" + schema.spec.imageName}

    # Type conversion
    port: ${string(schema.spec.portNumber)}
```

 **Ressourcenübergreifende Referenzen** — Referenzwerte aus anderen Ressourcen:

```
resources:
- id: bucket
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: Bucket
    spec:
      name: ${schema.spec.name}-data

- id: configmap
  template:
    apiVersion: v1
    kind: ConfigMap
    data:
      BUCKET_NAME: ${bucket.spec.name}
      BUCKET_ARN: ${bucket.status.ackResourceMetadata.arn}
```

Wenn Sie in einem CEL-Ausdruck auf eine andere Ressource verweisen, wird automatisch eine Abhängigkeit erstellt. kro stellt sicher, dass die referenzierte Ressource zuerst erstellt wird.

Weitere Informationen finden Sie in der [KRO-Dokumentation unter CEL-Ausdrücke](https://kro.run/docs/concepts/rgd/cel-expressions/).

### Abhängigkeiten von Ressourcen
<a name="_resource_dependencies"></a>

kro leitet Abhängigkeiten automatisch aus CEL-Ausdrücken ab — Sie geben die Reihenfolge nicht an, sondern beschreiben Beziehungen. Wenn eine Ressource mithilfe eines CEL-Ausdrucks auf eine andere Ressource verweist, erstellt Kro eine Abhängigkeit und bestimmt die richtige Erstellungsreihenfolge.

```
resources:
- id: bucket
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: Bucket
    spec:
      name: ${schema.spec.name}-data

- id: notification
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: BucketNotification
    spec:
      bucket: ${bucket.spec.name}  # Creates dependency: notification depends on bucket
```

Der Ausdruck `${bucket.spec.name}` erzeugt eine Abhängigkeit. kro erstellt einen gerichteten azyklischen Graphen (DAG) aller Ressourcen und ihrer Abhängigkeiten und berechnet dann eine topologische Reihenfolge für die Erstellung.

 **Erstellungsreihenfolge**: Ressourcen werden in topologischer Reihenfolge erstellt (Abhängigkeiten zuerst).

 **Parallele Erstellung**: Ressourcen ohne Abhängigkeiten werden gleichzeitig erstellt.

 **Löschreihenfolge**: Ressourcen werden in umgekehrter topologischer Reihenfolge gelöscht (abhängige Objekte zuerst).

 **Zirkuläre Abhängigkeiten**: Nicht zulässig — kro lehnt ResourceGraphDefinitions bei der Validierung zirkuläre Abhängigkeiten ab.

Sie können die berechnete Erstellungsreihenfolge einsehen:

```
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.topologicalOrder}'
```

Weitere Informationen finden Sie unter [Graph-Inferenz](https://kro.run/docs/concepts/rgd/dependencies-ordering/) in der KRO-Dokumentation.

## Komponieren mit ACK
<a name="_composing_with_ack"></a>

kro arbeitet nahtlos mit der EKS-Funktion für ACK zusammen, um AWS Ressourcen mit Kubernetes-Ressourcen zusammenzustellen:

```
resources:
# Create {aws} S3 bucket with ACK
- id: bucket
  template:
    apiVersion: s3.services.k8s.aws/v1alpha1
    kind: Bucket
    spec:
      name: ${schema.spec.name}-files

# Inject bucket details into Kubernetes ConfigMap
- id: config
  template:
    apiVersion: v1
    kind: ConfigMap
    data:
      BUCKET_NAME: ${bucket.spec.name}
      BUCKET_ARN: ${bucket.status.ackResourceMetadata.arn}

# Use ConfigMap in application deployment
- id: deployment
  template:
    apiVersion: apps/v1
    kind: Deployment
    spec:
      template:
        spec:
          containers:
          - name: app
            envFrom:
            - configMapRef:
                name: ${config.metadata.name}
```

Mit diesem Muster können Sie AWS Ressourcen erstellen, ihre Details (ARNs, URLs, Endpunkte) extrahieren und sie in Ihre Anwendungskonfiguration einfügen — alles wird als eine Einheit verwaltet.

Weitere Kompositionsmuster und Beispiele für Fortgeschrittene finden Sie unter. [Überlegungen zu Kro für EKS](kro-considerations.md)

## Nächste Schritte
<a name="_next_steps"></a>
+  [Überlegungen zu Kro für EKS](kro-considerations.md)- Erfahren Sie mehr über EKS-spezifische Muster, RBAC und die Integration mit ACK und Argo CD
+  [kro-Dokumentation — Umfassende Kro-Dokumentation](https://kro.run/docs/overview) mit erweiterten CEL-Ausdrücken, Validierungsmustern und Problemlösungen

# Kro-Berechtigungen konfigurieren
<a name="kro-permissions"></a>

Im Gegensatz zu ACK und Argo CD benötigt kro keine IAM-Berechtigungen. kro arbeitet vollständig in Ihrem Kubernetes-Cluster und führt keine API-Aufrufe durch. AWS Steuern Sie den Zugriff auf Kro-Ressourcen mithilfe des Standard-Kubernetes-RBAC.

## Wie funktionieren Berechtigungen mit Kro
<a name="_how_permissions_work_with_kro"></a>

kro verwendet zwei Arten von Kubernetes-Ressourcen mit unterschiedlichen Bereichen:

 **ResourceGraphDefinitions**: Ressourcen im Clusterbereich, die benutzerdefinierte definieren. APIs In der Regel von Plattformteams verwaltet, die organisatorische Standards entwerfen und einhalten.

 **Instanzen: Benutzerdefinierte** Ressourcen mit Namespace-Gültigkeitsbereich, die aus erstellt wurden. ResourceGraphDefinitions Kann von Anwendungsteams mit entsprechenden RBAC-Berechtigungen erstellt werden.

Standardmäßig verfügt die KRO-Funktion über die Zugriffsrichtlinie über Berechtigungen zum Verwalten ResourceGraphDefinitions und Verwalten ihrer Instanzen. `AmazonEKSKROPolicy` Für Kro sind jedoch zusätzliche Berechtigungen erforderlich, um die zugrunde liegenden Kubernetes-Ressourcen zu erstellen und zu verwalten, die in Ihrem System definiert sind ResourceGraphDefinitions (z. B. Bereitstellungen, Dienste oder ACK-Ressourcen). Sie müssen diese Berechtigungen über Zugriffsrichtlinien oder Kubernetes RBAC gewähren. Einzelheiten zur Erteilung dieser Berechtigungen finden Sie unter [Kro](capabilities-security.md#kro-resource-permissions) Arbitrary Resource Permissions.

## Berechtigungen für Plattformteams
<a name="_platform_team_permissions"></a>

Plattformteams benötigen Berechtigungen zum Erstellen und Verwalten ResourceGraphDefinitions.

 **Beispiel ClusterRole für Plattformteams**:

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

 **Binden Sie sich an Mitglieder des Plattform-Teams**:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: platform-team-kro-admin
subjects:
- kind: Group
  name: platform-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: kro-platform-admin
  apiGroup: rbac.authorization.k8s.io
```

## Berechtigungen des Anwendungsteams
<a name="_application_team_permissions"></a>

Anwendungsteams benötigen Berechtigungen, um Instanzen benutzerdefinierter Ressourcen in ihren Namespaces zu erstellen.

 **Beispielrolle für Anwendungsteams**:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: kro-app-developer
  namespace: my-app
rules:
- apiGroups: ["kro.run"]
  resources: ["webapps", "databases"]
  verbs: ["create", "get", "list", "update", "delete", "patch"]
```

 An **Mitglieder des Anwendungsteams binden**:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-team-kro-developer
  namespace: my-app
subjects:
- kind: Group
  name: app-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: kro-app-developer
  apiGroup: rbac.authorization.k8s.io
```

**Anmerkung**  
Die API-Gruppe in der Rolle (`kro.run`in diesem Beispiel) muss der in Ihrem ResourceGraphDefinition Schema `apiVersion` definierten entsprechen.

## Schreibgeschützter Zugriff
<a name="_read_only_access"></a>

Gewähren Sie schreibgeschützten Zugriff auf Ansicht ResourceGraphDefinitions und Instanzen ohne Änderungsberechtigungen.

 **Schreibgeschützt: ClusterRole**

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

 **Schreibgeschützte Rolle für Instanzen**:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: kro-instance-viewer
  namespace: my-app
rules:
- apiGroups: ["kro.run"]
  resources: ["webapps", "databases"]
  verbs: ["get", "list", "watch"]
```

## Zugriff auf mehrere Namespaces
<a name="_multi_namespace_access"></a>

Gewähren Sie Anwendungsteams mithilfe von with Zugriff auf mehrere Namespaces. ClusterRoles RoleBindings

 **ClusterRole für** den Zugriff auf mehrere Namespaces:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kro-multi-namespace-developer
rules:
- apiGroups: ["kro.run"]
  resources: ["webapps"]
  verbs: ["create", "get", "list", "update", "delete"]
```

 An **bestimmte Namespaces binden**:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-team-dev-access
  namespace: development
subjects:
- kind: Group
  name: app-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: kro-multi-namespace-developer
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-team-staging-access
  namespace: staging
subjects:
- kind: Group
  name: app-team
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: kro-multi-namespace-developer
  apiGroup: rbac.authorization.k8s.io
```

## Best Practices
<a name="_best_practices"></a>

 **Prinzip der geringsten Rechte**: Erteilen Sie nur die Mindestberechtigungen, die für die jeweiligen Aufgaben der einzelnen Teams erforderlich sind.

 **Verwenden Sie Gruppen statt einzelner Benutzer**: Binden Sie Rollen eher an Gruppen als an einzelne Benutzer, um die Verwaltung zu vereinfachen.

 **Getrennte Plattform- und Anwendungsaspekte**: Plattformteams verwalten ResourceGraphDefinitions, Anwendungsteams verwalten Instanzen.

 **Namespace-Isolierung**: Verwenden Sie Namespaces, um verschiedene Teams oder Umgebungen zu isolieren, wobei RBAC den Zugriff auf jeden Namespace steuert.

 **Schreibgeschützter Zugriff für Auditzwecke: Gewähren Sie Sicherheits- und Compliance-Teams zu Prüfungszwecken nur** Lesezugriff.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie SimpleSchema CEL-Ausdrücke und Kompositionsmuster
+  [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)- Informieren Sie sich über bewährte Sicherheitsverfahren im Hinblick auf Funktionen

# Überlegungen zu Kro für EKS
<a name="kro-considerations"></a>

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
<a name="_when_to_use_kro"></a>

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 \$1 Backup \$1 Ü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
<a name="_rbac_patterns"></a>

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

### Verantwortlichkeiten des Plattformteams
<a name="_platform_team_responsibilities"></a>

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](kro-permissions.md)

### Verantwortlichkeiten des Anwendungsteams
<a name="_application_team_responsibilities"></a>

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
<a name="_integration_with_other_eks_capabilities"></a>

### Zusammenstellung von ACK-Ressourcen
<a name="_composing_ack_resources"></a>

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

 **Allgemeine Muster**:
+  **Anwendung mit Speicher**: S3-Bucket \$1 SQS-Warteschlange \$1 Benachrichtigungskonfiguration
+  **Datenbank-Stack**: RDS-Instanz \$1 Parametergruppe \$1 Sicherheitsgruppe \$1 Secrets Manager Secret
+  **Netzwerk**: VPC \$1 Subnetze \$1 Routentabellen \$1 Sicherheitsgruppen \$1 NAT-Gateways
+  **Datenverarbeitung mit Speicher**: EC2 Instanz \$1 EBS-Volumes \$1 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](ack-concepts.md)

### GitOps mit Argo CD
<a name="_gitops_with_argo_cd"></a>

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](working-with-argocd.md)

## Organisieren ResourceGraphDefinitions
<a name="_organizing_resourcegraphdefinitions"></a>

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
<a name="_versioning_and_updates"></a>

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
<a name="_validation_and_testing"></a>

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
<a name="_upstream_documentation"></a>

Ausführliche Informationen zur Verwendung von kro finden Sie unter
+  [Erste Schritte mit Kro](https://kro.run/docs/guides/getting-started) — Erstellen ResourceGraphDefinitions
+  [CEL-Ausdrücke](https://kro.run/docs/concepts/cel) — CEL-Ausdrücke schreiben
+  [kro Guides](https://kro.run/docs/guides/) - Kompositionsmuster für Fortgeschrittene
+  [Problembehandlung — Problembehebung](https://kro.run/docs/troubleshooting) und Debugging

## Nächste Schritte
<a name="_next_steps"></a>
+  [Kro-Berechtigungen konfigurieren](kro-permissions.md)- Konfigurieren Sie RBAC für Plattform- und Anwendungsteams
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und den Ressourcenlebenszyklus
+  [Probleme mit KRO-Funktionen beheben](kro-troubleshooting.md)- Beheben Sie Kro-Probleme
+  [ACK-Konzepte](ack-concepts.md)- Erfahren Sie mehr über ACK-Ressourcen für die Komposition
+  [Arbeiten mit Argo CD](working-with-argocd.md)- Bereitstellung RGDs und Instanzen mit GitOps

# Probleme mit KRO-Funktionen beheben
<a name="kro-troubleshooting"></a>

Dieses Thema enthält Anleitungen zur Fehlerbehebung für die EKS-Funktion für KRO, einschließlich Funktionsprüfungen, RBAC-Berechtigungen, CEL-Ausdrucksfehler und Probleme bei der Ressourcenzusammensetzung.

**Anmerkung**  
EKS-Funktionen werden vollständig verwaltet und außerhalb Ihres Clusters ausgeführt. Sie haben keinen Zugriff auf Controller-Logs oder den `kro-system` Namespace. Die Fehlerbehebung konzentriert sich auf den Funktionsstatus, die RBAC-Konfiguration und den Ressourcenstatus.

## Die Funktion ist AKTIV, funktioniert aber ResourceGraphDefinitions nicht
<a name="_capability_is_active_but_resourcegraphdefinitions_arent_working"></a>

Wenn Ihre Kro-Fähigkeit `ACTIVE` den Status anzeigt, aber ResourceGraphDefinitions keine zugrunde liegenden Ressourcen erstellt werden, überprüfen Sie den Zustand der Fähigkeit, die RBAC-Berechtigungen und den Ressourcenstatus.

 **Überprüfen Sie den Zustand** der Fähigkeit:

Sie können Funktionszustands- und Statusprobleme in der EKS-Konsole oder über die AWS CLI anzeigen.

 **Konsole**:

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus.

1. Wählen Sie den Registerkarte **Beobachtbarkeit**.

1. Wählen Sie **Cluster überwachen** aus.

1. Wählen Sie die Registerkarte **Funktionen**, um den Zustand und den Status aller Funktionen anzuzeigen.

 ** AWS CLI**:

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro

# Look for issues in the health section
```

 **Häufige Ursachen:**
+  **RBAC-Berechtigungen fehlen**: Kro hat keine Berechtigungen, um zugrunde liegende Kubernetes-Ressourcen zu erstellen
+  **Ungültige CEL-Ausdrücke**: Syntaxfehler in ResourceGraphDefinition
+  **Ressourcenabhängigkeiten**: Abhängige Ressourcen sind nicht bereit
+  **Schemavalidierung**: Die Instanz entspricht nicht den RGD-Schemaanforderungen

 **Überprüfen Sie die RBAC-Berechtigungen**:

```
# Check if capability has cluster admin policy
kubectl get accessentry -A | grep kro
```

Wenn die Funktion nicht über die erforderlichen Berechtigungen verfügt, verknüpfen Sie sie `AmazonEKSClusterAdminPolicy` mit dem Zugriffseintrag der KRO-Funktion, oder erstellen Sie restriktivere RBAC-Richtlinien für den Produktionsgebrauch. Details dazu finden Sie unter [Kro-Berechtigungen konfigurieren](kro-permissions.md).

 **Status überprüfen: ResourceGraphDefinition **

```
# List all RGDs
kubectl get resourcegraphdefinition

# Describe specific RGD
kubectl describe resourcegraphdefinition my-rgd

# Check for validation errors
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions}'
```

ResourceGraphDefinitions haben drei wichtige Statusbedingungen:
+  `ResourceGraphAccepted`- Ob das RGD die Validierung bestanden hat (CEL-Syntax, Typprüfung, Existenz des Felds)
+  `KindReady`- Ob die CRD für Ihre benutzerdefinierte API generiert und registriert wurde
+  `ControllerReady`- Ob Kro aktiv nach Instanzen Ihrer benutzerdefinierten API Ausschau hält

Falls ja `ResourceGraphAccepted``False`, überprüfen Sie die Zustandsmeldung auf Validierungsfehler wie unbekannte Felder, nicht übereinstimmende Typen oder zirkuläre Abhängigkeiten.

## Instanzen wurden erstellt, aber die zugrunde liegenden Ressourcen werden nicht angezeigt
<a name="_instances_created_but_underlying_resources_not_appearing"></a>

Wenn benutzerdefinierte Ressourceninstanzen existieren, die zugrunde liegenden Kubernetes-Ressourcen (Bereitstellungen, Dienste, ConfigMaps) jedoch nicht erstellt werden, überprüfen Sie, ob kro über die erforderlichen Berechtigungen verfügt, und überprüfen Sie, ob Kompositionsfehler vorliegen.

 **Überprüfen Sie den Instanzstatus:**

```
# Describe the instance (replace with your custom resource kind and name)
kubectl describe custom-kind
         my-instance

# View instance events
kubectl get events --field-selector involvedObject.name=my-instance

# Check instance status conditions
kubectl get custom-kind
         my-instance -o jsonpath='{.status.conditions}'

# Check instance state
kubectl get custom-kind
         my-instance -o jsonpath='{.status.state}'
```

Instanzen haben ein `state` Feld, das den Status auf hoher Ebene anzeigt:
+  `ACTIVE`— Die Instanz wird erfolgreich ausgeführt
+  `IN_PROGRESS`- Die Instanz wird verarbeitet oder abgeglichen
+  `FAILED`- Die Instanz konnte nicht abgeglichen werden
+  `DELETING`- Die Instanz wird gelöscht
+  `ERROR`- Bei der Verarbeitung ist ein Fehler aufgetreten

Instanzen haben außerdem vier Statusbedingungen:
+  `InstanceManaged`- Finalizer und Labels sind richtig gesetzt
+  `GraphResolved`- Laufzeitdiagramm erstellt und Ressourcen aufgelöst
+  `ResourcesReady`- Alle Ressourcen wurden erstellt und sind bereit
+  `Ready`- Allgemeiner Zustand der Instanz (wird nur erreicht`True`, wenn alle Unterbedingungen erfüllt sind`True`)

Konzentrieren Sie sich auf den `Ready` Zustand, um den Zustand der Instanz zu bestimmen. Falls `Ready` ja`False`, überprüfen Sie anhand der Unterbedingungen, welche Phase fehlgeschlagen ist.

 **Überprüfen Sie die RBAC-Berechtigungen**:

Für die Kro-Funktion sind Berechtigungen erforderlich, um die zugrunde liegenden Kubernetes-Ressourcen zu erstellen, die in Ihrem definiert sind. ResourceGraphDefinitions

```
# Check if the capability has the AmazonEKSClusterAdminPolicy
kubectl get accessentry -A | grep kro
```

Wenn Berechtigungen fehlen, verknüpfen Sie sie `AmazonEKSClusterAdminPolicy` mit dem Zugriffseintrag der Kro-Fähigkeit oder erstellen Sie restriktivere RBAC-Richtlinien für den Produktionsgebrauch. Details dazu finden Sie unter [Kro-Berechtigungen konfigurieren](kro-permissions.md).

## Fehler bei CEL-Ausdrücken
<a name="_cel_expression_errors"></a>

Fehler bei CEL-Ausdrücken werden bei der ResourceGraphDefinition Erstellung erkannt, nicht bei der Erstellung von Instances. Kro validiert die gesamte CEL-Syntax, überprüft Ausdrücke anhand von Kubernetes-Schemas und überprüft das Vorhandensein von Feldern, wenn Sie die RGD erstellen.

 **Häufige Fehler** bei der CEL-Validierung:
+  **Undefinierter Feldverweis**: Verweisen auf ein Feld, das im Schema oder in der Ressource nicht vorhanden ist
+  **Typkonflikt**: Der Ausdruck gibt einen falschen Typ zurück (z. B. eine Zeichenfolge, bei der eine Ganzzahl erwartet wurde)
+  **Ungültige Syntax**: Fehlende Klammern, Anführungszeichen oder Operatoren im CEL-Ausdruck
+  **Unbekannter Ressourcentyp**: Verweist auf eine CRD, die im Cluster nicht vorhanden ist

 **Überprüfen Sie den RGD-Validierungsstatus**:

```
# Check if RGD was accepted
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}'

# View detailed validation errors
kubectl describe resourcegraphdefinition my-rgd
```

Falls ja `ResourceGraphAccepted``False`, enthält die Zustandsmeldung den Validierungsfehler.

 **Beispiel für gültige CEL-Ausdrücke**:

```
# Reference schema field
${schema.spec.appName}

# Conditional expression
${schema.spec.replicas > 1}

# String template (expressions must return strings)
name: "${schema.spec.appName}-service"

# Standalone expression (can be any type)
replicas: ${schema.spec.replicaCount}

# Resource reference
${deployment.status.availableReplicas}

# Optional field access (returns null if field doesn't exist)
${configmap.data.?DATABASE_URL}
```

## Ressourcenabhängigkeiten werden nicht aufgelöst
<a name="_resource_dependencies_not_resolving"></a>

kro leitet automatisch Abhängigkeiten aus CEL-Ausdrücken ab und erstellt Ressourcen in der richtigen Reihenfolge. Wenn Ressourcen nicht wie erwartet erstellt werden, überprüfen Sie die Reihenfolge der Abhängigkeiten und die Verfügbarkeit der Ressourcen.

 **Berechnete Erstellungsreihenfolge anzeigen**:

```
# See the order kro will create resources
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.topologicalOrder}'
```

Dies zeigt die berechnete Reihenfolge auf der Grundlage von CEL-Ausdrucksverweisen zwischen Ressourcen.

 **Überprüfen Sie die Verfügbarkeit der Ressourcen:**

```
# View instance status to see which resources are ready
kubectl get custom-kind
         my-instance -o jsonpath='{.status}'

# Check specific resource status
kubectl get deployment my-deployment -o jsonpath='{.status.conditions}'
```

 **Überprüfen Sie die ReadyWhen-Bedingungen (falls verwendet)**:

Das Feld `readyWhen` ist optional. Wenn nicht angegeben, gelten Ressourcen unmittelbar nach der Erstellung als bereit. Wenn Sie `readyWhen` Bedingungen definiert haben, stellen Sie sicher, dass diese korrekt prüfen, ob die Ressourcen bereit sind:

```
resources:
  - id: deployment
    readyWhen:
      - ${deployment.status.availableReplicas == deployment.spec.replicas}
```

 **Überprüfen Sie die Ressourcenereignisse**:

```
# View events for the underlying resources
kubectl get events -n namespace --sort-by='.lastTimestamp'
```

## Fehler bei der Schemavalidierung
<a name="_schema_validation_failures"></a>

Wenn Instanzen aufgrund von Fehlern bei der Schemavalidierung nicht erstellt werden können, überprüfen Sie, ob die Instanz die RGD-Schemaanforderungen erfüllt.

 **Überprüfen Sie die Validierungsfehler**:

```
# Attempt to create instance and view error
kubectl apply -f instance.yaml

# View existing instance validation status
kubectl describe custom-kind
         my-instance | grep -A 5 "Validation"
```

 **Häufige Probleme bei der Validierung**:
+  **Erforderliche Felder fehlen**: Die Instanz stellt nicht alle erforderlichen Schemafelder bereit
+  **Typkonflikt**: Es wird eine Zeichenfolge bereitgestellt, bei der eine Ganzzahl erwartet wird
+  **Ungültiger Aufzählungswert: Es wird ein Wert** verwendet, der nicht in der Liste der zulässigen Werte steht
+  **Musterkonflikt: Die Zeichenfolge stimmt** nicht mit dem Regex-Muster überein

 **RGD-Schema überprüfen**:

```
# View the schema definition
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.spec.schema}'
```

Stellen Sie sicher, dass Ihre Instanz alle erforderlichen Felder mit den richtigen Typen bereitstellt.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Überlegungen zu Kro für EKS](kro-considerations.md)- Überlegungen und bewährte Methoden zu KRO
+  [Kro-Berechtigungen konfigurieren](kro-permissions.md)- Konfigurieren Sie RBAC für Plattform- und Anwendungsteams
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und den Ressourcenlebenszyklus
+  [Problembehebung bei EKS-Funktionen](capabilities-troubleshooting.md)- Allgemeine Hinweise zur Problembehebung

# Vergleich der EKS-Funktionen für Kro mit selbstverwaltetem Kro
<a name="kro-comparison"></a>

Die EKS-Funktion für Kro bietet dieselbe Funktionalität wie selbstverwaltetes Kro, bietet jedoch erhebliche betriebliche Vorteile. Einen allgemeinen Vergleich zwischen EKS-Funktionen und selbstverwalteten Lösungen finden Sie unter. [Überlegungen zu den EKS-Fähigkeiten](capabilities-considerations.md)

Die EKS-Funktion für Kro verwendet dieselben Upstream-Kro-Controller und ist vollständig kompatibel mit Upstream-Kro. ResourceGraphDefinitions, CEL-Ausdrücke und Ressourcenzusammensetzung funktionieren identisch. Eine vollständige Kro-Dokumentation und Beispiele finden Sie in der [Kro-Dokumentation](https://kro.run/docs/overview).

## Migrationspfad
<a name="_migration_path"></a>

Sie können ohne Ausfallzeiten von selbstverwaltetem KRO zur verwalteten Funktion migrieren.

**Wichtig**  
Stellen Sie vor der Migration sicher, dass auf Ihrem selbstverwalteten Kro-Controller dieselbe Version wie die EKS-Funktion für Kro ausgeführt wird. Überprüfen Sie die Funktionsversion in der EKS-Konsole oder verwenden Sie Ihre selbstverwaltete Installation `aws eks describe-capability` und führen Sie anschließend ein entsprechendes Upgrade durch. Dadurch werden Kompatibilitätsprobleme während der Migration vermieden.

1. Aktualisieren Sie Ihren selbstverwalteten Kro-Controller so, dass er ihn `kube-system` für Leasingverträge zur Wahl von Führungskräften verwenden kann:

   ```
   helm upgrade --install kro \
     oci://ghcr.io/awslabs/kro/kro-chart \
     --namespace kro \
     --set leaderElection.namespace=kube-system
   ```

   Dadurch wird der Leasingvertrag des Controllers auf diesen übertragen`kube-system`, sodass sich die verwaltete Kapazität darauf abstimmen kann.

1. Erstellen Sie die Kro-Fähigkeit auf Ihrem Cluster (siehe[Eine Kro-Fähigkeit erstellen](create-kro-capability.md))

1. Die verwaltete Funktion erkennt bestehende Instanzen ResourceGraphDefinitions und übernimmt den Abgleich

1. Skalieren Sie selbstverwaltete KRO-Bereitstellungen schrittweise oder entfernen Sie sie:

   ```
   helm uninstall kro --namespace kro
   ```

Dieser Ansatz ermöglicht eine sichere Koexistenz beider Controller während der Migration. Die verwaltete Funktion übernimmt automatisch Instanzen ResourceGraphDefinitions und Instanzen, die zuvor von einem selbstverwalteten KRO verwaltet wurden, sodass ein kontinuierlicher Abgleich ohne Konflikte gewährleistet ist.

## Nächste Schritte
<a name="_next_steps"></a>
+  [Eine Kro-Fähigkeit erstellen](create-kro-capability.md)- Erstellen Sie eine Kro-Fähigkeitsressource
+  [Kro-Konzepte](kro-concepts.md)- Verstehen Sie die KRO-Konzepte und die Zusammensetzung der Ressourcen

# Problembehebung bei EKS-Funktionen
<a name="capabilities-troubleshooting"></a>

Dieses Thema enthält allgemeine Anleitungen zur Fehlerbehebung bei EKS-Funktionen, einschließlich Funktionsprüfungen, häufig auftretenden Problemen und Links zur funktionsspezifischen Problembehebung.

**Anmerkung**  
Die EKS-Funktionen werden vollständig verwaltet und außerhalb Ihres Clusters ausgeführt. Sie haben keinen Zugriff auf Controller-Logs oder Controller-Namespaces. Die Fehlerbehebung konzentriert sich auf den Zustand der Funktionen, den Ressourcenstatus und die Konfiguration.

## Allgemeiner Ansatz zur Fehlerbehebung
<a name="_general_troubleshooting_approach"></a>

Gehen Sie bei der Behebung von Problemen mit EKS-Funktionen wie folgt vor:

1.  **Funktionsstatus überprüfen**: Dient `aws eks describe-capability` zum Anzeigen des Funktionsstatus und der Integritätsprobleme

1.  **Überprüfen Sie den Ressourcenstatus**: Überprüfen Sie die von Ihnen erstellten Kubernetes-Ressourcen (CRDs) auf Statusbedingungen und Ereignisse

1.  **Überprüfen Sie die IAM-Berechtigungen**: Stellen Sie sicher, dass die Capability Role über die erforderlichen Berechtigungen verfügt

1.  **Konfiguration überprüfen**: Stellen Sie sicher, dass die funktionsspezifische Konfiguration korrekt ist

## Überprüfen Sie den Zustand der Funktionen
<a name="_check_capability_health"></a>

Alle EKS-Funktionen stellen Statusinformationen über die EKS-Konsole und die `describe-capability` API bereit.

 **Konsole**:

1. Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/ home\$1/clusters.

1. Wählen Sie Ihren Clusternamen aus.

1. Wählen Sie den Registerkarte **Beobachtbarkeit**.

1. Wählen Sie **Cluster überwachen** aus.

1. Wählen Sie die Registerkarte **Funktionen**, um den Zustand und den Status aller Funktionen anzuzeigen.

Auf der Registerkarte Funktionen wird Folgendes angezeigt:
+ Name und Typ der Fähigkeit
+ Aktueller Status
+ Gesundheitsprobleme, mit Beschreibung

 ** AWS CLI**:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-capability-name
```

Die Antwort enthält:
+  **Status**: Aktueller Funktionsstatus (`CREATING`,`ACTIVE`,`UPDATING`,`DELETING`,`CREATE_FAILED`,`UPDATE_FAILED`)
+  **Health**: Gesundheitsinformationen, einschließlich aller Probleme, die von der Fähigkeit erkannt wurden

## Allgemeine Status der Fähigkeiten
<a name="_common_capability_statuses"></a>

 **ERSTELLUNG**: Die Fähigkeit wird eingerichtet.

 **AKTIV**: Die Funktion läuft und ist einsatzbereit. Wenn Ressourcen nicht wie erwartet funktionieren, überprüfen Sie den Ressourcenstatus und die IAM-Berechtigungen.

 **AKTUALISIERUNG**: Die Konfigurationsänderungen werden übernommen. Warten Sie, bis der Status wieder angezeigt wird`ACTIVE`.

 **CREATE\$1FAILED** oder **UPDATE\$1FAILED: Beim** Setup oder Update ist ein Fehler aufgetreten. Einzelheiten finden Sie im Abschnitt „Gesundheit“. Häufige Ursachen:
+ Die Vertrauensrichtlinie für IAM-Rollen ist falsch oder fehlt
+ Die IAM-Rolle ist nicht vorhanden oder es kann nicht darauf zugegriffen werden
+ Probleme mit dem Clusterzugriff
+ Ungültige Konfigurationsparameter

## Überprüfen Sie den Kubernetes-Ressourcenstatus
<a name="_verify_kubernetes_resource_status"></a>

EKS-Funktionen erstellen und verwalten benutzerdefinierte Kubernetes-Ressourcendefinitionen (CRDs) in Ihrem Cluster. Überprüfen Sie bei der Fehlerbehebung den Status der Ressourcen, die Sie erstellt haben:

```
# List resources of a specific type
kubectl get resource-kind -A

# Describe a specific resource to see conditions and events
kubectl describe resource-kind
         resource-name -n namespace

# View resource status conditions
kubectl get resource-kind
         resource-name -n namespace -o jsonpath='{.status.conditions}'

# View events related to the resource
kubectl get events --field-selector involvedObject.name=resource-name -n namespace
```

Die Bedingungen für den Ressourcenstatus geben Aufschluss über:
+ Ob die Ressource bereit ist
+ Alle aufgetretenen Fehler
+ Aktueller Stand der Versöhnung

## Überprüfen Sie die IAM-Berechtigungen und den Clusterzugriff
<a name="_review_iam_permissions_and_cluster_access"></a>

Viele Funktionsprobleme sind auf Probleme mit IAM-Berechtigungen oder eine fehlende Cluster-Zugriffskonfiguration zurückzuführen. Überprüfen Sie sowohl die Berechtigungen für die Capability Role als auch die Clusterzugriffseinträge.

### Überprüfen Sie die IAM-Rollenberechtigungen
<a name="_check_iam_role_permissions"></a>

Stellen Sie sicher, dass die Capability-Rolle über die erforderlichen Berechtigungen verfügt:

```
# List attached managed policies
aws iam list-attached-role-policies --role-name my-capability-role

# List inline policies
aws iam list-role-policies --role-name my-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-capability-role --policy-name policy-name

# View the role's trust policy
aws iam get-role --role-name my-capability-role --query 'Role.AssumeRolePolicyDocument'
```

Die Vertrauensrichtlinie muss dem `capabilities.eks.amazonaws.com` Dienstprinzipal Folgendes ermöglichen:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

### Überprüfen Sie die EKS-Zugriffseinträge und Zugriffsrichtlinien
<a name="_check_eks_access_entries_and_access_policies"></a>

Für alle Funktionen sind die richtigen EKS-Zugriffseinträge und -Zugriffsrichtlinien auf dem Cluster erforderlich, auf dem sie ausgeführt werden.

 **Stellen Sie sicher, dass der Zugriffseintrag vorhanden ist**:

```
aws eks list-access-entries \
  --cluster-name my-cluster \
  --region region-code
```

Suchen Sie in der Liste nach dem ARN für die Capability Role. Fehlt die Fähigkeit, kann sie nicht auf den Cluster zugreifen.

 **Überprüfen Sie die dem Eintrag beigefügten Zugriffsrichtlinien**:

```
aws eks list-associated-access-policies \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:role/my-capability-role \
  --region region-code
```

Für alle Funktionen sind entsprechende Zugriffsrichtlinien erforderlich:
+  **ACK**: Benötigt Berechtigungen zum Erstellen und Verwalten von Kubernetes-Ressourcen
+  **kro: Benötigt** Berechtigungen zum Erstellen und Verwalten von Kubernetes-Ressourcen
+  **Argo CD**: Benötigt Berechtigungen zum Erstellen und Verwalten von Anwendungen und erfordert Zugriffseinträge auf Remote-Zielclustern für Bereitstellungen mit mehreren Clustern

 **Für Argo** CD-Bereitstellungen mit mehreren Clustern:

Stellen Sie bei der Bereitstellung auf Remote-Clustern sicher, dass die Capability Role auf jedem Zielcluster über einen Zugriffseintrag verfügt:

```
# Check Access Entry on target cluster
aws eks describe-access-entry \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::111122223333:role/argocd-capability-role \
  --region region-code
```

Wenn der Access-Eintrag auf einem Zielcluster fehlt, kann Argo CD keine Anwendungen darauf bereitstellen. Einzelheiten [Zielcluster registrieren](argocd-register-clusters.md) zur Konfiguration finden Sie unter.

## Funktionsspezifische Problembehebung
<a name="_capability_specific_troubleshooting"></a>

Eine ausführliche Anleitung zur Problembehebung, die für jeden Funktionstyp spezifisch ist, finden Sie unter:
+  [Probleme mit ACK-Funktionen beheben](ack-troubleshooting.md)- Problembehandlung bei der Erstellung von ACK-Ressourcen, IAM-Berechtigungen und kontenübergreifendem Zugriff
+  [Probleme mit den Funktionen von Argo CD beheben](argocd-troubleshooting.md)- Problembehebung bei der Anwendungssynchronisierung, Repository-Authentifizierung und Multi-Cluster-Bereitstellungen
+  [Probleme mit KRO-Funktionen beheben](kro-troubleshooting.md)- Problembehandlung ResourceGraphDefinitions, CEL-Ausdrücke und RBAC-Berechtigungen

## Häufig auftretende Probleme in allen Funktionen
<a name="_common_issues_across_all_capabilities"></a>

### Die Fähigkeit steckt im Status CREATING fest
<a name="_capability_stuck_in_creating_state"></a>

Wenn eine Fähigkeit länger als erwartet im `CREATING` Status verbleibt:

1. Überprüfen Sie den Funktionsstatus auf bestimmte Probleme in der Konsole (**Observability** > **Monitor Cluster** > Registerkarte **Capabilities**) oder mithilfe der AWS CLI:

   ```
   aws eks describe-capability \
     --region region-code \
     --cluster-name my-cluster \
     --capability-name my-capability-name \
     --query 'capability.health'
   ```

1. Stellen Sie sicher, dass die IAM-Rolle existiert und über die richtige Vertrauensrichtlinie verfügt

1. Stellen Sie sicher, dass Ihr Cluster zugänglich und fehlerfrei ist

1. Suchen Sie nach Problemen auf Clusterebene, die die Einrichtung von Funktionen verhindern könnten

### Ressourcen werden nicht erstellt oder aktualisiert
<a name="_resources_not_being_created_or_updated"></a>

Wenn die Funktion aktiviert ist`ACTIVE`, aber Ressourcen nicht erstellt oder aktualisiert werden:

1. Überprüfen Sie den Ressourcenstatus auf Fehlerbedingungen

1. Überprüfen Sie die IAM-Berechtigungen für die spezifischen AWS Dienste (ACK) oder Repositorys (Argo CD)

1. Überprüfen Sie die RBAC-Berechtigungen für die Erstellung der zugrunde liegenden Ressourcen (kro)

1. Überprüfen Sie die Ressourcenspezifikationen auf Validierungsfehler

### Der Zustand der Fähigkeiten weist Probleme auf
<a name="_capability_health_shows_issues"></a>

Es werden gesundheitliche Probleme `describe-capability` angezeigt:

1. Lesen Sie die Problembeschreibungen sorgfältig durch — sie weisen häufig auf das spezifische Problem hin

1. Gehen Sie der Ursache nach (IAM-Berechtigungen, Konfigurationsfehler usw.)

1. Die Funktion wird automatisch wiederhergestellt, sobald das Problem behoben ist

## Nächste Schritte
<a name="_next_steps"></a>
+  [Mit Capability-Ressourcen arbeiten](working-with-capabilities.md)- Ressourcen für Fähigkeiten verwalten
+  [Probleme mit ACK-Funktionen beheben](ack-troubleshooting.md)- ACK-spezifische Fehlerbehebung
+  [Probleme mit den Funktionen von Argo CD beheben](argocd-troubleshooting.md)- CD-spezifische Problembehebung für Argo
+  [Probleme mit KRO-Funktionen beheben](kro-troubleshooting.md)- Kro-spezifische Problembehebung
+  [Sicherheitsüberlegungen für EKS-Funktionen](capabilities-security.md)- Bewährte Sicherheitsmethoden für Funktionen