@carsonoid knative vs. openfaas -...

109
Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson Domo 1 @carsonoid @carson_ops

Upload: others

Post on 24-May-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Vs. OpenFaaSFunctions on Kubernetes

Carson AndersonDomo

1

@carsonoid

@carson_ops

Page 2: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Kubernetes & Serverless● Kubernetes is Serverless● A layer to reduce developer complexity● Functions As A Service narrows the scope of

○ Work○ Risk○ Scale

2

Page 3: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

3

monolith

service

service function

service

functionfunction

function

servicefunction

functionfunction

function

Page 4: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Let's Come Clean

● Knative is not AWS Lambda● OpenFaaS is not AWS Lambda● If you are in AWS and want top

quality integration: Use Lambda!

4

Page 5: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

But!● AWS Lamba != perfect

○ Limits■ Execution time■ Persistent disk limits

○ Vendor lock-in○ VM runtime environment

5

Page 6: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Lambda Vs (Knative Vs OpenFaaS)

Functions on Things!

Carson AndersonDomo

6

@carsonoid

@carson_ops

Page 7: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

● Introductions● Common

Components● Demo

Plan

7

● Platform Comparisons○ Architecture○ Installation

● Function Operations○ Building○ Deploying○ Invoking

Page 8: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Introductions8

Page 9: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

9

● AWS managed● AWS scale● AWS integrated● No overhead

AWS Managed

Page 10: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS

10

● Independent● Open source● Portable● Lightweight

Page 11: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Introduction

11

● Google backed● Serverless platform

○ Building○ Serving○ Eventing

Page 12: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Caveat

12

Page 13: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

13

What is a service mesh?Service

A

Service B

Service C

Page 14: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Common Components

14

1. Function

2. Invoker

3. Queue

4. Ringleader

5. Usher

Page 15: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

15

● Imperative○ Returns something○ Called by user○ Called by other function○ Called by other system

● Reactive○ Triggered by outside

event

Function

1. Function

Page 16: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Functions16

Page 17: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Template: get_tax()

17

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

# EXPECTS = {"subtotal":INT}def main(): subtotal = [IN]

tax = subtotal * 0.047

[OUT] { "tax": tax }

ImplementationSpecifics In Red

Page 18: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Lambda: get_tax()

18

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

# EXPECTS {"subtotal":INT}def main(event, context): subtotal = event["subtotal"]

tax = subtotal * 0.047

return { 'statusCode': 200, 'body': { "tax": tax } }

ImplementationSpecifics In Red

Page 19: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS: get_tax()

19

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

import sys, json

# EXPECTS {"subtotal":INT}def handle(req): subtotal = json.loads(req)["subtotal"]

tax = subtotal * 0.047

print({ "tax": tax })

ImplementationSpecifics In Red

Page 20: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative: get_tax()

20

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

import os, jsonfrom flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['POST'])# EXPECTS {"subtotal":INT}def main(): subtotal = request.get_json()["subtotal"] tax = subtotal * 0.047 return str(tax)

if __name__ == '__main__': app.run(debug=True,host='0.0.0.0',port=8080)

ImplementationSpecifics In Red

Page 21: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

ReactiveFunctions

21

Page 22: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Template: post_message()

22

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

import requests

# EXPECTS {"title":STR, "txt":STR}def main([...]): url = "https://webhook.site/..." title = [IN] txt = [IN]

message = title + "\n" + txt

requests.post(url, data = message)

ImplementationSpecifics In Red

Page 23: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Lambda: post_message()

23

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

import requests

# EXPECTS {"title":STR, "txt":STR}def main(event, context): url = "https://webhook.site/..." title = event["title"] txt = event["txt"]

message = data["title"] + "\n" + data["txt"]

requests.post(url, data = message)

ImplementationSpecifics In Red

Page 24: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS: post_message()

24

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

import requestsimport sys, json

# EXPECTS {"title":STR, "txt":STR}def main(req): url = "https://webhook.site/..." data = json.loads(req) title = data["title"] txt = data["txt"]

message = data["title"] + "\n" + data["txt"]

requests.post(url, data = message)

ImplementationSpecifics In Red

Page 25: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative: post_message()

25

