1 of 81

1

Kubernetes Serverless

With Knative, Tekton

Burr Sutter (burrsutter.com)

@burrsutter - bit.ly/serverlesskube

2 of 81

http://www.fanpop.com/clubs/bruce-lee/images/27605335/title/way-dragon-photo

http://gonewiththetwins.com/new/way-dragon-return-dragon-1972/

@burrsutter - bit.ly/serverlesskube

3 of 81

Burr Sutter (burrsutter.com)

  • Currently Red Hat’s Global Director of Developer Experience
  • Featured speaker at technology events around the globe
  • A Java Champion since 2005
  • Former President of the Atlanta Java User Group
  • Founded the DevNexus conference
  • Always looking for technologies that enable developers to deliver better software, faster

@burrsutter

4 of 81

Learning Resources

@burrsutter

5 of 81

@burrsutter

6 of 81

Kubernetes Serverless with Knative

Kubernetes Basics

(9 Steps to Awesome)

Istio

(Enter the Service Mesh)

Knative

(Kubernetes Serverless)

Microservices

Serverless/PaaS

https://www.oreilly.com/live-training/

Control-F and search for "burr"

@burrsutter - bit.ly/serverlesskube

7 of 81

@burrsutter - bit.ly/serverlesskube

8 of 81

@burrsutter - bit.ly/serverlesskube

9 of 81

Knative Tutorial Exercises (bit.ly/knative-tutorial)

  • Setup
  • Serving: Deploy Knative Service & Revisions
  • Configurations & Routes
  • Auto-scaling
  • Build (Tekton)
  • Eventing

@burrsutter - bit.ly/serverlesskube

10 of 81

Knative's Primary Components

Serving

Build

Eventing

X

Replaced by Tekton

@burrsutter - bit.ly/serverlesskube

11 of 81

Agenda

  • What is Serverless
  • Serverless vs FaaS
  • Serverless via BaaS & SaaS
  • FaaS Introduction
  • Knative Serving
  • Knative Build
  • Knative Eventing

@burrsutter - bit.ly/serverlesskube

12 of 81

Are custom software Apps/APIs a key strategic advantage for your organization?

OR

Do you regard IT as a cost center that must be better streamlined?

@burrsutter - bit.ly/serverlesskube

13 of 81

Your Journey to Awesomeness

Self-Service,

On-Demand,

Elastic Infrastructure

Automation

CI & CD

Deployment Pipeline

Advanced

Deployment

Techniques

Microservices

Re-Org to

DevOps

@burrsutter - bit.ly/serverlesskube

14 of 81

We cannot solve our problems with the same thinking we used when we created them. �Albert Einstein �(Theoretical Physicist)

@burrsutter - bit.ly/serverlesskube

15 of 81

Monolith

MyApp

@burrsutter - bit.ly/serverlesskube

16 of 81

The Application

@burrsutter - bit.ly/serverlesskube

17 of 81

Modules

@burrsutter - bit.ly/serverlesskube

18 of 81

Microservices

@burrsutter - bit.ly/serverlesskube

19 of 81

Microservices

@burrsutter - bit.ly/serverlesskube

20 of 81

Microservices

@burrsutter - bit.ly/serverlesskube

21 of 81

Microservices

@burrsutter - bit.ly/serverlesskube

22 of 81

Network of Services

@burrsutter - bit.ly/serverlesskube

23 of 81

Microservices own their Data

@burrsutter - bit.ly/serverlesskube

24 of 81

Multiple Points of Entry

@burrsutter - bit.ly/serverlesskube

25 of 81

Teams & Pipelines

@burrsutter - bit.ly/serverlesskube

26 of 81

27 of 81

“Change is the essential process of all of existence.”—Spock

@burrsutter - bit.ly/serverlesskube

28 of 81

Let there be Functions?

@burrsutter - bit.ly/serverlesskube

29 of 81

Love Thy Mono

Every 4 months Every week/day/hour

@burrsutter - bit.ly/serverlesskube

30 of 81

Serverless

