OpenWhisk Deployment for Kubernetes
This repository can be used to deploy OpenWhisk to a Kubernetes cluster.
Table of Contents
Requirements
Several requirements must be met for OpenWhisk to deploy on Kubernetes.
Kubernetes
- Kubernetes version 1.6+. However, avoid Kubernetes 1.6.3 due to an issue with volume mount subpaths. Our Travis CI testing uses Kubernetes version 1.7.4.
- The ability to create Ingresses to make a Kubernetes service available outside of the cluster so you can actually use OpenWhisk.
- Endpoints of Kubernetes services must be able to loopback to themselves ("hairpin mode").
OpenWhisk
- Docker version 1.12+
Setting up Kubernetes
Using Minikube
For local development and testing, we recommend using Minikube version 0.23+ with the docker network in promiscuous mode. Our Travis CI testing using Minikube 0.23.0. Take a look at these instructions.
Using a Kubernetes cluster from a cloud provider
You can also provision a Kubernetes cluster from a cloud provider, subject to the cluster meeting the requirements above.
Configuring OpenWhisk
Initial Cluster Configuration
- Follow the steps for initial Cluster Setup
Configure or Deploy CouchDB
Do one of the following:
- For development and testing purposes, this repo includes a configuration for deploying a simple non-persistent CouchDB instance within the Kubernetes cluster.
- For a production level CouchDB instance, take a look at the main OpenWhisk documentation for configuring CouchDB.
Deploy Remaining Components
To deploy OpenWhisk on Kubernetes, you must deploy its components in an order that respects their dependencies. Detailed instructions and the supporting configuration files can be found in the kubernetes directory tree. Follow the instructions for each step in order.
- Deploy ApiGateway
- Deploy Zookeeper
- Deploy Kafka
- Deploy Controller
- Deploy Nginx
- Deploy Ingress, including configuring the wsk CLI.
- Deploy Invoker
- Deploy RouteMgmt
- Deploy Package Catalog
Verify
Your OpenWhisk installation should now be usable. You can test it by following these instructions to define and invoke a sample OpenWhisk action in your favorite programming language.
Cleanup
At some point there might be a need to cleanup the Kubernetes environment. For this, we want to delete all the OpenWhisk deployments, services, jobs and whatever else might be there. We provide a script to do this:
./tools/admin/cleanup.sh
Issues
Report bugs, ask questions and request features here on GitHub.
You can also join our slack channel and chat with developers. To get access to our slack channel, request an invite here.