● Imperative○ Called by User○ Called by other function○ Called by other system

● Reactive○ Triggered By Outside Event

import os, jsonimport requestsfrom flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['POST'])# EXPECTS {"title":STR, "txt":STR}def main(): url = 'https://webhook.site/...' data = request.get_json() title = data["title"] txt = data["txt"]

message = title + "\n" + txt

requests.post(url, data = message)

if __name__ == '__main__': app.run(debug=True,host='0.0.0.0',port=8080)

ImplementationSpecifics In Red

Page 26: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Common Components

26

1. Function

2. Invoker

3. Queue

4. Ringleader

5. Usher

Page 27: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

2. Invoker

27

Function

Invoker● Forks or calls the function● Handles

○ Inputs○ Outputs

● Usually○ HTTP server or client○ Customizable or replaceable

Page 28: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

28

● Synchronous or asynchronous ● Serial or parallel● For serial

○ Is the execution environment recreated or sanitized for each invocation?

○ Is the execution called via forking or threads?■ Global variables■ Connection pools

● For parallel○ Concurrency?

Invokers Matter!

Page 29: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Invokers29

Page 30: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

/bootstrap

30

● Method○ Read events from a "magic" API○ Call function with event data○ Return results to API

● Serialized executions● Invocations run as threads● Runtimes come with one by default● Replaceable

/bootstrap script

AWS

Page 31: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

watchdog, of-watchdog

watchdog

31

● Method○ Synchronous, parallel

■ Listen for HTTP invocations■ Fork function code■ Send STDIN, read STDOUT

○ Asynchronous, serial■ Read events from queue■ Fork function code■ Send STDIN, read STDOUT

● Replaceable, configurable

HTTP

STDIN STDOUT

Page 32: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

queue-proxy sidecar

queue-proxy

32

● Method○ Intercept web traffic destined for

function web server container○ Queue, limit, reroute, trace, etc.○ Call function web server container

● Serial or parallel based on configuration

● Not easily replaceable

HTTP

HTTP

Page 33: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Common Components

33

1. Function

2. Invoker

3. Queue

4. Ringleader

5. Usher

Page 34: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

3. Queue

34

● Stores○ Async invocations○ Pending invocations

● Tracks state● Reports load

Queue

Page 35: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Queues35

Page 36: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

36

● SQS?

AWS Managed

AWS

Page 37: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

NATS

37

● CNCF project● Distributed● Lightweight● Scalable

NATS

Page 38: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

queue-proxy

38

● In memory queue inside queue-proxy

● Distributed between all active function containers

● Not fault tolerant● Not inspectable

queue-proxy

Page 39: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

4. Ringleader

5. Usher

1. Function

2. Invoker

3. Queue

Common Components

39

Page 40: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

4. Ringleader

40

● Creates○ Functions○ Infrastructure

● Scales functions● Reports status

Ringleader

Page 41: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Ringleaders41

Page 42: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

42

● API Gateway?

AWS Managed

AWS

Page 43: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS Gateway

43

● Golang● Open source● Lightweight● Full Featured

Gateway

Page 44: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Serving Controller

44

Knative Serving

Controller

● Golang● Open Source● Follows the K8s

"Operator" pattern

Page 45: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

4. Ringleader

5. Usher

1. Function

2. Invoker

3. Queue

Common Components

45

Page 46: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

46

● Takes in traffic for functions

● Routes requests● May handle

○ Auth○ Encryption○ Scale from zero

Usher

6. Usher

Page 47: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Usher47

Page 48: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

48

● ELB?● ALB?● API Gateway?

AWS Managed

AWS

Page 49: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS Gateway

49

● Hosts○ Admin GUI○ Management API

● Proxies○ Sync calls to function

pods○ Async calls to NATS

queue

Gateway

Page 50: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Istio Ingress Provider

50

● Choices○ istio-ingress○ gloo

● Service mesh!

istio-ingress/Gloo

Page 51: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Functionpost_message()

InvokerFunctionpost_message()

Invoker

51

Functionget_tax()

Invoker

Queue

Functionget_tax()

InvokerFunction

get_tax()

Invoker

UsherRingleader

Page 52: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Demo52

Page 53: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

53

Why Only One Demo?● OpenFaas