@burrsutter - bit.ly/serverlesskube

31 of 81

Cloud Native Computing Foundation

“Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.”

https://www.cncf.io/blog/2018/02/14/cncf-takes-first-step-towards-serverless-computing/

@burrsutter - bit.ly/serverlesskube

32 of 81

Serverless vs FaaS

'...are application designs that incorporate third-party “Backend as a Service” (BaaS) services, and/or that include custom code run in managed, ephemeral containers on a “Functions as a Service” (FaaS) platform'

https://martinfowler.com/articles/serverless.html

'The survey defined FaaS as typically providing event-driven computing where developers run and manage application code with functions that are triggered by events'

https://thenewstack.io/add-it-up-serverless-faas/

@burrsutter - bit.ly/serverlesskube

33 of 81

Short History of Serverless

AWS

S3

March

2006

AWS

Lambda

November

2014

AWS

EC2

August

2006

Serverless�Described

Thoughtworks

August 2016

Serverless

Coined

October

2012

Serverless�Assess

Thoughtworks

Radar

April 2016

AWS

DynamoDB

January

2012

Firebase

September

2011

Iron.io

July

2011

Pivotal

Riff

Dec 2017

@burrsutter - bit.ly/serverlesskube

34 of 81

The first question is “is there a suitable service I can consume?” before “is there something I can buy and set up using a cloud provider?”.

Thoughtworks Nov 29 2017

@burrsutter - bit.ly/serverlesskube

35 of 81

It is Serverless�because of BaaS/SaaS

(managed by another party services).

@burrsutter - bit.ly/serverlesskube

36 of 81

It is all about the Services

@burrsutter - bit.ly/serverlesskube

37 of 81

HTTP Input/Output Service

API

Gateway�-as-a-�Service

@burrsutter - bit.ly/serverlesskube

38 of 81

Authentication Service

API

Gateway�-as-a-�Service

SSO-as-a-�Service

A

P

I

@burrsutter - bit.ly/serverlesskube

39 of 81

File Storage Service

Storage-as-a-Service

A

P

I

API

Gateway�-as-a-�Service

SSO-as-a-�Service

A

P

I

@burrsutter - bit.ly/serverlesskube

40 of 81

Data Services

Storage-as-a-Service

A

P

I

API

Gateway�-as-a-�Service

��Cache-as-a-�Service

API

DB-as-a-�Service

API

SSO-as-a-�Service

A

P

I

@burrsutter - bit.ly/serverlesskube

41 of 81

Connectivity Services

Storage-as-a-Service

A

P

I

API

Gateway�-as-a-�Service

Messaging�-as-a-�Service

A

P

I

��Cache-as-a-�Service

API

DB-as-a-�Service

API

Notifications�-as-a-�Service

A

P

I

A

P

I

SSO-as-a-�Service

A

P

I

@burrsutter - bit.ly/serverlesskube

42 of 81

Your Containerized Services

Storage-as-a-Service

A

P

I

API

Gateway�-as-a-�Service

My

Microservice

A

My

Microservice

B

My

Microservice

C

Messaging�-as-a-�Service

A

P

I

��Cache-as-a-�Service

API

DB-as-a-�Service

API

Notifications�-as-a-�Service

A

P

I

A

P

I

SSO-as-a-�Service

A

P

I

@burrsutter - bit.ly/serverlesskube

43 of 81

Event-Driven Input

Storage-as-a-Service

A

P

I

API

Gateway�-as-a-�Service

My

Microservice

A

Function

1

My

Microservice

B

My

Microservice

C

Function

2

Function

3

Function

4

Messaging�-as-a-�Service

A

P

I

��Cache-as-a-�Service

API

DB-as-a-�Service

API

Notifications�-as-a-�Service

A

P

I

A

P

I

SSO-as-a-�Service

A

P

I

Function

5

@burrsutter - bit.ly/serverlesskube

44 of 81

Event-Driven Output

Storage-as-a-Service

A

P

I

API

Gateway�-as-a-�Service

My

Microservice

A

Function

1

My

Microservice

