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.
Ü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
Code-Pipelines können in andere Services integriert werden. Dies können AWS-Services wie Amazon Simple Storage Service
-
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
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
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.
Flussdiagramm der AWS CI/CD-Pipeline
Die CI/CD-Pipeline wird mit AWS CodePipeline