○ Lightweight○ Quick to start

● Lambda○ Account Required

● Knative○ Does not work in k3s (no sidecar injection)

Page 54: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

54

OpenFaaS Demo

Page 55: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

PlatformArchitecture

55

Page 56: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

56

AWS LambdaArchitecture

Page 57: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

● NOT Containerized● May need dedicated build vms ● Functions distributed as zip files

built specifically for Amazon Linux● Invocations are always serial● A single VM may process many

function invocations

t

57

function.pyget_tax()

/bootstrap

KVM (Firecracker)

Function & Invoker

Page 58: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

● ELB?● SQS?● AWS?● MAGIC?

58

SQS?

ELB?

AWS?

Queue, Ringleader, & Usher

Page 59: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

59

function.pyget_tax()

/bootstrap

KVM (Firecracker)

Page 60: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

60

https://www.youtube.com/watch?v=eOBq__h4OJ4

http://amzn.to/2i1K7cE

More Lambda Info

Page 61: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

61

OpenFaaSArchitecture

Page 62: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

● Functions are run in containers● Watchdog invoker

○ Proxies all requests○ Forks handler.py

■ Sends HTTP data to STIN

■ Returns STDOUT● Invocations are parallel by

default

t

62

handler.pyget_tax()

/watchdog

Container

Function & Invoker

Page 63: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

● Uses NATS to handle Async function calls

● queue-worker ○ Watches NATS topic

and invokes function calls one at a time for each event

○ Returns results to NATS for later client retrieval

63

NATS

t

handler.pyget_tax()

/watchdog

Queue

queue-worker

Page 64: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

● Gateway hosts○ Admin API○ Admin GUI○ prometheus

metrics

64

t

handler.pyget_tax()

/watchdog

Gateway

Ringleader

NATS

queue-worker

Page 65: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

queue-worker

● Gateway is also the Usher

● Proxies calls to○ Functions (Sync)○ NATS (Async)

● Scales from zero

65

t

handler.pyget_tax()

/watchdog

Gateway

Usher

NATS

Page 66: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

66

t

handler.pyget_tax()

/watchdog

GatewayNATSqueue-worker

OpenFaaSOperator

Page 67: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

67

https://blog.alexellis.io/introducing-functions-as-a-service/

https://docs.openfaas.com/#presentations

https://docs.openfaas.com/architecture/gateway/

https://docs.openfaas.com/architecture/watchdog/

More OpenFaaS Info

Page 68: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

68

KnativeArchitecture

Page 69: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

t

t

69

server:8080get_tax()

queue-proxy

Container

● Functions are web servers○ Must process event data from

web calls manually● Queue-proxy intercepts traffic and

proxies to server container● Concurrency

○ Automatic○ Serial○ Parallel, 2-N

Function & Invoker

Container

Page 70: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

t

t

server:8080get_tax()

queue-proxy

Container

Container

70

● queue-proxy has an internal queue for pending invocations

● No central queue system● Lost containers lose all queued

invocations

Queue

Page 71: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

t

t

server:8080get_tax()

queue-proxy

Container

Container

71

Container

● Serving operator watches Kubernetes custom resources○ Creates immutable revisions○ Switches load to new revision

knative-servingcontroller

Ringleader

Page 72: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

72

● Service Mesh power!○ Canary deployments○ Full roll-back

Usher

t

t

server:8080get_tax()

queue-proxy

Container

Container

Container

knative-servingcontroller istio-ingress/

Gloo

Page 73: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

73

https://youtu.be/LtELzpw1l1M

https://www.knative.dev/docs/

https://www.knative.dev/docs/serving/

More Knative Info

Page 74: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

PlatformInstallation

74

Page 75: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

75

● Get AWS Account

● Give AWS Money

AWS Lambda Installation

AWS

Page 76: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS Installation

76

● Install with HELM● Install with raw YAML

Page 77: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS Footprint

77

Namespaces● openfaas● openfaas-fn

Roles● openfaas-operator-rw● openfaas-prometheus

RoleBindings● openfaas-operator-rw● openfaas-prometheus

ConfigMaps● alertmanager-config● prometheus-config

CustomResourceDefinitions● functions.openfaas.com

