© Navalnyi/Shutterstock.com
Erste Schritte für das Erstellen von Serverless-Anwendungen mit Knative

Auf die Theorie folgt die Praxis


Nachdem Michael Thömmes in Ausgabe 1.2019 des Entwickler Magazins eine theoretische Einführung in die Funktionsweise von Knative gegeben hat, folgt nun der praktische Teil. In diesem Artikel werden die ersten Schritte für das Erstellen von Serverless-Anwendungen mit Knative vorgestellt.

Im ersten Teil des Artikels werden wir uns mit dem Aufsetzen einer Entwicklungsumgebung beschäftigen, die für Knative in Version 0.6.0 geeignet ist. Im zweiten Teil geht es dann um das Deployment des ersten eigenen Serverless Microservice. Grundvoraussetzung für die Nutzung von Knative für das Erstellen von Serverless-Anwendungen ist eine solide Kenntnis von Kubernetes. Wer darin noch unerfahren ist, sollte das offizielle Basis-tutorial von Kubernetes [1] absolvieren. Bevor es ans Eingemachte geht, müssen noch ein paar Tools und Utilities installiert werden:

  • Minikube [2]

  • kubectl [3]

  • kubens [4]

Für Windows-Nutzer hat sich WSL [5] als ziemlich nützlich erwiesen, ich empfehle, das auch noch zu installieren.

Aufsetzen von Minikube

Minikube ist ein Kubernetes-Cluster mit einem einzigen Knoten, der sich hervorragend für die alltägliche Entwicklung mit Kubernetes eignet. Nach der Installation müssen die folgenden Schritte durchgeführt werden, um Minikube fit für ein Deployment mit Knative Serving zu machen. Wie das im Code aussieht, zeigt Listing 1.

Listing 1

minikube profile knative minikube start -p knative --memory=8192 --cpus=6 \ --kubernetes-version=v1.12.0 \ --disk-size=50g \ --extra-config=apiserver.enable-admission-plugins="LimitRanger,NamespaceExists,NamespaceLifecycle,ResourceQuota,ServiceAccount,DefaultStorageClass,MutatingAdmissionWebhook" 

Zunächst muss ein Minikube-Profil angelegt werden, wofür die erste Zeile steht. Anschließend wird mit dem zweiten Befehl eine Minikube-Instanz aufgesetzt, die 8 GB RAM, 6 CPUs und 50 GB Festplattenspeicher erhält. Der Startbefehl beinhaltet zudem ein paar zusätzliche Konfigurationen für den Kubernetes-Cluster, die nötig sind, um Knative zum Laufen zu bekommen. Wichtig ist auch, dass die verwendete Kubernetes-Version nicht älter als Version 1.12.0 ist, sonst funktioniert Knative nicht. Startet Minikube nicht sofort, ist das völlig normal: Es kann ein paar Minuten dauern, bis der initiale Start abgeschlossen ist, ein wenig Geduld sollte man beim Aufsetzen also mitbringen.

Aufsetzen eines Istio Ingress Gateways

Knative benötigt ein Ingress Gateway, um Requests an Knative Services zu routen. Neben Istio [6] wird auch Gloo [7] als Ingress Gateway unterstützt. Für unser Beispiel werden wir allerdings Istio nutzen. Die folgenden Schritte zeigen, wie man eine möglichst leichtgewichtige Installation von Istio durchführt, die ledgiglich das Ingress Gateway enthält:

curl -L https://raw.githubusercontent.com/knative/serving/release-0.6/third_party/istio-1.1.3/istio-lean.yaml \ | sed 's/LoadBalancer/NodePort/' \ | kubectl apply --filename -

Wie bereits das Aufsetzen von Minikube, dauert auch das Deployment des Istio Pods ein paar Minuten. Mit dem Befehl kubectl --namespace istio-system get pods --watch kann man sich den Status ansehen, beendet wird die Übersicht mit STRG + C. Ob das Deployment erfolgreich war, lässt sich leicht mit dem Kommando kubectl --namespace istio-system get pods feststellen. Ist alles gut gelaufen, sollte die Ausgabe es wie in Listing 2 aussehen.

Listing 2

NAME READY STATUS RESTARTS AGE cluster-local-gateway-7989595989-9ng8l 1/1 Running 0 2m14s istio-ingressgateway...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang