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.
Aktivieren Sie den automatischen Amazon EKS-Modus für alle EKS-Cluster mithilfe von GitHub Aktionen
Urbija Goswami und Anugrah Lakra, Amazon Web Services
Zusammenfassung
Amazon Elastic Kubernetes Service Service-Cluster erfordern traditionell die manuelle Verwaltung von Rechenressourcen über Knotengruppen. Dadurch entsteht betrieblicher Mehraufwand für:
Entscheidungen zur Kapazitätsplanung und Skalierung
Bereitstellung von Knoten und Lebenszyklusmanagement
Kostenoptimierung für verschiedene Workload-Typen
Wartung und Aktualisierung der Infrastruktur
Amazon EKS Auto Mode automatisiert das Rechenressourcenmanagement durch die dynamische Bereitstellung und Skalierung von Knoten auf der Grundlage der Workload-Anforderungen, sodass kein manuelles Knotengruppenmanagement erforderlich ist.
Viele Unternehmen haben jedoch Schwierigkeiten, Amazon EKS Auto Mode in ihren bestehenden und neuen Clustern konsistent zu aktivieren und zu verwalten. Zu den häufigsten Herausforderungen gehören:
Komplexe Migrationsprozesse aus bestehenden Knotengruppen
Risiko einer Betriebsunterbrechung während der Umstellung
Sorgfältige Kapazitätsplanung und Tests sind erforderlich
Anforderung bestimmter Amazon IAM-Berechtigungen
und -Konfigurationen Koordination zwischen mehreren Teams und Umgebungen
Dieses Muster implementiert einen GitHub Aktionsworkflow
Nach der Aktivierung des automatischen Modus entleert und löscht der Workflow alte Knotengruppen, aktualisiert die Berechtigungen für Clusterrollen und bereinigt frühere Skalierungskomponenten wie Karpenter und Cluster Autoscaler. Der Workflow kann in bestehende Continuous Integrations- und Continuous () -Pipelines integriert werden. delivery/deployment CI/CD
Voraussetzungen und Einschränkungen
Voraussetzungen
1. Erforderlich
Ein GitHub Konto
und Ihr eigenes GitHub Repository, um den Workflow auszuführen Ein aktives AWS Konto
mit Administratorrechten
2. Installation lokaler Tools
Terraform
Version 1.13.0 oder höher GitHub CLI
(gh), konfiguriert mit entsprechenden Anmeldeinformationen kubectl und eksctl, konfiguriert für die Clusterverwaltung
3. Anforderungen an den EKS-Cluster
Kubernetes Version 1.29 oder höher
Konfiguration des Endpunktzugriffs:
Entweder ist es auf öffentliche und private Endpunkte eingestellt
Oder privater Endpunkt mit NAT Gateway in privaten Subnetzen
EKS-API und ConfigMapClusterzugriff aktiviert (erforderlich, damit EKS Knoten im automatischen Modus dynamisch verwalten und aws-auth ConfigMap für eine korrekte Clusterauthentifizierung während der Migration aktualisieren kann)
Aktive Knotengruppen oder verwaltete Knotenpools
4. IAM OIDC-Konfigurationsanforderungen
Dazu gehören die IAM-Rolle und der Identitätsanbieter: GitHub
Vertrauensrichtlinie für OIDC GitHub
Berechtigungen für:
EKS-Clusterverwaltung
S3-Bucket-Zugriff
IAM-Rollenmanagement
EC2-Netzwerkmanagement
Eine einfache Einrichtung mit Terraform finden Sie im iam.tf-Code
. Die IAM-Rolle ( GitHubActionsEKSRole) wird erstellt, wenn der Terraform-Code angewendet wird.
Einschränkungen
Unterstützt nur EKS-Cluster mit Kubernetes Version 1.29 und höher
Unterstützt nur Karpenter Version 1.1.0 und höher
Region-specific Implementierung. Einige AWS Dienste sind nicht in allen AWS Regionen verfügbar. Informationen zur Verfügbarkeit in verschiedenen Regionen finden Sie unter AWS Dienste nach Regionen
Erfordert Barrierefreiheit am Cluster-Endpunkt
Beschränkt auf AWS-verwaltete Knotengruppen
Architektur
Zieltechnologie-Stack
Zielarchitektur