Ingresses● openfaas-ingress

Page 78: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS Footprint Cont.

78

Services● alertmanager● gateway● gateway-external● nats● prometheus

Deployments● alertmanager● faas-idler● gateway● nats● prometheus● queue-worker

Page 79: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Installation Prereq

79

● Install Istio (Full support)○ Install with raw YAML

■ Comprehensive Install■ Limited Install■ Custom Install

Page 80: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative (Istio) Footprint

80

ConfigMaps● istio● istio-galley-configuration● istio-security-custom-resources● istio-sidecar-injector● istio-statsd-prom-bridge

Jobs● istio-cleanup-secrets

Kubernetes.config.istio.io● attributes

AttributeManifests● istioproxy● kubernetes

Destinationrule.networking.istio.io● istio-policy● istio-telemetry

Gateway.networking.istio.io● istio-autogenerated-k8s-ingress

Namespaces● istio-system

ClusterRoles● cluster-local-gateway-istio-system● istio-citadel-istio-system● istio-cleanup-secrets-istio-system● istio-egressgateway-istio-system● istio-galley-istio-system● istio-ingressgateway-istio-system● istio-mixer-istio-system● istio-pilot-istio-system● istio-sidecar-injector-istio-system

ClusterRoleBindings● cluster-local-gateway-istio-system● istio-citadel-istio-system● istio-cleanup-secrets-istio-system● istio-egressgateway-istio-system● istio-galley-admin-role-binding-istio-system● istio-ingressgateway-istio-system● istio-mixer-admin-role-binding-istio-system● istio-pilot-istio-system● istio-sidecar-injector-admin-role-binding-istio-syste

m

Page 81: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative (Istio) Footprint Cont.

81

● instances.config.istio.io● instances.config.istio.io● kubernetesenvs.config.istio.io● kubernetesenvs.config.istio.io● kuberneteses.config.istio.io● kuberneteses.config.istio.io● listcheckers.config.istio.io● listcheckers.config.istio.io● listentries.config.istio.io● listentries.config.istio.io● logentries.config.istio.io● logentries.config.istio.io● memquotas.config.istio.io● memquotas.config.istio.io● meshpolicies.authentication.istio.io● metrics.config.istio.io● metrics.config.istio.io● noops.config.istio.io● noops.config.istio.io● opas.config.istio.io● opas.config.istio.io● policies.authentication.istio.io● prometheuses.config.istio.io● prometheuses.config.istio.io● quotas.config.istio.io● quotas.config.istio.io● quotaspecbindings.config.istio.io● quotaspecbindings.config.istio.io● quotaspecs.config.istio.io● quotaspecs.config.istio.io● rbacconfigs.rbac.istio.io● rbacconfigs.rbac.istio.io● rbacs.config.istio.io● rbacs.config.istio.io

CustomResourceDefinitions● adapters.config.istio.io● adapters.config.istio.io● apikeys.config.istio.io● apikeys.config.istio.io● attributemanifests.config.istio.io● attributemanifests.config.istio.io● authorizations.config.istio.io● authorizations.config.istio.io● bypasses.config.istio.io● bypasses.config.istio.io● checknothings.config.istio.io● checknothings.config.istio.io● circonuses.config.istio.io● circonuses.config.istio.io● deniers.config.istio.io● deniers.config.istio.io● destinationrules.networking.istio.io● destinationrules.networking.istio.io● edges.config.istio.io● edges.config.istio.io● envoyfilters.networking.istio.io● envoyfilters.networking.istio.io● fluentds.config.istio.io● fluentds.config.istio.io● gateways.networking.istio.io● gateways.networking.istio.io● handlers.config.istio.io● handlers.config.istio.io● httpapispecbindings.config.istio.io● httpapispecbindings.config.istio.io● httpapispecs.config.istio.io● httpapispecs.config.istio.io

