Die Konferenz für Continuous Delivery und DevOps
Mannheim, Congress Center Rosengarten,
13.-16. November 2018

// OpenFaaS-Workshop: From zero to FaaS hero

Mit der wachsenden Verbreitung von Containertechnologien haben wir in den letzten Jahren einen Aufstieg von Function-as-a-Service-Plattformen erlebt. Eine der ersten FaaS-Plattformen war AWS Lambda, die allerdings nicht als On-Premises-Lösung verfügbar ist. OpenWhisk hingegen ist ein Open-Source-Projekt von IBM, veröffentlicht unter der Apache-Lizenz, das auch lokal betrieben werden kann. Neben OpenWhisk gibt es noch zahlreiche andere FaaS-Plattformen/Frameworks wie z.B. FN, OpenFaaS und Kubeless.

In diesem Workshop lernen wir, wie man OpenFaaS verwendet, ein FaaS-Framework unter MIT-Lizenz. Begonnen wird mit dem Setup auf Kubernetes (Minikube). Anschließend werden die Funktionen von OpenFaaS genauer vorgestellt. Während des Workshops werden wir Funktionen für OpenFaaS entwickeln, deployen und anschließend ausführen. Weiterhin werden wir Features wie die Autoskalierung in Aktion sehen.

Agenda

  • ab 08.00 Registrierung und Begrüßungskaffee

  • 09.00: Beginn

  • Onboarding

  • 10.45 - 11.15: Kaffeepause

  • Tour durch die Open FaaS UI & FaaS CLI

  • Erste Funktion

  • 12.30 - 13.30: Mittagspause

  • CI & CD mit Open FaaS

  • 14.45 - 15.00: Kaffeepause

  • Entwicklung einer kleinen Beispiel Anwendung, welche Open FaaS nutzt

  • ca. 16 Uhr: Ende

Technische Anforderungen

  • Laptop zum Mitarbeiten

Hinweise:

  • $  Soll darauf hinweisen, dass es sich um einen Befehl für Shell / CMD / Powershell handelt

  • Systemvorraussetzungen: Sie sollten in der Lage sein alle Punkte des Environment Setup erfolgreich auszuführen, falls dies nicht der Fall ist, dann ist Ihr System leider für den Workshop nicht geeignet.

    • Leider habe ich nur limitierte Erfahrungen mit Linux und kann daher wenig bei Troubleshooting mit Minikube Problemen unterstützen.

  • Bitte wählen Sie eine Sprache in der Sie bereits Erfahrung haben, da der Fokus nicht darauf liegt eine neue Sprache zu erlernen.

    • Mit Ausnahme von Ruby, habe ich in jeder der aufgelisteten Sprachen Erfahrungen und kann Sie bei Fragen gegebenfalls unterstützen. 

  • OpenFaaS untersützt auch Docker Swarm, allerdings fokussieren wir uns bei diesem Workshop auf die Kubernetes Variante.

  • Wenn es Inhalte gibt, die Sie gerne angesprochen haben möchten. Dann senden Sie mir gerne eine Email an spelczer@liveperson.com (Titel: Container Conf)

Environment Setup:

  • Installieren sie Minikube auf Ihren Laptop (Offiziellen Anleitung / Github) | Alternative Wege: [Mac: $ brew cask install minikube] [Windows: Chocolatey]

    • Führen Sie die Schritte der offiziellen Anleitung aus, inklusiven dem Deployment Beispiel. So können Sie die Installation auch gleich verifizieren.

    • Sie sollten nun Minikube [ Version: v0.28.2 >= ] & Kubectl [ GitVersion: v1.11.1 >= ] Kommandozeilen Tool installiert haben.

  • Installieren Sie das OpenFaaS Kommandozeilen Tool (Offizielle Anleitung)

    • Laden Sie wenn möglich bereits die Templates herunter: $ faas-cli template pull

    • Sie sollten nun faas-cli [ Version: 0.6.15 >=] installiert haben

  • Installieren Sie Docker [ CE / EE ] (Offizielle Anleitung)

    • Verifizieren Sie ihre Installation mit $ docker run hello-world:latest

    • Sie sollten nun Docker [Version: 18.06.0-ce >= ] installiert haben (Da nur Befehle wie build / push genutzt werden sollte es keine Probleme mit EE geben)

  • Clonen Sie bereits im Vorfeld das folgende Repository. [ $ git clone https://github.com/openfaas/faas-netes]

  • Ein Code-Editor / IDE für eine der folgenden Sprachen: C#, GoLang, Java 8, JavaScript [NodeJs], Python 2/3, Ruby  [Mein Tipp: Visual Studio Code]

Falls Sie ein Gerät Ihrer Firma verwenden, überprüfen Sie vorher bitte, ob eines der folgenden, gelegentlich vorkommenden Probleme bei Ihnen auftreten könnte:

  • Workshop-Teilnehmer hat keine Administrator-Rechte

  • Corporate Laptops mit übermäßig penibler Sicherheitssoftware

  • Gesetzte Corporate-Proxies, über die man in der Firma kommunizieren muss, die aber in einer anderen Umgebung entsprechend nicht erreicht werden.

Vorkenntnisse
* Erfahrungen in einer der folgenden Programmiersprachen werden vorausgesetzt: GoLang, JavaScript, C#, Python, Ruby.
* Erfahrungen mit Kubernetes/Minikube sind von Vorteil.
* Die Teilnehmer sollten vor dem Workshop Minikube auf ihren Rechnern installieren.

Lernziele
* Die Teilnehmer sollten nach dem Workshop eine funktionierende OpenFaaS-Installation auf ihrem Kubernetes-Cluster (Minikube) haben.
* Sie sollten danach in der Lage sein, Funktionen zu implementieren und auf OpenFaaS zu deployen.
* Sie kennen die Features von OpenFaaS.

// Referent

Simon Pelczer Simon Pelczer

ist ein leidenschaftlicher Entwickler, der bei LivePerson als Software Engineer im Plattform Extensibility Team arbeitet. In seiner Freizeit beschäftigt er sich mit Open-Source-Softwareentwicklung und ist inzwischen ein Contributor im OpenFaaS-Projekt. Davor hat er seinen Bachelor of Science in Informatik an der HS Mannheim mit Fokus auf den Bereich Serverless Architecture absolviert.