Zielcluster registrieren - 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.

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 \ --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 (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:

  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.

  2. Ordnen Sie eine Zugriffsrichtlinie den entsprechenden Kubernetes-RBAC-Berechtigungen zu

  3. 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 \ --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 (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 \ --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

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