[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-13 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
There's 1 new edit on this page 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[WIP] OpenWhisk on Knative 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited this page 
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Here's the version comment 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited at 12:24 PM 
 
 
  
 
 

 
 
 
 
 
 
 
 
 added event flow architecture diagram  
 
 
  
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Here's what changed: 
 
 
 
 
 
 
 
 
 
 
 ...  
 
 
 
 Gliffy Diagram 
 
 
 
 
 
 
 
 
name 
openwhisk_knative_eventing 
 
 
pagePin 
12 
 
 
  
 
 
 Event → Knative Eventing → Knative Serving → Action Container Runtime Shim → Action Container OpenWhisk Runtime ...  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Go to page history 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
View page 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0  
 
 
  
 
 
 
 
 
 
 
 
 




[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-13 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
There's 2 new edits on this page 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[WIP] OpenWhisk on Knative 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited this page 
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Here's what changed: 
 
 
 
 
 
 
 
 
 
 
 ...  
 
 
 
 Gliffy Diagram 
 
 
 
 
 
 
 
 
 
 
 
 
name 
openwhisk_knative 
 
 
pagePin 
2 
 
 
  
 
 
  Event flow on Knative  TODO: Describe how events flow through Knative and invoke OpenWhisk Actions.  
 
 
 
 Gliffy Diagram 
 
 
 
 
 
 
 
 
name 
openwhisk_knative_eventing 
 
 
pagePin 
1 
 
 
  
 
 
  Event → Knative Eventing → Knative Serving → Action Container Runtime Shim → Action Container OpenWhisk Runtime Mapping between OpenWhisk and Knative objects ...  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Go to page history 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
View page 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0  
 
 
  
 
 
 
 
 
 
 
 
 




[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-13 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
 
 
 
 

Ben Browning added a file to a page 
 
 
  
 
 
 
 
 
 
 
  
 
 
 
 
Version comment: GLIFFY IMAGE 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
openwhisk_knative_eventing.png 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

[WIP] OpenWhisk on Knative 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0  
 
 
  
 
 
 
 
 
 
 
 
 




[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-13 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
 
 
 
 

Ben Browning added a file to a page 
 
 
  
 
 
 
 
 
 
 
  
 
 
 
 
Version comment: GLIFFY DIAGRAM 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
openwhisk_knative_eventing 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

[WIP] OpenWhisk on Knative 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0  
 
 
  
 
 
 
 
 
 
 
 
 




[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-09 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
There's 2 new edits on this page 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[WIP] OpenWhisk on Knative 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited this page 
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Here's the version comment 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited at 02:40 AM 
 
 
  
 
 

 
 
 
 
 
 
 
 
 added vimeo screencast link  
 
 
  
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Here's what changed: 
 
 
 
 
 
 
 
 
 
 
 ... 
 
 https://asciinema.org/a/193646  
 https://asciinema.org/a/194415  
 https://vimeo.com/284277016  
 The general goal of this prototype is to use Knative for as much of the implementation as possible. Right now there are two primary components to the prototype: ...  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Go to page history 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
View page 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0  
 
 
  
 
 
 
 
 
 
 
 
 




[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-07 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
There's 1 new edit on this page 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[WIP] OpenWhisk on Knative 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited this page 
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Here's the version comment 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited at 05:41 PM 
 
 
  
 
 

 
 
 
 
 
 
 
 
 add inline diagram  
 
 
  
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Here's what changed: 
 
 
 
 
 
 
 
 
 
 
 ... This does mean that OpenWhisk container actions (ie blackbox actions) and other custom runtime images won't work out of the box without adding this shim. It is a later goal of this prototype to explore using Knative Build to automatically add the shim into arbitrary container images but that has not been implemented yet. 
 
 
 
 Gliffy Diagram 
 
 
 
 
 
 
 
 
 
 
 
 
name 
openwhisk_knative 
 
 
pagePin 
1 
 
 
  
 
 
  Event flow on Knative TODO: Describe how events flow through Knative and invoke OpenWhisk Actions. ...  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Go to page history 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
View page 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0  
 
 
  
 
 
 
 
 
 
 
 
 




[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-07 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
There's 1 new edit on this page 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[WIP] OpenWhisk on Knative 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited this page 
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Here's the version comment 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited at 04:24 PM 
 
 
  
 
 

 
 
 
 
 
 
 
 
 architectural details of prototype impl  
 
 
  
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Here's what changed: 
 
 
 
 
 
 
 
 
 
 
 ... 
 
 https://asciinema.org/a/193646  
 https://asciinema.org/a/194415  
  The general goal of this prototype is to use Knative for as much of the implementation as possible. Right now there are two primary components to the prototype:   OpenWhisk-compatible client API   This is implemented as a small Golang server with large parts autogenerated from the upstream OpenWhisk OpenAPI spec. Existing OpenWhisk clients communicate with this API which translates all OpenWhisk API calls into the appropriate Kubernets and Knative API calls. It is tested by running the existing OpenWhisk API test suite against this new server. Many tests do not pass yet, and some may require slight changes to the test suite to be able to pass long-term. The goal is to use the OpenWhisk API test suite to validate compatibility and eventually document any known incompatibilities.   OpenWhisk-compatible runtime image shim   This is implemented as a small Golang server that gets bundled into repackaged container images for each OpenWhisk action kind. Knative expects to be able to POST events to the root path ("/") of running servers while OpenWhisk expects different semantics of an Invoker calling "/init" and "/run" of the action runtimes. This shim essentially acts like a mini-invoker, translating Knative event requests into ones the OpenWhisk runtimes expect.   This does mean that OpenWhisk container actions (ie blackbox actions) and other custom runtime images won't work out of the box without adding this shim. It is a later goal of this prototype to explore using Knative Build to automatically add the shim into arbitrary container images but that has not been implemented yet. Event flow on Knative TODO: Describe how events flow through Knative and invoke OpenWhisk Actions. ...  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Go to page history 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
View page 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0  
 
 
  
 
 
 
 
 
 
 
 
 




[CONF] OpenWhisk > [WIP] OpenWhisk on Knative

2018-08-07 Thread Ben Browning (Confluence)
Title: Message Title



 
 
 
There's 1 new edit on this page 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[WIP] OpenWhisk on Knative 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited this page 
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Here's the version comment 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
Ben Browning edited at 04:04 PM 
 
 
  
 
 

 
 
 
 
 
 
 
 
 added purpose and prototype sections  
 
 
  
 
 
  
 
 

 
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Here's what changed: 
 
 
 
 
 
 
 
 
 
 
  Purpose   This document describes a proposed integration between Apache OpenWhisk and Knative. Knative is a set of building blocks for serverless platforms running on top of Kubernetes. It is not a complete serverless platform and leaves the higher-level API concepts, CLIs, tooling, etc up to specific vendors to implement. OpenWhisk has some of these higher-level concepts and toolings - notably the notion of Actions, `wsk` and `wskdeploy`, composer and conductor, client libraries in multiple languages, integration with the serverless plugin, etc.   The aim of this proposal is to describe and prototype an OpenWhisk design that takes full advantage of Knative on top of Kubernetes while also retaining compatibility with most or all current OpenWhisk functions, integrations, user-facing tools and documentation, and overall ecosystem. This proposal does not consider non-Knative/Kubernetes platforms nor compatibility at a level other than the Controller API and function runtimes. In particular system requirements, installation steps, action execution guarantees, and other internal details will change.   This proposal is put forth by the serverless team at Red Hat for discussion with the broader Apache OpenWhisk community. If the community decides to move forward with some or all of this proposal, prototype code will be happily moved into official Apache repositories. Until that time, development will take place in the open but not under the Apache umbrella to allow for rapid iteration, prototyping, and design changes without confusing existing OpenWhisk users about the project's direction or impede progress towards graduating from Incubation.   Prototype Implementation   A rapidly evolving prototype of this proposal is available at https://github.com/projectodd/kwsk/.   There are also a number of asciicasts and screencasts available demoing some of the functionality, listed in order from oldest to newest:  
 
 https://asciinema.org/a/193646  
 https://asciinema.org/a/194415  
Event flow on Knative   TODO: Describe how events flow through Knative and invoke OpenWhisk Actions. Mapping between OpenWhisk and Knative objects ... 
 
kwsk server 
 
POST -H "Host: myAction" knative-ingressgateway/init 
 
 calls /init in the action runtime container  
  
 POST -H "Host: myAction" knative-ingressgateway/run 
 
 calls /run in the action runtime container  
  
  
 ... 
 
 
 
  
 
 if kwsk server is running inside the same Kubernetes cluster as Knative, this can directly hit the domainInternal of the Knative route instead of going via the ingress gateway w/ host header  
 the action parameters are passed as the POST body  
 the action runtime container images are the default upstream ones with the addition of a small golang binary added that proxies incoming POST requests and does the "/init" and "/run" handshake with the language-specific runtime  
  
  
 Triggers wsk trigger create myTrigger ...  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Go to page history 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
View page 
 
 
  
 
 
  
 
 
  
 
 
  
 
 
 
 
 
 
 
 
 
 
Stop watching space
• 
 
 
 
 
 
 
Manage notifications 
 
 
 
 
 
 
 
 
 
 
  
 
 
This message was sent by Atlassian Confluence 6.9.0