CI/CD auf AWS - Continuous Integration und Continuous Delivery für 5G-Netzwerke auf AWS

CI/CD auf AWS

Sie können sich CI/CD als Pipeline vorstellen, bei der neuer Code an einem Ende eingereicht und dann in verschiedenen Phasen (Quelle, Build, Test, Staging und Produktion) getestet und als produktionsbereiter Code veröffentlicht wird.

Diagramm mit einem Beispiel für die AWS CodePipeline

Übersicht über die CI/CD-Pipeline

Jede Phase der CI/CD-Pipeline stellt im Bereitstellungsprozess eine logische Einheit dar. Jede Stufe fungiert als Tor, das einen bestimmten Aspekt des Codes untersucht. Wenn der Code die Pipeline durchläuft, sollte seine Qualität in den späteren Phasen höher sein, da ja immer mehr Aspekte überprüft werden. Werden in einer frühen Phase Probleme erkannt, durchläuft der Code die Pipeline nicht weiter. Die Ergebnisse der Tests werden sofort an das Team gesendet und alle weiteren Builds und Releases werden gestoppt, wenn die Software eine Phase nicht erfolgreich besteht.

AWS bietet einen vollständigen Satz von CI/CD-Entwicklertools zur Beschleunigung der Softwareentwicklung und Veröffentlichungszyklen. AWS CodePipeline automatisiert die Build-, Test- und Bereitstellungsphasen des Veröffentlichungsprozesses bei jeder Codeänderung auf der Grundlage des definierten Veröffentlichungsmodells. Dies ermöglicht die schnelle und zuverlässige Bereitstellung von Funktionen und Updates.

Code-Pipelines können in andere Services integriert werden. Dies können AWS-Services wie Amazon Simple Storage Service (Amazon S3) sein oder Produkte von Drittanbietern, wie z. B. GitHub. AWS CodePipeline kann für eine Vielzahl von Entwicklungs- und Betriebsanwendungsfälle eingesetzt werden, darunter:

  • Code mit AWS CodeBuild kompilieren, entwickeln und testen

  • Continuous Delivery von Container-basierten Anwendungen in der Cloud

  • Validierung von Artefakten (z. B. Deskriptoren und Container-Images) vor der Bereitstellung, die für Netzwerkservices oder bestimmte cloudnative Netzwerkfunktionen erforderlich sind

  • Funktions-, Integrations- und Leistungstests für containerisierte Netzwerkfunktionen/virtuelle Netzwerkfunktionen (CNF/VNF), einschließlich Baseline- und Regressionstests

  • Tests zur Zuverlässigkeit und Notfallwiederherstellung

Diagramm mit AWS CI/CD-Pipeline-Komponenten

AWS CI/CD-Pipeline-Komponenten

AWS kann CI/CD-Pipelines mit den folgenden AWS-Entwicklertools einrichten:

Die Erstellung einer CI/CD-Pipeline kann mithilfe von AWS CDK und AWS CloudFormation automatisiert werden. In der NFV-Domäne kann diese AWS-native Automatisierung in ein Framework zur Verwaltung und Orchestrierung (MANO) und das Framework zur Service-Orchestrierung des CSPs integriert werden.

Der CI/CD-Prozess umfasst die folgenden Schritte:

  • Netzwerkeinrichtung – AWS CDK und AWS CloudFormation initiieren die Erstellung der Netzwerkvoraussetzungen:

  • Infrastrukturbereitstellung – AWS CDK und AWS CloudFormation initiieren die Erstellung der folgenden Ressourcen-Stacks:

  • Bereitstellung der Cloud Network Function (CNF) – In dieser Phase werden CNFs mithilfe von Kubectl und Helm-Chart-Tools auf EKS-Clustern bereitgestellt. In dieser Phase werden auch alle spezifischen Anwendungen oder Tools bereitgestellt, die für ein effizientes Funktionieren der CNFs erforderlich sind (z. B. Prometheus oder Fluentd ). CNFs können entweder über Lambda-Funktionen oder mit AWS CodeBuild bereitgestellt werden.

  • Fortlaufende Aktualisierungen und Bereitstellung – Hierbei handelt es sich um eine Abfolge von wiederholt ausgeführten Schritten, um Container-/Konfigurationsänderungen bereitzustellen, die zu Upgrades führen. Ähnlich wie bei der CNF-Bereitstellung können kontinuierliche Aktualisierungen und Bereitstellungen mithilfe von AWS-Services automatisiert werden, wobei der Auslöser AWS CodeCommit, Amazon Elastic Container Registry (Amazon ECR) oder das Quellsystem eines Drittanbieters wie z. B. GitLab Webhooks sein kann.

Diagramm, das den AWS CI/CD-Pipeline-Verlauf darstellt.

Flussdiagramm der AWS CI/CD-Pipeline

Die CI/CD-Pipeline wird mit AWS CodePipeline erstellt und nutzt einen Continuous Delivery-Service, der die erforderlichen Schritte für den Software-Release modelliert, visualisiert und automatisiert. Durch die Definition von Phasen in einer Pipeline können Sie Code aus einem Quellcode-Repository abrufen, diesen Quellcode in ein veröffentlichungsfähiges Artefakt umwandeln, das Artefakt testen und es in der Produktion bereitstellen. Es wird nur Code bereitgestellt, der alle diese Phasen erfolgreich durchläuft. Sie können optional weitere Anforderungen in Ihre Pipeline aufnehmen, z. B. manuelle Genehmigungen, um sicherzustellen, dass nur genehmigte Änderungen in der Produktion bereitgestellt werden.