

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

# 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