Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubeless - Das Beste aus zwei Welten (Continuous Lifecycle 2018)

Kubeless - Das Beste aus zwei Welten (Continuous Lifecycle 2018)

Die aktuellen Trends zum Betrieb von Anwendungen erwecken den Eindruck, man habe nur die Wahl, Container as a Service (CaaS) in Form von Kubernetes einzusetzen oder gleich Function as a Service (FaaS) beziehungsweise Serverless zu nutzen. Im ersten Fall gewinnt man Flexibilität, muss sich aber mit vielen Infrastrukturdetails beschäftigen. Im zweiten Fall kann man sich direkt um die Funktionalität kümmern, bindet sich aber möglicherweise auf Gedeih und Verderb an einen Cloud-Provider.

Die beiden Varianten lassen sich jedoch auch kombinieren, in Form von FaaS-Frameworks, die auf Kubernetes aufsetzen. Sie bieten die Vorteile von FaaS verbunden mit der Flexibilität und Providerunabhängigkeit von Kubernetes.

Dieser Vortrag stellt das Framework Kubeless vor. Es lässt sich leicht in eine vorhandene Kubernetes-Infrastruktur einbinden und erlaubt es, schnell eigene Funktionen zu realisieren. Neben ein wenig Theorie wird Kubeless vor allem in Aktion zu sehen sein.

Joerg Mueller

November 15, 2018
Tweet

More Decks by Joerg Mueller

Other Decks in Programming

Transcript

  1. Kubeless Das Beste aus zwei Welten? Jörg Müller - @joergm

    15.11.2018
 Mannheim / Continuous Lifecycle
  2. Jörg Müller
 Principal Consultant innoQ Deutschland GmbH [email protected] @joergm t.me/joerg_m

    - architecture, development, devOps - focus on platform & infrastructure
  3. Oder doch beides gemeinsam? Implementierungen von FaaS auf Kubernetes: •

    OpenFaaS • OpenWhisk • Project Riff • Fission • Kubeless
  4. Kubeless • https://kubeless.io/ • Implementiert FaaS in einer Kubernetes-nativen Art

    • Gestartet von Bitnami • Open Source (Apache 2.0 Lizenz) • Verschiedene Unterprojekte auf Github 
 https://github.com/kubeless
  5. Eine Funktion deployen $ kubeless function deploy hello \ --runtime

    python2.7 \ --from-file helloworld.py \ --handler helloworld.hello
  6. Parameter Event public class Event { String Data; String EventID;

    String EventType; String EventTime; String EventNamespace; }
  7. Welche Runtimes gibt es? • Python • NodeJS • Ruby

    • PHP • Go • .NET • Java (Quellcode) • JVM (Bytecode) • Ballerina
  8. Was muss ich installieren? • Lokal ein einzelnes Binary (kubeless)

    für die Kommandozeile • von der Webseite (https://github.com/kubeless/ kubeless/releases) • oder per Homebrew auf dem Mac • Eine Reihe von Kubernetes-Objekten • Yaml Dateien dafür sind ebenfalls auf Github
  9. Elemente im Cluster • eigener Namespace • Custom Ressource Definitions

    (CRDs) für Funktionen, Trigger und Autoscaling • Controller für die CRDs • Eine ConfigMap mit den wesentlichen Einstellungen (u.a. Custom Runtimes)
  10. Message Trigger • Support für • Kafka (https://kafka.apache.org/) • NATS

    (https://nats.io/) • Sowohl die Message Broker als auch die darauf aufsetzenden Trigger müssen extra installiert werden
  11. Logs ansehen $ kubectl logs -l function=hello Man beachte, das

    letztere ist einfacher Kubernetes-Standard! $ kubeless function logs hello oder
  12. Zwei Ebenen der Skalierung • Kubernetes Nodes skalieren • abhängig

    von der darunter liegenden Infrastruktur • z.B. Autoscaling Groups auf AWS • Funktionen skalieren • Skaliert eignentlich die Anzahl der Pods • Nutzt einfach die Kubernetes Mechanismen
  13. Monitoring • Alle Runtimes bieten Endpoints mit Metriken • Kubernetes

    Installation ist auf Scraping durch Prometheus vorbereitet • Beispiel-Dashboard für Grafana basierend auf den Prometheus Daten existiert
  14. Deklarative Konfiguration • Anstelle der Kubeless Kommandozeile • Via Yaml

    Dateien • Alle Objekte (Funktionen, Trigger, Autoscaling) sind Custom Ressource Definitions • Nutzung analog zu anderen Kubernetes Objekten
  15. Eigene Runtimes • Eigene Runtimes sind einer oder mehrere Docker-

    Container, die bestimmten Konventionen folgen • Verschiedene Phasen: Prepare, Install, Compile, Run • Zur Laufzeit selbst wird ein HTTP Server erwartet, der die eigentlichen Funktionen aufruft • Aktivierung durch Eintragung in die Kubeless ConfigMap
  16. Kubeless UI • Oberfläche zur Verwaltung der Funktionen im Cluster

    • Idee analog zur Oberfläche für Lambdas in AWS • https://github.com/kubeless/kubeless-ui • Aktuell noch recht frühes Entwicklungsstadium
  17. Alternativen auf Kubernetes • Knative • Gemeinsame Abstraktionen für FaaS

    auf Kubernetes • Weitere FaaS Implementierungen? • Passend zum restlichen Ökosystem wählen • Schnelle Weiterentwicklung • Die Entscheidung hängt stark vom Zeitpunkt ab
  18. Kubeless oder Cloud-Anbieter? • Ist Cloud überhaupt eine Option? •

    Wie wichtig sind weitere Dienste, wie Datenbanken, Event Processing etc.? • Ist bereits Erfahrung mit Kubernetes vorhanden? • Wie flexibel muss die Skalierung sein? • Ist die Flexibilität eigener Runtimes und Trigger relevant?
  19. Jörg Müller
 Principal Consultant innoQ Deutschland GmbH [email protected] @joergm t.me/joerg_m

    - architecture, development, devOps - focus on platform & infrastructure
  20. www.innoq.com OFFICES Monheim Berlin Offenbach Munich Zurich FACTS ~125 employees

    Privately owned Vendor-independent SERVICES Strategy & technology consulting Digital business models Software architecture & development Digital platforms & infrastructures Knowledge transfer, coaching & trainings CLIENTS Finance Telecommunications Logistics E-commerce Fortune 500 SMBs Startups