Kubeless – FaaS auf Kubernetes

Seite 2: Komponenten von Kubeless

Inhaltsverzeichnis

Kubeless besteht aus einer Reihe von serverseitigen Komponenten und einem Kommandozeilenwerkzeug namens kubeless. Dabei handelt es um ein statisches Binary, das sich über die Release-Seite des GitHub-Projekts beziehen lässt. Alternativ wird auf dem Mac auch die Installation mit dem Paketmanager Homebrew unterstützt.

Die Installation der Serverkomponenten setzt einen beliebigen Kubernetes-Cluster voraus. Abgesehen von ausreichenden Berechtigungen zur Anlage der entsprechenden API-Objekte gibt es keine Vorbedingungen. Daher lässt sich Kubeless auch problemlos in einem lokal laufenden minikube ausprobieren.

Kubeless stellt die notwendigen Kubernetes-YAML-Dateien in seinem Repository zur Verfügung. Die Installation erfolgt in einen eigenen Namespace, der normalerweise "kubeless" heißt. Dabei werden die folgenden Objekte installiert:

  • mehrere Custom Resource Definitions (CRD)
  • der Kubeless-Controller-Manager
  • verschiedene Serviceaccounts und Rollen
  • die Kubeless ConfigMap

Die Custom Resource Definitions erstellen eigene Kubernetes-API-Objekte für Funktionen und Trigger. Damit lassen sich diese wie jedes andere Kubernetes-Objekt über die API und die Kommandozeile von Kubernetes abfragen und anlegen.

Der Kubeless-Controller-Manager fasst die Controller zusammen, die für die Auswertung der Custom Resources zuständig sind. Damit lässt sich gewährleisten, dass Funktionen und Trigger nach ihrer Definition in Pods gestartet werden.

In Clustern mit aktivem Role Based Access Control (RBAC) lassen sich vordefinierte Serviceaccounts und Rollen einrichten. Für Cluster, die RBAC nicht nutzen, gibt es spezifische YAML-Dateien.

Schließlich ist noch eine ConfigMap zu installieren, die eine Reihe von Parametern für die Laufzeit von Kubeless beinhaltet. In der ConfigMap findet sich unter anderem auch die Liste aller verfügbaren Runtimes, die sich durch eigene Runtimes ergänzen lässt.

Die Trigger für Kafka- beziehungsweise NATS-Messages sind in der ursprünglichen Installation noch nicht enthalten. Entwickler müssen sie separat installieren. Auch hierfür existieren allerdings vorgefertigte Kubernetes-YAML-Dateien. In beiden Fällen ist auch eine Installation des jeweiligen Message-Brokers notwendig. Kubeless bietet in seinen Repositories für die Installation von Kafka einfache Kubernetes-Konfigurationen an. Im Fall von NATS ist auf den existierenden Operator zu verweisen.