4.2 KiB
Deployment guide for Kubernetes
Note: The best place to start is the README file in the faas or faas-netes repo.
This guide is for deployment to a vanilla Kubernetes 1.8 cluster running on Linux hosts.
Kubernetes
OpenFaaS is Kubernetes-native and uses Deployments, Services and Secrets. For more detail check out the "faas-netes" repository.
For deploying on a cloud that supports Kubernetes LoadBalancers you may also want to apply the configuration in:
cloud/lb.yml
.
1.0 Build a cluster
You can start evaluating FaaS and building functions on your laptop or on a VM (cloud or on-prem).
2.0a Deploy with Helm
A Helm chart is provided faas-netes
repo.
2.0b Deploy OpenFaaS
- Clone the code
$ git clone https://github.com/openfaas/faas-netes
- Deploy the services
$ cd faas-netes
$ kubectl apply -f ./faas.yml,monitoring.yml,rbac.yml
3.0
That's it. You now have OpenFaaS deployed.
For simplicity the default configuration uses NodePorts rather than an IngressController (which is more complicated to setup).
Service | TCP port |
---|---|
API Gateway / UI | 31112 |
Prometheus | 31119 |
If you're an advanced Kubernetes user, you can add an IngressController to your stack and remove the NodePort assignments.
- Deploy a sample function
There are currently no sample functions built into this stack, but we can deploy them quickly via the UI or FaaS-CLI.
Use the CLI
- Install the CLI
$ curl -sL cli.openfaas.com | sudo sh
Then clone some samples to deploy on your cluster.
$ git clone https://github.com/openfaas/faas-cli
Edit samples.yml and change your gateway URL from localhost:8080
to kubernetes-node-ip:31112
.
i.e.
provider:
name: faas
gateway: http://192.168.4.95:31112
Now deploy the samples:
$ faas-cli deploy -f samples.yml
The
faas-cli
also supports an override of--gateway http://...
for example:
$ faas-cli deploy -f samples.yml --gateway http://127.0.0.1:31112
List the functions:
$ faas-cli list -f samples.yml
or
$ faas-cli list --gateway http://127.0.0.1:31112
Function Invocations Replicas
inception 0 1
nodejs-echo 0 1
ruby-echo 0 1
shrink-image 0 1
stronghash 2 1
Invoke a function:
$ echo -n Test | faas-cli invoke stronghash --gateway http://127.0.0.1:31112
c6ee9e33cf5c6715a1d148fd73f7318884b41adcb916021e2bc0e800a5c5dd97f5142178f6ae88c8fdd98e1afb0ce4c8d2c54b5f37b30b7da1997bb33b0b8a31 -
- Learn about the CLI
Morning coffee with the OpenFaaS CLI
- Build your first Python function
Your first serverless Python function with OpenFaaS
Use the UI
The UI is exposed on NodePort 31112.
Click "New Function" and fill it out with the following:
Field | Value |
---|---|
Service | nodeinfo |
Image | functions/nodeinfo:latest |
fProcess | node main.js |
Network | default |
- Test the function
Your function will appear after a few seconds and you can click "Invoke"
You can also use the CLI like this:
$ echo -n "" | faas-cli invoke --gateway http://kubernetes-ip:31112 nodeinfo
$ echo -n "verbose" | faas-cli invoke --gateway http://kubernetes-ip:31112 nodeinfo
Asynchronous functions
Asynchronous invocation works by queuing requests with NATS Streaminig.
Deploy the asynchronous stack like this (or use the helm chart with the async override)
$ cd faas-netes
$ kubectl apply -f ./faas.async.yml,nats.yml,monitoring.yml,rbac.yml
- See also: Asynchronous function guide