B

My

Microservice

C

Function

2

Function

3

Function

7

Function

4

Function

6

Messaging�-as-a-�Service

A

P

I

��Cache-as-a-�Service

API

DB-as-a-�Service

API

Notifications�-as-a-�Service

A

P

I

A

P

I

SSO-as-a-�Service

A

P

I

Function

5

@burrsutter - bit.ly/serverlesskube

45 of 81

Synergy

Storage-as-a-Service

A

P

I

API

Gateway�-as-a-�Service

My

Microservice

A

Function

1

My

Microservice

B

My

Microservice

C

Function

2

Function

3

Function

7

Function

4

Function

6

Messaging�-as-a-�Service

A

P

I

��Cache-as-a-�Service

API

DB-as-a-�Service

API

Notifications�-as-a-�Service

A

P

I

A

P

I

SSO-as-a-�Service

A

P

I

Function

5

@burrsutter - bit.ly/serverlesskube

46 of 81

Microservices

Serverless

Functions

Your Control

Long-Lived Processes

Known Programming Model

Often Sync Request-Response

Mature:

IDE Integration

Debuggers

Tracers

Monitoring

CI/CD

Cloud Control

Short-Lived Processes

New Programming Model

Event-Driven Async

Immature:

?

@burrsutter - bit.ly/serverlesskube

47 of 81

Microservices

Serverless

Functions

Your Control

Long-Lived Processes

Known Programming Model

Often Sync Request-Response

Mature:

IDE Integration

Debuggers

Tracers

Monitoring

CI/CD

Cloud Control

Short-Lived Processes

New Programming Model

Event-Driven Async

Immature:

?

Knative

@burrsutter - bit.ly/serverlesskube

48 of 81

FaaS

@burrsutter - bit.ly/serverlesskube

49 of 81

FaaS Kubernetes Players

@burrsutter - bit.ly/serverlesskube

50 of 81

Kubernetes/OpenShift

Review

mvn package

docker build

kubectl apply -f deploy.yml

kubectl apply -f service.yml

@burrsutter - bit.ly/serverlesskube

51 of 81

Knative

https://github.com/knative

@burrsutter - bit.ly/serverlesskube

52 of 81

Knative Announced July 24 2018

@burrsutter - bit.ly/serverlesskube

53 of 81

FaaS Kubernetes Players

Why?

@burrsutter - bit.ly/serverlesskube

54 of 81

Primitives

Kubernetes

Deployment

Replicaset

Pod

Service

(tekton)

Autoscaling

Invokers

Event Binding

Routing

Observability

DX

Functions

Event Sources

Build Tools

Knative

Vendors

FaaS Stuff

Serverless

Stuff

@burrsutter - bit.ly/serverlesskube

55 of 81

What is Knative?

"Kubernetes-based platform to build, deploy, and manage modern serverless workloads."

"Essential base primitives for all"

"Knative provides a set of middleware components that are essential to build modern, source-centric, and container-based applications that can run anywhere: on premises, in the cloud, or even in a third-party data center"

@burrsutter - bit.ly/serverlesskube

56 of 81

Interesting Capabilities

  • Scale-to-zero: No pod == no memory
  • Scale-from-zero: Traffic spike starts N pods
  • Configurations & Revisions - built-in Blue/Green
  • In-Cluster Image Building (Tekton)
  • Traffic splitting
  • Eventing System

@burrsutter - bit.ly/serverlesskube

57 of 81

@burrsutter - bit.ly/serverlesskube

58 of 81

@burrsutter - bit.ly/serverlesskube

59 of 81

Knative Serving

@burrsutter - bit.ly/serverlesskube

60 of 81

Knative Serving

kubectl get crd | grep serving

configurations.serving.knative.dev

revisions.serving.knative.dev

routes.serving.knative.dev

services.serving.knative.dev

@burrsutter - bit.ly/serverlesskube

61 of 81

Knative Serving Autoscaler

kubectl -n knative-serving edit configmap config-autoscaler

container-concurrency-target-default: "100"

