Argo CD-Konzepte - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

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

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

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

Argo CD-Konzepte

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

Nachdem Sie die Argo-CD-Funktion erstellt haben (sieheErstellen einer Argo CD-Funktion), 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

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

Alternativ können Sie den Cluster mit einem Kubernetes Secret registrieren (Einzelheiten finden Sie unterZielcluster registrieren).

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 unterRepository-Zugriff konfigurieren). 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.

Schritt 2: Eine Anwendung erstellen

Erstellen Sie dieses Anwendungsmanifest inmy-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 (argocd app get guestbook) oder die Argo-CD-Benutzeroberfläche (zugänglich über die EKS-Konsole auf der Registerkarte Capabilities Ihres Clusters) anzeigen.

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

GitOps Prinzipien und Quelltypen

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.

Synchronisieren und Abgleichen

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)

  2. Vergleicht den gewünschten Status mit dem Clusterstatus

  3. Markiert Anwendungen als Synced oder OutOfSync

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

  5. Ü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). Auf diese Weise können Sie vor Bereitstellungen (Wave) Abhängigkeiten wie Namespaces (Wave-1) erstellen. 0

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.

Integrität der Anwendung

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

Integritätsstatus: * Fehlerfrei — Alle Ressourcen laufen wie erwartet * Fortschritt — Ressourcen werden erstellt oder aktualisiert * Heruntergestuft — Einige Ressourcen sind nicht fehlerfrei (Pods stürzen ab, Jobs schlagen fehl) * Suspendiert — Anwendung wurde absichtlich angehalten * 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 gibtDegraded, ist es auch die Anwendung. Degraded

Weitere Informationen finden Sie unter Resource Health in der Argo-CD-Dokumentation.

Muster mit mehreren Clustern

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: * Zentrale Steuerung und Transparenz * Konsistente Richtlinien für alle Cluster * Eine Argo-CD-Instanz zur Verwaltung * 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: * Clustertrennung (ein Fehler hat keine Auswirkungen auf andere) * Einfachere Vernetzung (keine clusterübergreifende Kommunikation) * Einfachere Ersteinrichtung (keine Clusterregistrierung)

Wählen Sie hub-and-spoke 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

Projekte

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

Alle Anwendungen gehören zu einem Projekt. Wenn nicht angegeben, verwenden sie das default Projekt (für das keine Einschränkungen gelten). Erstellen Sie für die Produktion Projekte mit entsprechenden Einschränkungen.

Informationen zur Projektkonfiguration und zu RBAC-Mustern finden Sie unter. Argo-CD-Berechtigungen konfigurieren

Organisation des Repositoriums

Die meisten Teams verwenden eine verzeichnisbasierte Organisation mit Kustomize-Overlays oder Helm-Wertedateien für verschiedene Umgebungen:

my-app/ ├── base/ │ ├── deployment.yaml │ └── service.yaml └── overlays/ ├── dev/ │ └── kustomization.yaml ├── staging/ │ └── kustomization.yaml └── prod/ └── kustomization.yaml

Dieser Ansatz bietet Flexibilität und Klarheit und behält gleichzeitig alle Umgebungskonfigurationen in einem einzigen Repository bei.

Detaillierte Strukturmuster und bewährte Methoden für Repositorys finden Sie in der Dokumentation zu den bewährten Methoden von Argo CD.

Synchronisierungsoptionen

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

Eine vollständige Liste der Synchronisierungsoptionen finden Sie in der Dokumentation zu den Argo-CD-Synchronisierungsoptionen.

Nächste Schritte