Skip to content
Serverless Kubernetes with OpenFaaS (Functions as a Service)
Go Shell Smarty Makefile Dockerfile
Branch: master
Clone or download
alexellis Update Travis runtime version
The Travis runtime version has been updated to match the version
of Go in the Dockerfile (1.13)

Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
Latest commit 0fe88f3 Jan 21, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add new owners Apr 24, 2019
chart Update README.md Jan 21, 2020
cloud Name HTTP port for the OpenFaaS gateway Oct 4, 2019
contrib Move to KinD binary instead of fetching source Sep 28, 2019
docs Bump IngressOperator version to support paths Jan 14, 2020
handlers Update faas-provider to 0.14.0 Jan 1, 2020
k8s Move proxy to k8s package Nov 25, 2019
openshift Removed Prometheus route, as its not normally exposed Jul 5, 2019
test Update faas-provider to 0.14.0 Jan 1, 2020
types Update faas-provider to 0.13.1 Oct 24, 2019
vendor Convert faas-netes to Go modules Jan 21, 2020
version Add copyright headers where missing Sep 21, 2019
yaml Bump IngressOperator version to support paths Jan 14, 2020
yaml_arm64 Bump IngressOperator version to support paths Jan 14, 2020
yaml_armhf Bump IngressOperator version to support paths Jan 14, 2020
.DEREK.yml Redirect derek to faas repo May 17, 2018
.gitattributes Document that the yaml folder is generated Apr 28, 2019
.gitignore Remove kail dependency Jun 22, 2019
.travis.yml Update Travis runtime version Jan 21, 2020
CONTRIBUTING.md Remove SECRETS.md Sep 17, 2019
Dockerfile Convert faas-netes to Go modules Jan 21, 2020
Dockerfile.arm64 Convert faas-netes to Go modules Jan 21, 2020
Dockerfile.armhf Convert faas-netes to Go modules Jan 21, 2020
HELM.md Update language Jan 14, 2020
LICENSE Initial commit Jul 23, 2017
Makefile Publish cron-connector chart Dec 6, 2019
README.md Update the travis build badge to link to .com Dec 10, 2019
build.sh Add resource limits and requests via function parameters Nov 15, 2017
go.mod Convert faas-netes to Go modules Jan 21, 2020
go.sum Convert faas-netes to Go modules Jan 21, 2020
install.sh Add ClusterRole option Sep 20, 2019
main.go Move proxy to k8s package Nov 25, 2019
namespaces.yml Added to namespace openfaas-fn label for network policies Jan 29, 2019

README.md

faas-netes

Go Report Card Build Status License: MIT OpenFaaS

faas-netes is an OpenFaaS provider which enables Kubernetes for OpenFaaS. The existing REST API, CLI and UI are fully compatible.

OpenFaaS also runs well on managed Kubernetes services like AKS, EKS and GKE. See our list of tutorials in the documentation site for more.

OpenFaaS (Functions as a Service) is a framework for building serverless functions with Docker and Kubernetes which has first class support for metrics. Any process can be packaged as a function enabling you to consume a range of web events without repetitive boiler-plate coding.

Stack

In this README you'll find a technical overview and instructions for deploying to a Kubernetes cluster.

  • Platform for deploying serverless-style workloads - microservices and functions
  • Native Kubernetes integrations (API and ecosystem)
  • Built-in UI portal
  • YAML templates & helm chart
  • Over 19k GitHub stars
  • Independent open-source project with over 240 contributors
  • Operator available to use Custom Resource Definitions (CRDs) openfaas-operator
  • OAuth2 / OIDC authz available

Get started

OpenFaaS can form a complete stack for Cloud Native application development called PLONK including: Prometheus, Linux/Linkerd, OpenFaaS, NATS/Nginx and Kubernetes. Introducing PLONK.

Reference guide

Configuration via Environmental variables

faas-netes can be configured with environment variables, but for a full set of options see the helm chart.

Option Usage
httpProbe Boolean - use http probe type for function readiness and liveness. Default: false
write_timeout HTTP timeout for writing a response body from your function (in seconds). Default: 60s
read_timeout HTTP timeout for reading the payload from the client caller (in seconds). Default: 60s
image_pull_policy Image pull policy for deployed functions (Always, IfNotPresent, Never). Default: Always
gateway.resources CPU/Memory resources requests/limits (memory: 120Mi, cpu: 50m)
faasnetes.resources CPU/Memory resources requests/limits (memory: 120Mi, cpu: 50m)
operator.resources CPU/Memory resources requests/limits (memory: 120Mi, cpu: 50m)
queueWorker.resources CPU/Memory resources requests/limits (memory: 120Mi, cpu: 50m)
prometheus.resources CPU/Memory resources requests/limits (memory: 512Mi)
alertmanager.resources CPU/Memory resources requests/limits (memory: 25Mi)
nats.resources CPU/Memory resources requests/limits (memory: 120Mi)
faasIdler.resources CPU/Memory resources requests/limits (memory: 64Mi)
basicAuthPlugin.resources CPU/Memory resources requests/limits (memory: 50Mi, cpu: 20m)

Readiness checking

The readiness checking for functions assumes you are using our function watchdog which writes a .lock file in the default "tempdir" within a container. To see this in action you can delete the .lock file in a running Pod with kubectl exec and the function will be re-scheduled.

Namespaces

By default all OpenFaaS functions and services are deployed to the openfaas and openfaas-fn namespaces. To alter the namespace use the helm chart.

Ingress

To configure ingress see the helm chart. By default NodePorts are used. These are listed in the deployment guide.

Image pull policy

By default, deployed functions will use an imagePullPolicy of Always, which ensures functions using static image tags are refreshed during an update. If this is not desired behavior, set the image_pull_policy environment variable to an alternative. IfNotPresent is particularly useful when developing locally with minikube. In this case, you can set your local environment to use minikube's docker so faas-cli build builds directly into minikube's image store. faas-cli push is unnecessary in this workflow - use faas-cli build then faas-cli deploy.

Note: When set to Never, only local (or pulled) images will work. When set to IfNotPresent, function deployments may not be updated when using static image tags.

Kubernetes Versions

faas-netes maintainers strive to support as many Kubernetes versions as possible and it is currently compatible with Kubernetes 1.11 and higher. Instructions for OpenShift are also available in the documentation.

Contributing

You can quickly create a standard development environment using

make start-kind

this will use KinD to create a single node cluster and install the latest version of OpenFaaS via the Helm chart.

Check the contributor guide in CONTRIBUTING.md for more details on the workflow, processes, and additional tips.

You can’t perform that action at this time.