Jenkins X - AWS Präskriptive Leitlinien

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.

Jenkins X

Jenkins X ist eine Cloud-native CI/CD Open-Source-Plattform, die Prinzipien für Kubernetes-Umgebungen implementiert. GitOps Jenkins X ist zwar nicht ausschließlich ein GitOps Tool wie Argo CD oder Flux, integriert aber Praktiken in seine Workflows. GitOps

GitOps Unterstützung

Flächen Funktionen des Tools

GIT-zentrierter Arbeitsablauf

Jenkins X verwendet Git-Repositorys als primäre Informationsquelle sowohl für den Anwendungscode als auch für die Konfiguration. Alle Änderungen an Anwendungen und Infrastruktur werden über Git vorgenommen.

Umgebung als Code (EaC)

Umgebungen (wie Staging und Produktion) werden in Git-Repositorys als Code definiert. Dies ermöglicht die Versionskontrolle und Überprüfung von Umgebungskonfigurationen.

Automatisierte CI/CD Pipelines

Jenkins X richtet automatisch CI/CD Pipelines für Projekte ein. Diese Pipelines sind als Code (Pipeline als Code) definiert und in Git gespeichert.

Kubernetes-nativ

Jenkins X wurde speziell für Kubernetes-Umgebungen entwickelt. Es verwendet Kubernetes-Ressourcen und benutzerdefinierte Ressourcendefinitionen (). CRDs

Umgebungen in der Vorschau anzeigen

Jenkins X erstellt automatisch temporäre Umgebungen für Pull-Requests. Es ermöglicht die einfache Überprüfung und das Testen von Änderungen vor der Zusammenführung.

Förderung zwischen Umgebungen

Jenkins X verwendet einen GitOps Ansatz zur Förderung von Anwendungen zwischen Umgebungen (z. B. vom Staging bis zur Produktion). Werbeaktionen werden mithilfe von Pull-Requests abgewickelt, um einen ordnungsgemäßen Überprüfungs- und Genehmigungsprozess sicherzustellen.

Verwaltung von Helm-Diagrammen

Jenkins X verwendet Helm-Diagramme, um Anwendungen zu verpacken und bereitzustellen. Diagramme werden in Git-Repositorys versionsgesteuert.

Automatisierte Versionierung

Jenkins X verwaltet automatisch die Versionierung von Anwendungen und Releases. Es verwendet semantische Versionierung und generiert Versionshinweise.

ChatOps Integration

Jenkins X unterstützt gängige ChatOps Operationen. Dies entspricht den GitOps Prinzipien der Automatisierung und Zusammenarbeit.

Erweiterbarkeit

Dieses Tool bietet ein Plugin-System zur Erweiterung der Funktionalität. Es ermöglicht die Integration mit verschiedenen Cloud-nativen Tools.

Infrastructure as Code (IaC)

Jenkins X unterstützt Terraform, CloudFormation AWS Cloud Development Kit (AWS CDK), und andere IaC-Tools zur Definition und Verwaltung der Infrastruktur. Infrastrukturdefinitionen werden zusammen mit dem Anwendungscode versionsgesteuert.

Automatisierte Rollbacks

Jenkins X unterstützt automatisierte Rollbacks, wenn nach der Bereitstellung Probleme festgestellt werden.

Verwaltung von Secrets

Das Tool lässt sich in externe Secrets-Management-Lösungen integrieren, um vertrauliche Informationen sicher zu handhaben.

Beobachtbarkeit

Jenkins X bietet die Integration mit Überwachungs- und Protokollierungstools für die Beobachtbarkeit.

Multi-Cloud-Unterstützung

Jenkins X ist so konzipiert, dass es mit verschiedenen Cloud-Anbietern und lokalen Umgebungen funktioniert.

Zusammenarbeit im Team

Dieses Tool fördert die Zusammenarbeit durch Git-basierte Workflows und Pull-Requests.

Kontinuierliches Feedback

Das Tool bietet schnelles Feedback zu Änderungen durch automatisierte Test- und Vorschauumgebungen.

DevOps bewährte Verfahren

Jenkins X implementiert standardmäßig DevOps bewährte Verfahren, einschließlich GitOps Prinzipien.

Deklarative Konfiguration

Das Tool verwendet deklarative Konfigurationen zur Definition von Anwendungen und Umgebungen.

Automatisierte Upgrades

Jenkins X bietet Tools zur Automatisierung von Upgrades der Jenkins X-Plattform selbst.

Jenkins X implementiert diese GitOps Prinzipien, um eine umfassende CI/CD-Lösung für Kubernetes zu erstellen. Es zielt darauf ab, den gesamten Softwarebereitstellungsprozess, vom Code-Commit bis zur Produktionsbereitstellung, zu automatisieren und zu rationalisieren und dabei die üblichen Verfahren einzuhalten. GitOps Auf diese Weise unterstützt es Teams dabei, schnellere, zuverlässigere und konsistentere Implementierungen in cloudnativen Umgebungen zu erreichen.

Der Hauptunterschied zwischen Jenkins X und Tools wie Argo CD oder Flux besteht darin, dass Jenkins X eine umfassendere CI/CD Lösung bietet, einschließlich Build-Automatisierung und Pipeline-Management, während gleichzeitig Prinzipien für die Bereitstellung und das Umgebungsmanagement berücksichtigt GitOps werden. Dies macht es besonders für Teams geeignet, die eine all-in-one Lösung benötigen, die sowohl CI- als auch CD-Aspekte in einem einzigen Framework abdeckt. GitOps

Weitere Informationen finden Sie in der Jenkins X-Dokumentation.

Architektur

Das folgende Diagramm veranschaulicht einen GitOps CD-Workflow, der Jenkins X verwendet. Ausführliche Informationen finden Sie in der Jenkins X-Dokumentation.

Jenkins X-Architektur und Workflow auf. AWS

Wobei:

  • Schritt 1: Zusammenführung von Pull-Requests (PR). Ein Entwickler erstellt eine Pull-Anfrage, die Änderungen an Kubernetes-Manifesten, Helm-Diagrammen oder Anwendungscode enthält, der in einem Git-Repository gespeichert ist. Nach der Überprüfung und Genehmigung wird der PR mit dem Hauptzweig zusammengeführt und aktualisiert den gewünschten Status in der Quellcodeverwaltung.

  • Schritt 2: Repository-Synchronisierung. Jenkins X löst automatisch eine CI/CD Pipeline aus, wenn es die Änderung erkennt. Die Pipeline erstellt, testet und verbreitet die Anwendung mithilfe von Prinzipien in verschiedenen Umgebungen (z. B. Staging und Produktion). GitOps

  • Schritt 3: Bereitstellung in Ziel-Namespaces. Jenkins X aktualisiert die Umgebungs-Repositorys (Staging und Produktion) mit den neuen Anwendungsversionen. Der Cluster gleicht die Änderungen automatisch ab, indem er die neuesten Manifeste aus Git abruft und die Anwendung in den entsprechenden Namespaces bereitstellt.