scale-to-zero-grace-period: 60s

stable-window: 30s

@burrsutter - bit.ly/serverlesskube

62 of 81

kubectl apply -f Deployment.yaml

Deployment

Replicaset

Pod

Service

Pod

Pod

@burrsutter - bit.ly/serverlesskube

63 of 81

kubectl apply -f ksvc.yaml

Deployment N

Replicaset N

Pod

Service

Pod

Pod N

Configuration

Revision N

serving.knative.dev/v1alpha1

Service

Route

Service

@burrsutter - bit.ly/serverlesskube

64 of 81

kubectl apply -f ksvc.yaml

Deployment N

Replicaset N

Pod

Service

Pod

Pod N

Configuration

Revision N

Knative Gateway

VirutalService

Activator

serving.knative.dev/v1alpha1

Service

Route

ImageCache

PodAutoscaler

ClusterIngress

Service

@burrsutter - bit.ly/serverlesskube

65 of 81

Demo/Labs

@burrsutter - bit.ly/serverlesskube

66 of 81

Knative Eventing

@burrsutter - bit.ly/serverlesskube

67 of 81

Knative Eventing

kubectl get crd | grep eventing

channels.eventing.knative.dev

subscriptions.eventing.knative.dev

cronjobsources.sources.eventing.knative.dev

githubsources.sources.eventing.knative.dev

kuberneteseventsources.sources.eventing.knative.dev

containersources.sources.eventing.knative.dev

@burrsutter - bit.ly/serverlesskube

68 of 81

Knative Eventing Sources

Github�Websockets�AWS SQS�GCP PubSub�Apache Kafka�Apache Camel

https://github.com/knative/eventing-contrib

https://github.com/knative/eventing-sources

@burrsutter - bit.ly/serverlesskube

69 of 81

Sink

Source to Sink

Knative Event Source

Knative Service (ksvc)

@burrsutter - bit.ly/serverlesskube

70 of 81

Channel and Subscription

Knative Event Source

Sink

Knative Service A (ksvc)

Sink

Channel

Knative Service B (ksvc)

Cloud Event Message

Sub

Sub

@burrsutter - bit.ly/serverlesskube

71 of 81

Broker and Trigger

Knative Event Source

Knative Eventing Trigger

Sink

broker

Knative Eventing Trigger

Sub

Sub

Filtered messages

@burrsutter - bit.ly/serverlesskube

72 of 81

Demo/Labs

@burrsutter - bit.ly/serverlesskube

73 of 81

Knative Build

Moving to Tekton

@burrsutter - bit.ly/serverlesskube

74 of 81

@burrsutter - bit.ly/serverlesskube

75 of 81

Pipelines - Tekton

  • Governed by the Continuous Delivery Foundation (cd.foundation)
  • Contributions from Google, Cloudbees, IBM, Pivotal, Red Hat and more
  • Originated from the Knative Build subproject
  • Build your linux container images in-cluster
  • Automate deployments
  • Defines new Kinds via CRDs: Pipeline, Task
  • Reusable Tasks (https://github.com/tektoncd/catalog)
    • git clone
    • mvn, bazel, s2i (python, ruby, etc)
    • "docker build" (buildah, kaniko, makisu)

@burrsutter - bit.ly/serverlesskube

76 of 81

Pipelines, Tasks, Steps, Resources

Pipeline

Task

Step

Step

Task

Step

git

image

cluster

Task

Step

Step

Pipeline

Resource

Pipeline

Resource

@burrsutter - bit.ly/serverlesskube

77 of 81

Pipeline: Tasks & Steps -> Pods & Containers

Pipeline

Task

Step

Step

Task

Step

Step

Pod

Container

Container

Pod

Container

Container

@burrsutter - bit.ly/serverlesskube

78 of 81

@burrsutter - bit.ly/serverlesskube

79 of 81

Resources

@burrsutter - bit.ly/serverlesskube

80 of 81

@burrsutter - bit.ly/serverlesskube

81 of 81

@burrsutter - bit.ly/serverlesskube