05. September 2017

Continuous Integration für Kubernetes mit Jenkins

Continuous Integration für Kubernetes mit Jenkins (Bild: pixabay.com/StockSnap)

Bei der Entwicklung und dem Betrieb von Software mit modernen Microservices sind Continuous Integration (CI) und Continuous Delivery (CD) nicht mehr weg zu denken. Dazu gehört auch die Philosophie, jeden Build der Software gründlich zu testen und aktuell zu halten. Dieser Beitrag befasst sich mit den Herausforderungen bei CI/CD mit Jenkins von Kubernetes-basierten Software Produkten.

Jenkins – von Code zu Container

Das frei verfügbare Produkt Jenkins ist eine Software für das Bauen und Deployen von Applikationen. Es wird weitgehend als CI/CD Software benutzt, da es sehr einfach mit verschiedenen Plugins erweiterbar ist; außerdem ist es einfach zu installieren und lässt sich sehr leicht bedienen.

Über ein Web Interface lassen sich vordefinierte Software Deployments anstoßen, die auch automatisiert in eine Betriebsumgebung (wie Kubernetes) geschickt werden können. Der Deployment-Ablauf beginnt für Jenkins meistens mit einem externen Ereignis. Dies kann zum Beispiel ein Commit in ein Git Repository sein. Jenkins lädt den Software Code aus Git und baut daraus eine Applikation mit allen notwendigen Abhängigkeiten, die anschließend von Jenkins in ein Docker Image verpackt wird. Dieses Docker Image wird danach in ein Docker Repository hochgeladen, damit es für Applikationsserver verfügbar ist. Mit Jenkins haben wir uns in diesem Blog-Beitrag bereits ausführlich auseinandergesetzt. Ganzen Beitrag lesen