Simplify your Kubernetes workflow with OpenFaaS

Serverless? NoOps?

Kubernetes 101 - old school approach

  • Image
  • Container
  • Pod
  • Deployment
  • Service
  • Ingress

Better way

OpenFaaS adventages

  • Simple app deployments
  • Scale to zero
  • Sports many orchestration providers (not only k8s)
  • Simplicity

OpenFaas architecture

watchdog

FaaS UI

OpenFaaS store

faas-cli

Available Commands:
  auth           Obtain a token for your OpenFaaS gateway
  build          Builds OpenFaaS function containers
  cloud          OpenFaaS Cloud commands
  deploy         Deploy OpenFaaS functions
  describe       Describe an OpenFaaS function
  generate       Generate Kubernetes CRD YAML file
  invoke         Invoke an OpenFaaS function
  list           List OpenFaaS functions
  login          Log in to OpenFaaS gateway
  logout         Log out from OpenFaaS gateway
  logs           Tail logs from your functions
  new            Create a new template in the current folder with the name given as name
  push           Push OpenFaaS functions to remote registry (Docker Hub)
  remove         Remove deployed OpenFaaS functions
  secret         OpenFaaS secret commands
  store          OpenFaaS store commands
  template       OpenFaaS template store and pull commands
  up             Builds, pushes and deploys OpenFaaS function containers

OpenFaaS Cloud

 

faas-netes vs operator

faas-netes

"The faas-netes controller is the most tested, stable and supported version of the OpenFaaS integration with Kubernetes."

operator

 OpenFaaS Operator is based upon the codebase and features from faas-netes, but offers a tighter integration with Kubernetes through CustomResourceDefinitions. This means you can type in kubectl get functions for instance.


apiVersion: openfaas.com/v1alpha2
kind: Function
metadata:
  name: hello-python-zero
  namespace: openfaas-fn
spec:
  handler: python index.py
  image: gcr.io/openfaas-261807/hello-python-zero:1
  labels: {}
  name: hello-python-zero
  readOnlyRootFilesystem: false
  replicas: 1
  requests: null
  secrets: []
 

OpenFaaS autoscaling

  • Scaling by requests per second
  • Scaling by CPU and/or memory utilization
  • Scale to zero
  • Cold Start

Demo

Gotchas

version: 1.0
provider:
  name: openfaas
  gateway: http://34.65.59.132:8080
functions:
  hello-python:
    lang: python
    handler: ./hello-python
    image: gcr.io/openfaas-261807/hello-pythonr3:latest

  • faasnetes:
    
    # redacted
      readinessProbe:
        initialDelaySeconds: 0
        timeoutSeconds: 1
        periodSeconds: 1
      livenessProbe:
        initialDelaySeconds: 0
        timeoutSeconds: 1
        periodSeconds: 1
    # redacted
      imagePullPolicy: "IfNotPresent"    # Image pull policy for deployed functions

Private registry access