Goals
- Try to reuse Kubernetes components in OW
- Keep the existing developer experience and CLI
Current deployment
Originally OpenWhisk was built with the assumption that each Invoker is responsible for a single VM in the cluster. With a Cluster Manager, this premise changes, as a single Invoker could be in charge of the entire cluster. The Cluster Manager is responsible for each VM. From the Invoker's perspective, the entire cluster looks like a single pool of resources.
The current OpenWhisk components, Controller and Invoker, have problems managing the same pull of resources. For example:
- when 2 or more Invokers manage the same resources, conflicts may arise due to the fact that Invokers don't share any model
- the load balancing logic in the Controller becomes less important given than it doesn't matter which Invoker executes a given action, because it will still execute it on the same pool of resources
- the max memory limit set per invoker is also not useful
CNCF based Architecture
Given these new premises, and the experience of building a FaaS solution that the OpenWhisk community has, can the OW system benefit from a Cluster Manager to simplify its implementation, while keeping the same developer experience ?
This document looks at some possible options to achieve this with Kubernetes and other solutions from the CNCF landscape.
Management, Control, and Data Plane
OpenWhisk system can be decomposed in 3 distinct areas of concern, inspired from Network Devices and Systems designs.
Management Plane
TBD
Control Plane
TBD
Data Plane
TBD
Previous discussions
Provide support for integration with Kubernetes. One approach could be to deploy and run the components on a Kubernetes provider as we do for Vagrant, Docker, Docker-Compose, and OpenStack.
Proposal to be discussed on the dev list https://lists.apache.org/thread.html/66b2111f8edb4a44466728d697c735f549971909600a02f1b585a9e7@%3Cdev.openwhisk.apache.org%3E