Der GitHub Aktionsworkflow wird vom Benutzer aus dem GitHub Repository ausgelöst.
Der GitHub Aktionsworkflow nimmt eine IAM-Rolle an und verwendet OIDC, um die erforderlichen Änderungen am Konto vorzunehmen. AWS Außerdem wird geprüft, ob die EKS Auto Node-Rolle im Konto vorhanden ist. Falls nicht vorhanden, wird die Rolle erstellt und die erforderlichen Richtlinien werden angehängt.
Eine Sicherungskopie des aktuellen Status des EKS-Clusters, für den der automatische Modus aktiviert sein muss, wird in einen S3-Bucket hochgeladen.
Die Clusterrolle des Clusters, für den der automatische Modus aktiviert sein muss, wird abgerufen und ihr werden zusätzliche Berechtigungen (AmazonEKSComputePolicy AmazonEKSBlockStoragePolicy, AmazonEKSLoadBalancingPolicy,, AmazonEKSNetworkingPolicy, AmazonEKSClusterPolicy) hinzugefügt, falls sie nicht für den EKS-Automatikmodus vorhanden sind. Zusätzlich werden vor der Migration die Subnetze der Cluster mit Tags für die Aktivierung des EKS Auto Mode aktualisiert.
Der Workflow aktiviert den automatischen EKS-Modus im EKS-Cluster.
Alte Knotengruppen werden identifiziert und gelöscht. Dies wird übersprungen, wenn der Benutzer der IAM-Rolle nicht die in den nachfolgenden optionalen Einrichtungsschritten beschriebenen Berechtigungen erteilt hat.
Skalierungskomponenten (Karpenter und Cluster Autoscaler) werden ebenfalls entfernt, sofern sie zuvor vorhanden waren.
Der GitHub Aktionsablauf besteht aus drei Hauptaufgaben:
check-clusters: Identifiziert Cluster ohne aktivierten automatischen Modus und aktualisiert IAM-Richtlinien und Subnetz-Tags.backup-and-check: Sichert den Clusterstatus vor der Migration.gradual-migration: Aktiviert den automatischen Modus, während bestehende Knotengruppen schrittweise geleert und alte Skalierungskomponenten bereinigt werden. Außerdem wird der Status der Cluster nach der Migration abschließend überprüft.
Anmerkung
Wenn Sie Backups der Knotenkonfiguration benötigen oder während der Migration zum automatischen EKS-Modus nodes/node Gruppen löschen möchten, können Sie die mit dem Terraform-Code erstellte IAM-Rolle zu aws-auth hinzufügen. ConfigMap Ohne sie können Sie immer noch Knotengruppenkonfigurationen anzeigen.
Tools
AWS Dienste
AWS CLI: AWS CLIist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS Diensten interagieren können. In unserer Lösung verwenden wir die Befehlszeilenschnittstelle für AWS Dienste, um EKS-Cluster-Konfigurationsupdates und IAM-Rollenaktualisierungen auszuführen und den Clusterstatus während des gesamten Automatisierungsprozesses abzufragen.
Amazon EKS: Mit Amazon Elastic Kubernetes Service können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen. In diesem Muster ist Amazon EKS der Zielservice, bei dem der Auto-Modus aktiviert ist, um die Rechenbereitstellung und die Knotenskalierung über Cluster in einer bestimmten Region hinweg zu automatisieren.
IAM: IAM hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem es kontrolliert, wer authentifiziert und autorisiert ist, diese zu verwenden. In unserer Lösung verwenden wir es, um Berechtigungen für GitHub Aktionen zur Änderung von EKS-Cluster-Konfigurationen über den OIDC-Verbund zu verwalten. Die Lösung ändert auch die Berechtigungen der Clusterrollen und fügt einen Job zur Erstellung der EKS-Knotenrolle hinzu, sodass der automatische EKS-Modus die ausstehenden Pods in neuen Knoten einplanen kann, die dann als Teil der Knotenpools eingerichtet werden.
Amazon S3: Amazon S3 ist ein cloudbasierter Objektspeicherservice, mit dem Sie beliebige Datenmengen speichern, schützen und abrufen können. In unserer Lösung verwenden wir einen S3-Bucket, um die Backups der Cluster mit Zeitstempel zu speichern, bevor der automatische EKS-Modus in ihnen aktiviert wird, was bei der Notfallwiederherstellung helfen würde.
Andere Tools:
GitHub GitHub Aktionen: Actions
ist eine CI/CD Plattform, die in unserer Lösung zur Automatisierung des EKS Auto Mode Enablement-Workflows verwendet wird. Sie bietet auch eine sichere Authentifizierung über OIDC und verwaltet die Pipeline-Ausführung über mehrere Cluster hinweg. HashiCorp Terraform: Terraform
ist ein Infrastructure-as-Code-Tool (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können. Unsere Lösung verwendet Terraform, um IAM-Rollen und -Richtlinien bereitzustellen und die OIDC-Anbieterkonfiguration für eine sichere Actions-Integration hinzuzufügen. GitHub
Code-Repository
Der Code für dieses Muster ist im Repository GitHub EKS Auto Mode Enablement via GitHub Actions
Bewährte Methoden
Sicherheit:
Folgen Sie dem Prinzip der geringsten Rechte und gewähren Sie die für die Ausführung einer Aufgabe erforderlichen Mindestberechtigungen. Weitere Informationen finden Sie in der IAM-Dokumentation unter Geringste Rechte gewähren und bewährte Methoden zur Sicherheit. Die erforderliche Mindestkonfiguration finden Sie in der Datei iam.tf
im Repository. Richten Sie die Vertrauensrichtlinie für IAM-Rollen auf Ihr spezifisches GitHub Repository und Ihren Branch ein, um zu verhindern, dass unautorisierte Workflow-Läufe die Rolle übernehmen.
Aktivieren Sie die Protokollierung der EKS-Kontrollebene (API-Server, Audit, Authenticator), bevor Sie mit der Migration beginnen, damit Sie Probleme mit der Planung oder Authentifizierung diagnostizieren können, nachdem der automatische Modus aktiviert wurde.
Fügen Sie dem Backup-Skript
--sse AES256 to all aws s3 cpBefehle hinzu, um serverseitige Verschlüsselung bei Clusterstatus-Backups durchzusetzen.
Zuverlässigkeit:
Testen Sie den Workflow zunächst mit einem Cluster, der nicht zur Produktion gehört. Stellen Sie sicher, dass Workloads auf Knoten im automatischen Modus korrekt neu geplant werden, bevor Sie Produktionscluster migrieren.
Stellen Sie sicher, dass S3-Backups erfolgreich abgeschlossen wurden und gültige Cluster-Konfiguration, Knotengruppe, Helm-Version und benutzerdefinierte Ressourcendaten enthalten, bevor Sie mit der Aktivierung des automatischen Modus fortfahren.
Nachdem Sie den automatischen Modus aktiviert haben, können Sie Pod-Scheduling-Ereignisse und die Latenz bei der Knotenbereitstellung mithilfe von Amazon CloudWatch Container Insights überwachen, um Probleme frühzeitig zu erkennen.
Leistung:
Überprüfen Sie regelmäßig die Skalierungsmuster für Knotenpools im automatischen Modus und passen Sie die Anforderungen und Grenzwerte für Workload-Ressourcen an, um Überbereitstellungen oder Verzögerungen bei der Planung zu vermeiden.
Kosten:
Kennzeichnen Sie EKS-Cluster und zugehörige Ressourcen (IAM-Rollen, S3-Backup-Buckets, Subnetze) mit Umgebungs- und Eigentumsmetadaten, um die Kostenverfolgung und betriebliche Transparenz zu unterstützen. Weitere Informationen finden Sie in der Dokumentation zum Taggen von AWS-Ressourcen. Sie können die Workflow-Datei bearbeiten, um während des Migrationsprozesses benutzerdefinierte Tags hinzuzufügen.
Richten Sie AWS Cost Explorer Explorer-Benachrichtigungen ein, um Änderungen der Rechenkosten nach der Aktivierung des automatischen Modus zu überwachen, da der automatische Modus die Instance-Typen und das Skalierungsverhalten ändern kann. Weitere Informationen finden Sie in der Dokumentation Analysieren Ihrer Kosten mit AWS Cost Explorer.
Operationen:
Behalten Sie die Versionskontrolle für die Workflow-Datei und die Terraform-Konfigurationen bei und dokumentieren Sie alle umgebungsspezifischen Überschreibungen wie Region, Rollen-ARN oder S3-Bucket-Namen.
Epen
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Konfigurieren Sie das GitHub Repository. |
| AWS DevOps, Cloud-Architekt |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Richten Sie IAM für die Sicherung und das Löschen von Knotengruppen ein |
Ersetzen Sie $CLUSTER_NAME und $ACCOUNT_ID durch die entsprechenden Werte.
Ersetzen Sie $AWS_REGION und $ROLE_ARN durch die spezifische Region bzw. den ARN der oben erstellten IAM-Rolle. | AWS DevOps, Cloud-Architekt |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Löst den GitHub Aktionen-Workflow aus. | Der Workflow wird automatisch ausgelöst, wenn Änderungen an den Feature-, Main- oder Dev-Branches vorgenommen werden. Manuelles Auslösen über die GitHub Benutzeroberfläche: 1. Gehe zum Repository am GitHub 2. Klicken Sie auf die Registerkarte „Aktionen“ 3. Wählen Sie den Workflow (Auto-Mode-Pipeline) aus 4. Klicken Sie auf die Schaltfläche „Workflow ausführen“ 5. Wählen Sie den Zweig aus und klicken Sie auf „Workflow ausführen“ Der Workflow führt die Überprüfung | AWS DevOps, Cloud-Architekt |
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Implementierung der Bereitstellung in mehreren Umgebungen. |
|
| Aufgabe | Description | Erforderliche Fähigkeiten |
|---|---|---|
Bereinigen Sie die Ressourcen. |
| Allgemein AWS, Cloud-Architekt |
Fehlerbehebung
| Problem | Lösung |
|---|---|
Probleme mit der Authentifizierung | • Stellen Sie sicher, dass der GitHub OIDC-Anbieter in AWS IAM korrekt konfiguriert ist • Überprüfe, ob der ARN der IAM-Rolle in Git Secrets mit der tatsächlichen Rolle übereinstimmt, die mit terraform () erstellt wurde • Stellen Sie sicher, dass GitHub das Repository die erforderlichen Geheimnisse konfiguriert hat — AWS_REGION und. AWS_ROLE_ARN • Stellen Sie sicher, dass die AWS-Regionseinstellungen mit Ihren Cluster-Standorten übereinstimmen |
Probleme mit Genehmigungen | • Testen Sie die IAM-Rollenberechtigungen lokal: • Stellen Sie sicher, dass die Rolle über Berechtigungen |
Cluster-Kompatibilität | • Vergewissern Sie sich, dass auf EKS-Clustern Kubernetes 1.29 oder höher ausgeführt wird: • Stellen Sie sicher, dass sich die Cluster im Status AKTIV befinden, bevor Sie den automatischen Modus aktivieren |
Workflow-Fehler | • Suchen Sie in den GitHub Aktionsprotokollen nach bestimmten Fehlermeldungen • Überprüfen Sie die Syntax der Workflow-Datei in. github/workflows/auto-modus-pipeline.yml • Stellen Sie sicher, dass die Umgebungsvariablen im Workflow richtig gesetzt sind |