Die Werkzeugkiste #2: Container und Serverless: Was kann Knative?
Google hatte das Tool Knative im Rahmen der Cloud Next vorgestellt. Es schickt sich an, als plattformagnostisches Tool fĂĽr Serverless-Anwendungen zu fungieren.
- JĂĽrgen Hoffmann
In der heise-Developer-Serie "Die Werkzeugkiste" stellen Entwickler in regelmäßigen Abständen ihre nützlichsten Werkzeuge, Tools, und Hilfsmittelchen vor. Wie bei der Werkzeugkiste von Handwerkern gilt auch hier: Die Kisten sind meist ziemlich voll – die Auswahl des bevorzugten Werkzeugs für eine Arbeit immer subjektiv. Wenn Sie ihr Lieblings-Tool vermissen oder selber gerne in einem Artikel vorstellen wollen, schreiben Sie doch einfach eine E-Mail an heise Developer.
Mit Knative sollen Entwickler einfacher Serverless-Apps deployen und ausführen können. Die Plattform setzt auf der Containerorchestrierung Kubernetes sowie dem Service-Mesh Istio auf und ist ein Open-Source-Projekt. Der Artikel gibt einen Einblick in Knative und etwaige Anwendungsfälle.
Seine Entwicklung verdankt Knative Herausforderungen der eventgetriebenen Programmierung: Kleinere Aktionen sind, durch ein Event ausgelöst, wiederholt auszuführen. Typisch ist das beispielsweise bei ETL-Prozessen (Extract, Transform, Load), die Daten für die Verarbeitung etwa aus einer öffentlichen Cloud in ein Rechenszentrum laden müssen. Wenn ein Prozess eine Funktion 100.000-mal anstößt, ist es vorteilhaft, wenn sie in einem Container verpackt daherkommt: Der Prozess startet deutlich schneller und bringt die Skalierbarkeit gleich mit.
Bisher war es nicht möglich, Container-Funktionen in Serverless-Umgebungen zu nutzen, da schlicht keine Standards für Public Clouds existierten. Eine Funktion für Microsoft Azure benötigt andere Spezifikationen als eine für Amazon Web Services (AWS) oder die Google Cloud. Knative soll zum Standard für Plattformen werden, der es ermöglicht, Funktionen innerhalb einer öffentlichen Cloud oder beliebig zwischen mehreren Clouds unterschiedlicher Ausprägungen hin und her zu portieren. Dadurch kann ein Prozess flexibel skalieren und beispielsweise die Rechenkapazitäten einer beliebigen Cloud nutzen, wenn das eigene Rechenzentrum nicht ausreicht.
Knative im Ăśberblick
Google hatte das Open-Source-Projekt Knative im Januar 2018 ins Leben gerufen und Ende Juli 2018 offiziell vorgestellt. Unternehmen wie Pivotal, IBM und Red Hat sind ebenfalls involviert.
Die Plattform basiert auf Kubernetes. Das Containerorchestrierungs-Tool hilft Entwicklern beim Deployment, dem Betrieb, der Wartung und der Skalierung von in Container verpackten Microservices. Per Definition der beteiligten Unternehmen erweitert Knative Kubernetes nun um mehrere Komponenten für das Erstellen quellenzentrierter und containerbasierter Serverless-Anwendungen. Zur bewährten Portierbarkeit von Containern kommt also ein Maß Flexibilität hinzu.
Knative soll den Entwicklern einige Vorgänge abnehmen. Dazu gehört beispielsweise die Orchestrierung von Source-to-Container-Workflows, das Management des Traffics während des Deployments oder das automatisierte Skalieren der Workloads. Um welche Art von Workloads es sich handelt, ist bei Knative egal: Entwickler können ihren Workload in Form von Funktionen, Applikationen oder Containern aus den von ihnen bevorzugten Sprachen und Frameworks deployen.
Knative nutzt den gleichen Ansatz wie Kubernetes. Dessen Modell basiert auf Resource Controllers, die die Ressourcen, sprich die Cluster, überwachen, sie ständig mit dem gewünschten Status abgleichen und wenn nötig anpassen. Auf Kelsey Hightower, einer von Googles Kubernetes-Spezialisten, geht folgende Zusammenfassung zurück: "Kubernetes ist eine Plattform, um Plattformen zu bauen. Knative ist eine der Plattformen, die auf Kubernetes aufsetzt und ist ebenfalls dazu geeignet, Plattformen zu entwickeln." Was heißt das konkret?