10. Oktober 2017

Anforderungen an Applikationen in Kubernetes

Anforderungen an Applikationen in Kubernetes (Bild: https://github.com/kubernetes/kubernetes/blob/master/logo/usage_guidelines.md + Daniel Theuke)

Im Blogartikel zu Kubernetes (K8s) sind wir bereits auf einige Vorteile von Kubernetes-Containern eingegangen. Ebenso haben wir im Artikel Continuous Integration für Kubernetes mit Jenkins erfahren, wie man Applikationen in K8s konfigurieren und automatisch deployen lassen kann.

Kann man denn jede beliebige Applikation in Kubernetes laufen lassen? Wie so häufig ist die Antwort darauf ein klares Jein.

Hier soll es vor allem um die Anforderungen an Web-Applikationen gehen. Natürlich kann man all das, was irgendwo läuft, auch in einen Docker-Container packen und dementsprechend in Kubernetes betreiben. Allerdings bietet allein die Tatsache, dass eine Anwendung in Kubernetes läuft, noch keine echten Vorteile.

Anforderungen an die Applikation

Damit es überhaupt Sinn macht, eine Applikation in Kubernetes zu starten, muss die Applikation die folgenden Grundvoraussetzungen erfüllen:

  • Die Applikation muss ohne menschlichen Eingriff starten;
  • Die Applikation muss damit zurechtkommen, dass sie ggf. ohne Vorwarnung neu gestartet wird;
  • Die Applikation sollte mehrfach gleichzeitig (ggf. in verschiedenen Versionen) laufen können;
  • Die Applikation muss überwachbar sein.

Ganzen Beitrag lesen

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

06. Juli 2017

Warum Kubernetes die richtige Plattform für Container ist

Warum Kubernetes die richtige Plattform für Container ist (PIRO4D / pixabay.com)

Wenn Trends aufeinander treffen

Die aktuellen Trends DevOps und Container (Docker) beschäftigen uns in den letzten Monaten intensiv. Wir haben uns Gedanken gemacht, welchen Herausforderungen man begegnet, wenn beide Trends aufeinandertreffen.

Eine Anforderung an DevOPs ist das agile und schnelle Entwickeln und Testen von Software. Hierfür benötigen Entwickler unkomplizierten Zugriff auf eine Testumgebung.

Genau dafür gibt es aber doch Docker, oder? Also wird die Software mal eben in einen Container gepackt, Vagrant installiert und darin ein individueller Docker-Container gestartet. Fertig! Oder doch nicht?! Docker für den Desktop ist doch beliebt und einfach.

Der Irrweg: Docker Desktop

Aber so einfach ist es dann nicht. Denn Docker auf dem Desktop benötigt zum einen Portveröffentlichungen und mehrere Container, die verbunden werden müssen. Selbst mit einem guten Tooling treten dabei immer wieder unterschiedliche lokale Probleme auf. Zudem müssen alle Entwickler tiefergehendes KnowHow von Vagrant, Docker und vom Docker-Netzwerk haben.

Ganzen Beitrag lesen