Serverless Kubernetes with OpenFaaS (Functions as a Service)
Clone or download
hullarb and alexellis Fixes #350 by adding missing namespace to ingress resource template
Signed-off-by: Bela Hullar <hullarb@gmail.com>
Latest commit aca6b30 Jan 13, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add CODEOWNERS Nov 22, 2018
chart/openfaas Fixes #350 by adding missing namespace to ingress resource template Jan 14, 2019
cloud Break out dep/svc/cfg files from YAML Jun 6, 2018
contrib clean up set_travis_experimental_mode Oct 7, 2017
docs Update to latest OpenFaaS Operator version Jan 11, 2019
handlers Add error checking in delete and update for non-existing secrets Jan 13, 2019
test Fix tests broken by #249 Aug 3, 2018
types Reduce the readiness checks for functions Jul 21, 2018
vendor Port secrets management from OF Operator Jan 9, 2019
version Add /system/info endpoint to faas-netes Mar 29, 2018
yaml Bump charts for openfaas-operator, faas-netes and GW Jan 10, 2019
yaml_arm64 Extend RBAC permissions to allow secret crud Jan 10, 2019
yaml_armhf Extend RBAC permissions to allow secret crud Jan 10, 2019
.DEREK.yml Redirect derek to faas repo May 17, 2018
.gitignore Disable Prometheus scraping for function services Nov 28, 2017
.travis.yml Run helm lint in TravisCI Jul 25, 2018
CONTRIBUTING.md Update faas-netes and queue-worker versions Mar 29, 2018
Dockerfile Bump golang to 1.10.x and alpine to 3.8 Dec 3, 2018
Dockerfile.arm64 Bump golang to 1.10.x and alpine to 3.8 Dec 3, 2018
Dockerfile.armhf Bump golang to 1.10.x and alpine to 3.8 Dec 3, 2018
Gopkg.lock Port secrets management from OF Operator Jan 9, 2019
Gopkg.toml Port secrets management from OF Operator Jan 9, 2019
HELM.md Swap order of recommended namespaces for helm Feb 12, 2018
LICENSE Initial commit Jul 23, 2017
Makefile Add consistent ARM64 build image process Dec 17, 2018
QuickStart.md Update namespace for org and revendor Sep 27, 2017
README.md Fix link in README Dec 20, 2018
SECRETS.md Add label-schema to Dockerfile Jul 9, 2018
build.sh Add resource limits and requests via function parameters Nov 15, 2017
monitoring-config.yml Upgrade prometheu to v2.1 Feb 6, 2018
namespaces.yml Add Istio injection label to OpenFaaS namespaces Sep 13, 2018
server.go Port secrets management from OF Operator Jan 9, 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.

Watch a video demo from TechFieldDay Extra at Dockercon

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. (Docker Swarm is also supported along with Hashicorp Nomad)

  • Framework for deploying serverless workloads
  • Native Kubernetes integrations (API and ecosystem)
  • Built-in UI
  • YAML templates & helm chart
  • Over 13.5k GitHub stars
  • Independent open-source project with over 130 contributors
  • Operator available to use Custom Resource Definitions (CRDs) openfaas-operator

Get started

How is this project different from others?

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

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.