$30 off During Our Annual Pro Sale. View Details »

Kubernetes Serverless Frameworks

Kubernetes Serverless Frameworks

Slides of a presentation given at:
* Cloud Native Computing Switzerland meetup, Zurich, May 9th 2019
* Swisscom OpenShift TechTalk Bern, September 18th, 2019
* Swisscom OpenShift TechTalk Zurich, October 23rd, 2019
* Swisscom OpenShift TechTalk Zurich, November 6th, 2019

Adrian Kosmaczewski

October 23, 2019
Tweet

More Decks by Adrian Kosmaczewski

Other Decks in Technology

Transcript

  1. KUBERNETES
    KUBERNETES
    SERVERLESS
    SERVERLESS
    FRAMEWORKS
    FRAMEWORKS
    Adrian Kosmaczewski

    View Slide

  2. "Serverless"
    "FaaS"

    View Slide

  3. Martin Fowler
    — martinfowler.com/articles/serverless.html
    FaaS is about running backend code
    without managing your own server
    systems or your own long-lived
    server applications.

    View Slide

  4. View Slide

  5. HOW DOES IT WORK?
    HOW DOES IT WORK?

    View Slide

  6. Bernd Erk
    @gethash
    How #serverless actually works. #devopsdays
    236 1:35 PM - Oct 29, 2019
    94 people are talking about this

    View Slide

  7. AGENDA
    AGENDA
    1. OpenFaaS
    2. Fn Project
    3. Fission
    4. OpenWhisk
    5. Kubeless
    6. TriggerMesh

    View Slide

  8. AGENDA
    AGENDA
    1. Project details
    2. Demos (three, on minikube)
    3. Available triggers
    4. Supported programming languages

    View Slide

  9. 1. OPENFAAS
    1. OPENFAAS

    View Slide

  10. OPENFAAS
    OPENFAAS
    Written in Go
    ~16000 stars
    ~120 contributors
    Latest version 0.18.2 (October 15th, 2019)
    Independent project through donations
    (Patreon, OpenCollective, PayPal)
    www.openfaas.com
    @openfaas
    github.com/openfaas/faas

    View Slide

  11. OPENFAAS CHARACTERISTICS
    OPENFAAS CHARACTERISTICS
    Based on Docker
    Functions packaged in containers
    Requires Docker in the local machine
    Manages Docker les on behalf of developer
    Template "store"
    CLI: faas-cli
    API with Swagger
    Serverless Framework plugin

    View Slide

  12. 1 provider:
    2 name: openfaas
    3 gateway: http://192.168.99.100:31112
    4 functions:
    5 hello:
    6 lang: python3
    7 handler: ./hello
    8 image: hello:latest
    - 149 UU-: hello.yml

    View Slide

  13. View Slide

  14. OPENFAAS TRIGGERS
    OPENFAAS TRIGGERS
    HTTP
    Event Connectors: Kafka, Amazon SNS, Minio,
    CloudEvents, IFTTT, Redis, RabbitMQ…

    View Slide

  15. OPENFAAS LANGUAGES
    OPENFAAS LANGUAGES
    C#, F== (.NET Core)
    Go
    JavaScript (Node.js)
    Java (JVM) 8 & 12
    PHP 7
    Python / Python 3
    Ruby
    github.com/openfaas/templates

    View Slide

  16. 2. FN PROJECT
    2. FN PROJECT

    View Slide

  17. FN PROJECT
    FN PROJECT
    Written in Go
    ~4300 stars
    ~80 contributors
    Latest version 0.3.739 (October 18th, 2019)
    Funded by Oracle (Oracle Functions is a fork)
    fnproject.io
    @fnproject
    github.com/fnproject/fn

    View Slide

  18. FN PROJECT
    FN PROJECT
    CHARACTERISTICS
    CHARACTERISTICS

    View Slide

  19. FN PROJECT TRIGGERS
    FN PROJECT TRIGGERS
    HTTP

    View Slide

  20. FN PROJECT LANGUAGES
    FN PROJECT LANGUAGES
    Go
    JavaScript (Node.js)
    Java (JVM)
    Python
    Ruby
    C== (community supported)
    "Supports all languages"

    View Slide

  21. 3. FISSION
    3. FISSION

    View Slide

  22. FISSION
    FISSION
    Written in Go
    ~4700 stars
    ~90 contributors
    Latest version 1.6.0 (October 10th, 2019)
    Maintained by
    ssion.io
    @ ssionio
    github.com/ ssion/ ssion
    Platform9

    View Slide

  23. FISSION CHARACTERISTICS
    FISSION CHARACTERISTICS
    Functions are injected into "Environments"
    Pool of containers with language
    runtimes
    Functions loaded and launched on
    demand
    CLI: fission
    Serverless Framework plugin

    View Slide

  24. asciinema
    $ cat samples/fission.js
    module.exports = async function(context) {
    return {
    status: 200,
    body: "Hello VSHN from Fission!\n"
    };
    }
    asciinema
    $ fission env create --name nodejs --image fission/node-env
    environment 'nodejs' created
    asciinema
    $ fission function create --name vshn --env nodejs --code samples/fission.js
    Package 'fission-js-i0nl' created
    function 'vshn' created
    asciinema
    $ fission function test
    00:00

    View Slide

  25. FISSION TRIGGERS
    FISSION TRIGGERS
    HTTP
    Time
    Message Queue
    Kubernetes Watch

    View Slide

  26. FISSION LANGUAGES
    FISSION LANGUAGES
    Go
    Python
    JavaScript (Node.js)
    Java (JVM)

    View Slide

  27. 4. OPENWHISK
    4. OPENWHISK

    View Slide

  28. OPENWHISK
    OPENWHISK
    Written in Scala
    ~4300 stars
    ~160 contributors
    Latest version 0.9.0 (October 31st, 2018)
    Started by IBM, maintained by the Apache
    Foundation
    openwhisk.apache.org
    @openwhisk
    github.com/apache/openwhisk

    View Slide

  29. OPENWHISK
    OPENWHISK
    CHARACTERISTICS
    CHARACTERISTICS
    Very "corporate" in design and functionality
    Secure by default
    Forked by Adobe and other big corporations
    CLI: wsk
    Serverless Framework plugin

    View Slide

  30. OPENWHISK TRIGGERS
    OPENWHISK TRIGGERS
    Message Queues
    Databases
    Document Stores
    Website or Web Apps
    Service APIs
    IoT Frameworks…
    Couchbase

    View Slide

  31. OPENWHISK LANGUAGES
    OPENWHISK LANGUAGES
    C#, F== (.NET Core)
    JavaScript (Node.js)
    Swift
    Java, Scala (JVM)
    Go
    Python, PHP, Ruby
    Ballerina
    Through Docker Actions: Rust, Haskell…

    View Slide

  32. 5. KUBELESS
    5. KUBELESS

    View Slide

  33. KUBELESS
    KUBELESS
    Written in Go
    ~5100 stars
    ~80 contributors
    Latest version 1.0.5 (October 16th, 2019)
    Maintained by
    kubeless.io
    github.com/kubeless/kubeless
    Bitnami

    View Slide

  34. KUBELESS CHARACTERISTICS
    KUBELESS CHARACTERISTICS
    Simplest to install and use
    Aims to similarity with AWS Lambda
    CLI compliant with AWS Lambda CLI
    Prometheus monitoring of functions calls and
    latency
    CLI: kubeless
    Serverless Framework plugin

    View Slide

  35. asciinema
    $ cat kubeless.py
    def hello(event, context):
    print event
    return "Hello CNC from " + event['data']
    asciinema
    $ kubeless function deploy hello --runtime python2.7 --from-file kubeless.py --handler
    kubeless.hello
    INFO[0000] Deploying function...
    INFO[0000] Function hello submitted for deployment
    INFO[0000] Check the deployment status executing 'kubeless function ls hello'
    asciinema
    $ kubectl get functions
    NAME AGE
    hello 6s
    asciinema
    $
    00:00

    View Slide

  36. View Slide

  37. KUBELESS TRIGGERS
    KUBELESS TRIGGERS
    HTTP
    Cronjob
    PubSub mechanisms
    Kafka
    NATS messaging
    Data stream events
    AWS Kinesis

    View Slide

  38. KUBELESS LANGUAGES
    KUBELESS LANGUAGES
    Go
    Python
    JavaScript (Node.js)
    Java (JVM)
    Ruby
    C#, F== (.NET Core)
    Ballerina
    Custom runtimes possible

    View Slide

  39. 6. TRIGGERMESH
    6. TRIGGERMESH

    View Slide

  40. TRIGGERMESH
    TRIGGERMESH
    Founded ex-Kubeless engineers
    Based upon Kubernetes & Knative
    triggermesh.com
    @triggermesh

    View Slide

  41. TRIGGERMESH
    TRIGGERMESH
    CHARACTERISTICS
    CHARACTERISTICS
    Based on Kubernetes & Knative
    CLI: tm
    Not yet open source
    "Early Access Program"
    TriggerMesh Operator for OpenShift 4.0
    CI/CD of functions

    View Slide

  42. View Slide

  43. TRIGGERMESH TRIGGERS
    TRIGGERMESH TRIGGERS
    Cross-cloud triggers from AWS & Azure to
    functions on Knative
    Code Commit
    Cognito
    DynamoDB
    Kinesis
    S3
    SNS
    SQS…

    View Slide

  44. TRIGGERMESH LANGUAGES
    TRIGGERMESH LANGUAGES
    Go
    JavaScript (Node.js)
    Python
    Ruby

    View Slide

  45. COMPARISON
    COMPARISON
    Local
    Local
    Docker
    Docker
    Image
    Image
    Repo
    Repo
    Base
    Base
    Image
    Image
    OpenFaaS
    OpenFaaS Required Required Required
    Fn Project
    Fn Project Required Required Required
    Fission
    Fission None None Required
    OpenWhisk
    OpenWhisk None None None
    Kubeless
    Kubeless None None None

    View Slide

  46. OTHER PLAYERS
    OTHER PLAYERS
    More: , , ,
    , , …
    Amazon Firecracker
    AppScale
    Azure Functions on Kubernetes
    Dispatch
    Gestalt
    Dapr IronFunctions LunchBadger
    Nuclio OpenLambda Ri

    View Slide

  47. WHAT ABOUT KNATIVE?
    WHAT ABOUT KNATIVE?

    View Slide

  48. View Slide

  49. We will say it again… packaging
    code into containers should be
    considered a FaaS anti-pattern!

    View Slide

  50. View Slide

  51. View Slide

  52. THANKS!
    THANKS!
    Adrian Kosmaczewski – [email protected]

    View Slide