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.
Zielcluster registrieren
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 unterAnwendungen erstellen.
Voraussetzungen
-
Es wurde ein EKS-Cluster mit der Argo-CD-Funktion erstellt
-
kubectlkonfiguriert für die Kommunikation mit Ihrem Cluster -
Für Remote-Cluster: entsprechende IAM-Berechtigungen und Zugriffseinträge
Registrieren Sie den lokalen Cluster
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
So führen Sie die Bereitstellung auf Remote-Clustern durch:
Schritt 1: Erstellen Sie den Zugriffseintrag auf dem Remote-Cluster
region-codeErsetzen 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 \ --regionregion-code\ --cluster-nameremote-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 \ --regionregion-code\ --cluster-nameremote-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 (entsprichtsystem: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
So führen Sie die Bereitstellung auf Clustern mit unterschiedlichen AWS Konten durch:
-
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.
-
Ordnen Sie eine Zugriffsrichtlinie den entsprechenden Kubernetes-RBAC-Berechtigungen zu
-
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
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
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
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: * Wenn Sie den Cluster nur als Argo-CD-Hub zur Verwaltung von Remote-Clustern verwenden, benötigt er keine lokalen Bereitstellungsberechtigungen. * Wenn Sie Anwendungen lokal bereitstellen, benötigt er Lesezugriff für den gesamten Cluster und Schreibzugriff auf bestimmte Namespaces. * 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
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
Verwenden Sie für einen schnellen Einstieg in Test- oder EntwicklungsumgebungenAmazonEKSClusterAdminPolicy:
aws eks associate-access-policy \ --regionregion-code\ --cluster-namemy-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 (entsprichtsystem: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
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 \ --regionregion-code\ --cluster-namemy-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
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.
Weitere Ressourcen
-
Zusammenarbeit mit Argo CD Projects- Organisieren Sie Anwendungen und setzen Sie Sicherheitsgrenzen durch
-
Anwendungen erstellen- Stellen Sie Ihre erste Anwendung bereit
-
Benutzen ApplicationSets- Stellen Sie die Lösung auf mehreren Clustern bereit mit ApplicationSets
-
Überlegungen zu Argo CD- Multi-Cluster-Muster und kontenübergreifende Einrichtung
-
Deklaratives Cluster-Setup — Referenz
zur Upstream-Cluster-Konfiguration