● redisquotas.config.istio.io● redisquotas.config.istio.io● reportnothings.config.istio.io● reportnothings.config.istio.io● rules.config.istio.io● rules.config.istio.io● servicecontrolreports.config.istio.io● servicecontrolreports.config.istio.io● servicecontrols.config.istio.io● servicecontrols.config.istio.io● serviceentries.networking.istio.io● serviceentries.networking.istio.io● servicerolebindings.rbac.istio.io● servicerolebindings.rbac.istio.io● serviceroles.rbac.istio.io● serviceroles.rbac.istio.io● signalfxs.config.istio.io● signalfxs.config.istio.io● solarwindses.config.istio.io● solarwindses.config.istio.io● stackdrivers.config.istio.io● stackdrivers.config.istio.io● statsds.config.istio.io● statsds.config.istio.io● stdios.config.istio.io● stdios.config.istio.io● templates.config.istio.io● templates.config.istio.io● tracespans.config.istio.io● tracespans.config.istio.io● virtualservices.networking.istio.io● virtualservices.networking.istio.io

Page 82: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative (Istio) Footprint Cont.

82

deployment.extensions● cluster-local-gateway● istio-citadel● istio-egressgateway● istio-galley● istio-ingressgateway● istio-pilot● istio-policy● istio-sidecar-injector● istio-statsd-prom-bridge● istio-telemetry

horizontalpodautoscalers● cluster-local-gateway● istio-egressgateway● istio-ingressgateway● istio-pilot● istio-policy● istio-telemetry

kubernetesenv.config.istio.io● handler

logentry.config.istio.io● accesslog● tcpaccesslog

metric.config.istio.io● requestcount● requestduration● requestsize● responsesize● tcpbytereceived● tcpbytesent

mutatingwebhookconfiguration● istio-sidecar-injector

prometheus.config.istio.io● handler

rule.config.istio.io● kubeattrgenrulerule● promhttp● promtcp● stdio● stdiotcp● tcpkubeattrgenrulerule

service● cluster-local-gateway● istio-citadel● istio-egressgateway● istio-galley● istio-ingressgateway● istio-pilot● istio-policy● istio-sidecar-injector● istio-statsd-prom-bridge● istio-telemetry

serviceaccount● cluster-local-gateway-service-account● istio-citadel-service-account● istio-cleanup-secrets-service-account● istio-egressgateway-service-account● istio-galley-service-account● istio-ingressgateway-service-account● istio-mixer-service-account● istio-pilot-service-account● istio-sidecar-injector-service-account

stdio.config.istio.io● handler

Page 83: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Installation

83

● Install Knative○ Install with raw YAML

Page 84: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Footprint

84

Namespaces● default● istio-system● knative-serving

Services● activator-service● autoscaler● controller● webhook

Deployments● activator● autoscaler● controller● webhook

ClusterRoles● knative-serving-admin● knative-serving-core

ClusterRoleBindings● knative-serving-controller-admin

ConfigMaps● config-autoscaler● config-controller● config-domain● config-gc● config-istio● config-logging● config-network● config-observability

CustomResourceDefinitions● clusteringresses.networking.internal.knative.dev● configurations.serving.knative.dev● images.caching.internal.knative.dev● podautoscalers.autoscaling.internal.knative.dev● revisions.serving.knative.dev● routes.serving.knative.dev● services.serving.knative.dev

Deployments● activator● autoscaler● controller● webhook

ConfigMaps● config-autoscaler● config-controller● config-domain● config-gc● config-istio● config-logging● config-network● config-observability

Page 85: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative Footprint Cont.

85

gateway.networking.istio.io● cluster-local-gateway● knative-ingress-gateway

image.caching.internal.knative.dev● queue-proxy

Services● activator-service● autoscaler● controller● webhook

ServiceAccount● controller

Page 86: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Alternative: Knative/Gloo Installation

86

● Install Gloo (Partial support)○ "glooctl install knative"

Page 87: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Function:Building

87

Page 88: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

88

● Create the Function○ mkdir myfunc○ cd myfunc○ vi function.py

● Install Dependencies● Submit to AWS

○ zip -r function.zip .○ aws lambda update-function-code

Build Process

Page 89: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

89

● AWS Provided:○ Node 6.10, 8.10○ Python 2.6, 3.6, 3.7○ Ruby 2.5○ Java 8○ Go 1.X○ .Net Core 1.0, 2.0, 2.1

● Runtimes are Customizable

Function Runtimes

Page 90: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

90

● KVM (Amazon Linux)○ Native libraries (ex: cython) may require a dedicated build

machine● Must package all dependencies in a zip file

○ Python■ pip install --target .■ virtualenv

○ Node■ node_modules

○ Ruby■ bundle install --path vendor/bundle

Language Dependencies

Page 91: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Build Process

91

● Generate a Docker image○ faas-cli new --lang python myfunc○ Edit - requirements.txt○ Edit - handler.py○ faas-cli build -f ./myfunc.yml

Page 92: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Faas-cli Tool

92

● Function■ Generate■ Build■ Deploy■ Invoke

● Secrets management● Config management● Template store

Page 93: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

faas-cli template store ls

93

NAME SOURCE DESCRIPTIONcsharp openfaas Official C# templatedockerfile openfaas Official Dockerfile templatego openfaas Official Golang templatejava8 openfaas Official Java 8 templatenode openfaas Official NodeJS 8 templatephp7 openfaas Official PHP 7 templatepython openfaas Official Python 2.7 templatepython3 openfaas Official Python 3.6 templateruby openfaas Official Ruby 2.5 templatenode10-express openfaas-incubator NodeJS 10 Express templateruby-http openfaas-incubator Ruby 2.4 HTTP templatepython27-flask openfaas-incubator Python 2.7 Flask templatepython3-flask openfaas-incubator Python 3.6 Flask templatenode8-express openfaas-incubator NodeJS 8 Express templategolang-http openfaas-incubator Golang HTTP templategolang-middleware openfaas-incubator Golang Middleware templatepython3-debian openfaas-incubator Python 3.6 Debian templatepowershell-template openfaas-incubator Powershell Core Ubuntu:16.04 templatepowershell-http-template openfaas-incubator Powershell Core HTTP Ubuntu:16.04 template

Page 94: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Containerized Builds

94

● Knative build system○ Triggered by source changes

■ Build■ Push■ Rollout

● Build your own Docker image from scratch○ Must be a full web server

Page 95: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Function:Deployment

95

Page 96: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

96

● AWS Console● AWS API● AWS CLI

○ aws lambda update-code

AWS Lambda

Page 97: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS

97

● Gateway GUI● Gateway API● FaaS CLI

○ faas-cli deploy -f myfunc.yaml● Kubernetes CR (Operator Required)

○ kubectl create -f myfunc-fn.yaml

Page 98: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative

98

● Kubernetes CR○ kubectl create -f myfunc-fn.yaml

Page 99: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Function:Invoking

99

Page 100: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

100

● AWS Console● AWS API● AWS CLI

○ aws lambda invoke

AWS Lambda

Page 101: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS

101

● Gateway GUI● FaaS CLI

○ faas-cli invoke ...● curl <ingress>/functions/get-tax

Page 102: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative

102

curl \ -H 'Host: get-tax.example.com' \ <ingress>

Page 103: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Summary103

Page 104: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

104

● No overhead● No management● VM runtimes● Limits● Lock-in

AWS Lambda

Page 105: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

OpenFaaS● Lightweight● Cloud Native Components● Faas-cli

○ Function templates○ Full platform interaction

● Parallel invocations by default● No canary or automated roll-back

105

Page 106: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

Knative

106

● Full serverless platform● Uses istio● Istio required● No persistent queue● Few faas platform helpers● No GUI

Page 107: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

More Serverless Platforms

107

● OpenWhisk○ Kafka required○ Container per invocation

● Kubeless○ Code Injection - no image builds○ NATS/Kafka Optional

● Fission○ Code injection - no image builds○ Pooled, "warm" containers

Page 108: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

More Serverless Platforms

108

● IronFunctions○ Can import lambda functions

● Fn○ Persistent DB required○ Container per invocation and/or re-used

"hot" containers

Page 109: @carsonoid Knative Vs. OpenFaaS - files.informatandm.comfiles.informatandm.com/uploads/2019/4/1550_Carson_Anderson.pdf · Knative Vs. OpenFaaS Functions on Kubernetes Carson Anderson

109

kube-decon.carson-anderson.com

dynamic-kubernetes.carson-anderson.com

salt-decon.carson-anderson.com

@carsonoid

@carson_ops

More of Me

github.com/carsonoid/talk-knative-vs-openfaas