OpenFaaS - Serverless Functions Made Simple

Overview

OpenFaaS ® - Serverless Functions Made Simple

Build Status go.dev reference License: MIT OpenFaaS Derek App

OpenFaaS Logo

OpenFaaS® makes it easy for developers to deploy event-driven functions and microservices to Kubernetes without repetitive, boiler-plate coding. Package your code or an existing binary in an OCI-compatible image to get a highly scalable endpoint with auto-scaling and metrics.

Twitter URL

Highlights

  • Ease of use through UI portal and one-click install
  • Write services and functions in any language with Template Store or a Dockerfile
  • Build and ship your code in an OCI-compatible/Docker image
  • Portable: runs on existing hardware or public/private cloud by leveraging Kubernetes
  • CLI available with YAML format for templating and defining functions
  • Auto-scales as demand increases including to zero

Want to dig deeper into OpenFaaS?

Overview of OpenFaaS (Serverless Functions Made Simple)

Conceptual architecture

Conceptual architecture and stack, more detail available in the docs

Code samples

You can generate new functions using the faas-cli and built-in templates or use any binary for Windows or Linux in a container.

Official templates exist for many popular languages and are easily extensible with Dockerfiles.

  • Node.js (node12) example:

    "use strict"
    
    module.exports = async (event, context) => {
        return context
            .status(200)
            .headers({"Content-Type": "text/html"})
            .succeed(`
            <h1>
                👋 Hello World 🌍
            </h1>`);
    }

    handler.js

  • Python 3 example:

    import requests
    
    def handle(req):
        r =  requests.get(req, timeout = 1)
        return "{} => {:d}".format(req, r.status_code)

    handler.py

  • Golang example (golang-http)

    package function
    
    import (
        "log"
    
        "github.com/openfaas-incubator/go-function-sdk"
    )
    
    func Handle(req handler.Request) (handler.Response, error) {
        var err error
    
        return handler.Response{
            Body: []byte("Try us out today!"),
            Header: map[string][]string{
                "X-Served-By": []string{"openfaas.com"},
            },
        }, err
    }

Get started with OpenFaaS

Official eBook and video workshop

eBook logo

The founder of OpenFaaS wrote Serverless For Everyone Else to help developers understand the use-case for functions through practical hands-on exercises using JavaScript and Node.js. No programming experience is required to try the exercises.

The examples use the faasd project, which is an easy to use and lightweight way to start learning about OpenFaaS and functions.

Check out Serverless For Everyone Else on Gumroad

Official blog and documentation

Community Subscription

OpenFaaS users can subscribe to a weekly Community Newsletter called Insiders Updates, to keep up to date with new features, bug fixes, events, tutorials and security patches. Insiders Updates are written by the project founder and distributed via GitHub Sponsors.

Support & getting help

Online training

  • New: Training course from the LinuxFoundation: Introduction to Serverless on Kubernetes

    This training course "Introduction to Serverless on Kubernetes" written by the project founder and commissioned by the LinuxFoundation provides an overview of what you need to know to build functions and operate OpenFaaS on public cloud.

    Training course: Introduction to Serverless on Kubernetes

  • Self-paced workshop written by the community on GitHub

    You may also like to try the self-paced workshop on GitHub written by the OpenFaaS community

    Browse the workshop

  • Corporate trainings

    If you wish to arrange a training session for your team, or a consultation, feel free to contact OpenFaaS Ltd

Quickstart

Portal

Here is a screenshot of the API gateway portal - designed for ease of use with the inception function.

Deploy OpenFaaS to Kubernetes, OpenShift, or faasd deployment guides

Video presentations

Community events and blog posts

Have you written a blog about OpenFaaS? Do you have a speaking event? Send a Pull Request to the community page below.

If you'd like to join OpenFaaS community Slack channel to chat with contributors or get some help then check out this page on community.

Roadmap and contributing

OpenFaaS is written in Golang and is MIT licensed - contributions are welcomed whether that means providing feedback, testing existing and new feature or hacking on the source.

How do I become a contributor?

Please see the guide on community & contributing

Roadmap

The roadmap for OpenFaaS is represented in GitHub issues and a Trello board.

Roadmap: OpenFaaS Cloud

OpenFaaS Cloud is a platform built on top of the OpenFaaS framework which enables a multi-user experience driven by GitOps. It can be installed wherever you already have OpenFaaS and packages a dashboard along with CI/CD integration with GitHub so that you can push code to a private or public Git repo and get live HTTPS endpoints.

Dashboards

Example of a Grafana dashboards linked to OpenFaaS showing auto-scaling live in action: here

An alternative community dashboard is available here

Press / Branding / Website Sponsorship

  • Individual Sponsorships / End-users / Insiders Track 🍻

    The source code for OpenFaaS shared in public repositories on GitHub is free to use and open source under the terms of the MIT license.

    OpenFaaS Ltd offers commercial support and enterprise add-ons for end-users and training and consulting services for Cloud and Kubernetes.

    Users and contributors are encouraged to join their peers in supporting the project through GitHub Sponsors.

  • OpenFaaS PRO

    Commercial users can upgrade to OpenFaaS PRO for scale to zero, triggering functions from Kafka and for Single-Sign On with an IDp.

  • Website Sponsorship 🌎

    Companies and brands are welcome to sponsor openfaas.com, the Gold and Platinum tiers come with a homepage logo, see costs and tiers. Website sponsorships are payable by invoice.

  • Press / Branding 📸

    For information on branding, the press-kit, registered entities and sponsorship head over to the openfaas/media repo. You can also order custom SWAG or take part in the weekly Twitter contest #FaaSFriday

    Looking for statistics? This project does not use a mono-repo, but is split across several components. Use Ken Fukuyama's dashboard to gather accurate counts on contributors, stars and forks across the GitHub organisation.

    Note: any statistics you gather about the openfaas/faas repository will be invalid, the faas repo is not representative of the project's activity.

Governance

OpenFaaS ® is an independent open-source project created by Alex Ellis, which is being built and shaped by a growing community of contributors.

OpenFaaS is hosted by OpenFaaS Ltd (registration: 11076587), a company which also offers commercial services, homepage sponsorships, and support. OpenFaaS ® is a registered trademark in England and Wales.

Users

View a selection of end-user companies who have given permission to have their logo listed at openfaas.com.

If you're using OpenFaaS please let us know on this thread. In addition, you are welcome to request to have your logo listed on the homepage. Thank you for your support.

Issues
  • End-user community / ADOPTERS.md

    End-user community / ADOPTERS.md

    If your company has adopted OpenFaaS then you can add your use-case to the ADOPTERS.md file and/or request your logo to be listed. All logos listed must have an entry in the ADOPTERS.md file.

    You will need to request authorisation from your manager and employer.

    Process

    1. Send a PR to https://github.com/openfaas/faas/blob/master/ADOPTERS.md with a brief description of how you're using OpenFaaS, this should include your use-case
    2. Individual sponsorships can be arranged via GitHub Sponsors - if you're implementing or managing OpenFaaS, then you should subscribe to get the newsletters on updates, security patches and features - https://insiders.openfaas.io/
    3. Corporations that use OpenFaaS in production should contribute towards its upkeep, whilst the software may be used under the terms of the MIT License, it requires full-time engineering. Pick a tier - bronze/gold/platinum - https://github.com/openfaas/faas/blob/master/BACKERS.md
    4. By sponsoring your logo is associated with one of the fastest growing Open Source developer communities, you also reduce the risk of the project going away due to lack of funds
    5. Email [email protected] with written permission for the logo to be listed and comment on this thread if you like.

    Asset for logo: we will need a URL to a svg or transparent png logo, a text title and a company URL.

    Logos are shown at https://www.openfaas.com/

    area/docs priority/high 
    opened by alexellis 72
  • Proposal: Adding mount options to functions.

    Proposal: Adding mount options to functions.

    • Brief summary including motivation/context

    The proposed change would allow functions to mount volumes and other directories through the normal docker configuration. This would allow a function to process relatively large amounts of data without having to pass it through http/stdin.

    Any design changes

    Add docker mount struct to the CreateFunctionRequest struct and passing it along in the create function handler

    Pros + Cons

    Pros:

    • Functions will be able to have volumes.

    Cons:

    • Volumes should be available on all nodes running functions (but that is rather expected)

    Effort required Little, it's a two line change.

    blocked design/review proposal question 
    opened by alshabib 47
  • Proposal: manage secrets via OpenFaaS API

    Proposal: manage secrets via OpenFaaS API

    Feature

    This feature would allow secrets to be created in the backing provider's credential store using a single CLI command regardless of what the backing orchestrator is.

    faas-cli secret create --name secret-name --value secret-value
    

    It could also be used with reading from a file with --from-file for instance.

    Why is this needed?

    Each tutorial for OpenFaaS has to list Docker Swarm and Kubernetes secret creation commands. This is becoming hard to manage and duplicates effort. It'd be better if we could abstract this away.

    A secrets API would also be useful for automating OpenFaaS.

    DELETE / POST / GET / PUT -> /system/secrets

    I would suggest that fetching a secret value would be not allowed, but getting a list of secrets, deleting or updating should be.

    Edit: GET is the same as a list operation, it is not meant to get the plain-text value of a secret, that is not what this feature is about (this was misinterpreted in the comments)

    Possible Solution

    Add support in OpenFaaS:

    • Create REST API extensions
    • Update Swarm, K8s providers
    • Update CLI

    Steps to Reproduce (for bugs)

    Example: https://docs.openfaas.com/reference/secrets/#use-the-secret-in-your-function

    area/api area/cli area/docs area/kubernetes area/swarm area/ux design/approved enhancement help wanted priority/high proposal 
    opened by alexellis 42
  • OpenFaaS global meet-up - November

    OpenFaaS global meet-up - November

    OpenFaaS Global Online meetup - October

    Limited spaces - comment below to register interest

    This would be an online meet-up via Google Hangouts.

    • There'll be a quick intro and demo
    • We'll show off a couple of projects from the community and contributors
    • And talk about what's coming next as well as open up to questions.

    Any suggestions for topics? Do you have a demo or function you'd like to show?

    Update: Email [email protected] for your slack invite

    opened by alexellis 41
  • Add additional fields to the UI

    Add additional fields to the UI

    Signed-off-by: Burton Rheutan [email protected]

    Description

    Adding additional inputs for Environment variables, Secrets, Labels, and annotations so that more advanced functions can be deployed through the UI.

    This also allows more advanced functions to be provided via the store. Allowing modification to secret values, and environment variables which will allow functions like a Slack Bot function to be deployed through the store adn configured with an environment variable

    Example with the field areas collapsed (default view):

    Screenshot from 2019-05-11 16-09-38

    Example with the field areas expanded (by clicking on the section title ie: "Environment Variables"):

    Screenshot from 2019-05-11 23-21-58

    Finally, with all of the fields filled in, showing that multiple values can be added for each group:

    Screenshot from 2019-05-11 23-01-24

    Now, selecting a function from the store, and switching over to the "Manual" tab will show the additional values that are available (and editable) to the store function as well

    Screenshot from 2019-05-11 23-10-04

    From the example with all the fields filled out, here is the output of docker inspect: You can see labels, annotations, and Env all available to the created container

    [
        {
            "ID": "t0mzpevnirqzip2cs1a7v6mdu",
            "Version": {
                "Index": 291
            },
            "CreatedAt": "2019-05-12T03:59:11.0437557Z",
            "UpdatedAt": "2019-05-12T03:59:11.051045016Z",
            "Spec": {
                "Name": "nodeinfo",
                "Labels": {
                    "Label1": "LabelValue1",
                    "Label2": "LabelValue2",
                    "com.openfaas.annotations.Annotate1": "AnnotateValue1",
                    "com.openfaas.annotations.Annotate2": "AnnotateValue2",
                    "com.openfaas.function": "nodeinfo",
                    "function": "true"
                },
                "TaskTemplate": {
                    "ContainerSpec": {
                        "Image": "functions/nodeinfo:latest",
                        "Labels": {
                            "Label1": "LabelValue1",
                            "Label2": "LabelValue2",
                            "com.openfaas.annotations.Annotate1": "AnnotateValue1",
                            "com.openfaas.annotations.Annotate2": "AnnotateValue2",
                            "com.openfaas.function": "nodeinfo",
                            "function": "true"
                        },
                        "Env": [
                            "fprocess=node main.js",
                            "ENV_VAR_2=Variable2",
                            "ENV_VAR_1=Variable1"
                        ],
                        "StopGracePeriod": 10000000000,
                        "DNSConfig": {},
                        "Isolation": "default"
                    },
                    "Resources": {},
                    "RestartPolicy": {
                        "Condition": "any",
                        "Delay": 5000000000,
                        "MaxAttempts": 5
                    },
                    "Placement": {
                        "Constraints": [
                            "node.platform.os == linux"
                        ]
                    },
                    "Networks": [
                        {
                            "Target": "kunkx0p11jsyyy7n2luxnkcem"
                        }
                    ],
                    "ForceUpdate": 0,
                    "Runtime": "container"
                },
                "Mode": {
                    "Replicated": {
                        "Replicas": 1
                    }
                },
                "UpdateConfig": {
                    "Parallelism": 1,
                    "FailureAction": "pause",
                    "Monitor": 5000000000,
                    "MaxFailureRatio": 0,
                    "Order": "stop-first"
                },
                "RollbackConfig": {
                    "Parallelism": 1,
                    "FailureAction": "pause",
                    "Monitor": 5000000000,
                    "MaxFailureRatio": 0,
                    "Order": "stop-first"
                }
            },
            "Endpoint": {
                "Spec": {},
                "VirtualIPs": [
                    {
                        "NetworkID": "kunkx0p11jsyyy7n2luxnkcem",
                        "Addr": "10.0.1.18/24"
                    }
                ]
            }
        }
    ]
    
    

    Motivation and Context

    • [ ] I have raised an issue to propose this change (required)
    • [X] My issue has received approval from the maintainers or lead with the design/approved label

    Discussed in Slack as a "quick-win" with Alex.

    How Has This Been Tested?

    Running the OpenFaaS stack locally, with the locally built openfaas/gateway:latest-dev image.

    Deployed several functions to a local Swarm stack with various additional inputs entered. Once deployed, ran docker service <function name> inspect to confirm the fields were added properly.

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [X] My code follows the code style of this project.
    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [X] I've read the CONTRIBUTION guide
    • [X] I have signed-off my commits with git commit -s
    • [ ] I have added tests to cover my changes.
    • [X] All new and existing tests passed.
    opened by burtonr 39
  • Document: Flask usage

    Document: Flask usage

    Expected Behaviour

    With Lambda a modified Flask library can be used called Zappa to handle single requests.

    CC @jockdarock

    Current Behaviour

    This appears to be incompatible, but..

    Possible Solution

    A CGI handler works in its place and lets you retain template functionality and views etc.

    help wanted skill/beginner 
    opened by alexellis 39
  • UI: Show info icon for gateway & provider version/data

    UI: Show info icon for gateway & provider version/data

    Expected Behaviour

    Using a Glyphicon we can now surface the information provided by /system/info which gives relevant versions and the back-end type. See faas-cli version as an example of the data or call the endpoint on your own gateway.

    Current Behaviour

    Version available via API or faas-cli version

    Context

    This data is now fully available in the API and stable. The original intention was for it to be surfaced in some way. A model dialog may be suitable.

    Your Environment

    • Are you using Docker Swarm or Kubernetes (FaaS-netes)?

    This would work across all versions transparently cc @ewilde

    area/ux enhancement hacktoberfest help wanted skill/beginner 
    opened by alexellis 32
  • Add feature: scale from zero to 1 replicas

    Add feature: scale from zero to 1 replicas

    Description

    This change allows functions to be "idled" or scaled to zero replicas and then be invoked later on. There is a penalty to scaling up - the API gateway proxy will block until the function is ready.

    A cache is included to off-set the calls to upstream API to check on readiness along with unit tests.

    Signed-off-by: Alex Ellis (VMware) [email protected]

    Motivation and Context

    • [x] I have raised an issue to propose this change (required)

    Addresses part of #238

    How Has This Been Tested?

    Testing via scaling to zero replicas and then invoking function. On Swarm I observed 3 seconds on an Intel Nuc i5 for scaling back from zero replicas.

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [x] I've read the CONTRIBUTION guide
    • [x] I have signed-off my commits with git commit -s
    • [x] I have added tests to cover my changes.
    • [x] All new and existing tests passed.
    design/approved 
    opened by alexellis 30
  • Suggestion: surface logs in REST API

    Suggestion: surface logs in REST API

    Suggestion from @burtonr

    Can we, and should we surface function logs via the REST API?

    If we do then these could be queried from the OpenFaaS UI/CLI also.

    faas-cli store deploy figlet
    faas-cli logs figlet
    

    Is tailing logs in or out for the first version?

    area/ux design/review help wanted size/xl skill/advanced 
    opened by alexellis 30
  • [Testing] Use encrypted secrets

    [Testing] Use encrypted secrets

    Description

    • During function creation, accept an array of strings defining swarm secrets that are required for the service
    • Update docs
    • Add new guide on using the secrets capability
    • Add new sample function to highlight using environment variables
    • Update ApiKeyProtected sample function to utilize the new secrets capabilities

    Motivation and Context

    This allows secrets to remain encrypted at rest instead of being unencrypted in environment variables and yaml files.

    Fixes #285

    • [x] I have raised an issue to propose this change (required)

    How Has This Been Tested?

    • I have validated that this does not break any of the integration tests
    • Additionally I have tested it by updating the ApiKeyProtected function to use the secrets functionality

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] My change requires a change to the documentation.
    • [x] I have updated the documentation accordingly.
    • [x] I've read the CONTRIBUTION guide
    • [x] I have signed-off my commits with git commit -s
    • [ ] I have added tests to cover my changes.
    • [x] All new and existing tests passed.
    design/review 
    opened by LucasRoesler 27
  • Make GH Actions consistent and easier to test for contributors

    Make GH Actions consistent and easier to test for contributors

    My actions before raising this issue

    Expected Behaviour

    Some GitHub actions are not following the pattern that was defined like https://github.com/openfaas/faas/tree/master/.github/workflows

    Especially in the publish workflow that has the hard-coded registry. which makes it a bit harder for community contributors to test the container build/push because they will not have access to the Openfaas registry. So the idea is to make the publish workflow similar to others in the org

    I've review all the repositories in the org and the following repositories we need to change:

    @cpanato will take:

    • [ ] https://github.com/openfaas/ingress-operator - https://github.com/openfaas/ingress-operator/pull/44
    • [ ] https://github.com/openfaas/faas-netes - https://github.com/openfaas/faas-netes/pull/785
    • [ ] https://github.com/openfaas/faas-cli - need to make it similar to the others - https://github.com/openfaas/faas-cli/pull/881

    @developer-guy can take:

    • [ ] https://github.com/openfaas/nats-connector - https://github.com/openfaas/nats-connector/pull/23
    • [ ] https://github.com/openfaas/cron-connector - https://github.com/openfaas/cron-connector/pull/16
    • [ ] https://github.com/openfaas/mqtt-connector - https://github.com/openfaas/mqtt-connector/pull/6

    @developer-guy show interest to help as well and we will split the work

    opened by cpanato 1
  • Enable Namespace dropdown by default

    Enable Namespace dropdown by default

    Expected Behaviour

    The gateway should always show the namespace dropdown even when only one exists.

    We also should add a link (possibly on a ? icon) to point to the multiple namespaces docs.

    Current Behaviour

    NS dropdown only shows on > 1 namespace

    opened by Waterdrips 2
  • How I use OpenFaaS as an end-user

    How I use OpenFaaS as an end-user

    Finally contributing to #1591. My apologies for the delay! I decided to put together diagrams showing how I use OpenFaaS.

    Let me know if this is something you'd be interested in, have questions, or would like any changes?

    Description

    Architecture diagrams for:

    1. Integrating Auth0 with OpenFaaS to enrich claims in JWT tokens via a HMAC event based rule at login
    2. My Angular SPA using OpenFaaS to do a variety of things
    3. My Kubernetes backend for OpenFaaS, ingress managed using Kong plugins
    4. A flow diagram for my OpenFaaS functions
    5. A diagram highlighting various administrative processes and related components

    Motivation and Context

    To show how I use OpenFaaS as an end-user

    • [x] I have raised an issue to propose this change ([required] (https://github.com/openfaas/faas/blob/master/CONTRIBUTING.md))
    • [x] My issue has received approval from the maintainers or lead with the design/approved label

    How Has This Been Tested?

    N/A

    Types of changes

    • [x] Documentation

    Checklist:

    • [ ] My code follows the code style of this project.
    • [ ] My change requires a change to the documentation.
    • [x] I have updated the documentation accordingly.
    • [x] I've read the CONTRIBUTION guide
    • [x] I have signed-off my commits with git commit -s
    opened by kylos101 0
  • Bump Go version to 1.15

    Bump Go version to 1.15

    Signed-off-by: Alex Ellis (OpenFaaS Ltd) [email protected]

    Description

    Bump Go version to 1.15

    Motivation and Context

    Keeping up to date with upstream

    How Has This Been Tested?

    CI will provide testing

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)
    opened by alexellis 0
  • Get the most out of OpenFaaS as an end-user

    Get the most out of OpenFaaS as an end-user

    Tell the world how you are using OpenFaaS

    If you're using OpenFaaS, we want to hear from you. It helps us understand what kind of changes may affect your business and what to prioritise in our backlog.

    From time to time, we may also deprecate or remove features, again, if we don't have a relationship with you, it may affect your business.

    It makes sense to participate in our community and to keep communicating.

    ADOPTERS.md

    When you list your use-case and company name in our ADOPTERS file, you'll letting the world know what can be done and showing the way. If you would rather have us make this pull request, email [email protected]

    To say thank you, we'll send you some SWAG once your pull request is merged.

    Want to talk to an OpenFaaS & Kubernetes expert?

    Thinking of doing a PoC? Wondering what can be done? Need a little direction or help?

    End-user community

    Information without context is meaningless. So it is worth your time to build connections with the community, and by joining the end-user community, we'll help you get your voice heard. By telling us about how you use OpenFaaS, we can think about your needs and switch into the right context when you bring requests and ask for help in the community.

    There is no charge for this, however you may want to consider joining our Community Insiders program to keep up to date with changes, and to upgrade to our Premium Subscription (below)

    Premium Subscription & OpenFaaS PRO

    When you put OpenFaaS into your production application, or an internal system, how do you know that you're doing things right? What if we are planning on making changes that would affect you? How do you get your voice heard in the roadmap?

    • What about when things go wrong in your cluster? How are you going to get help? Are you a Golang expert and a Kubernetes expert?

    • Do you need SSO to log in securely, without sharing credentials? Are you regulated?

    • Do you want to scale idle functions to zero, to save money and increase efficiency?

    • Does your company use Kafka to publish events and share data?

    • Find out about Support & OpenFaaS PRO in our Premium Subscription here

    GitHub Sponsors

    Our GitHub Sponsors page gives companies large and small a way to contribute back, and to support the ongoing development and maintenance of OpenFaaS.

    Your logo on OpenFaaS.com

    If you would like to connect your brand to one of the fastest growing developer communities, we can help you there.

    Whether you're an OpenFaaS user, or trying to make your name known amongst developers, check out our range of homepage sponsorships here.

    Are you an individual user?

    Some of you are not using OpenFaaS commercially, or don't feel you have the connections within your company to get your voice heard.

    Stay in touch and get all the latest news directly from the OpenFaaS founder with a Community Insiders Subscription

    Community connections

    opened by alexellis 4
  • [Proposal] Alternate high API call PromQL query

    [Proposal] Alternate high API call PromQL query

    My actions before raising this issue

    Sorry, not sure where exactly to post a proposal, but I have an alternate function I wrote for function scaling alerts used during auto-scaling. It's not perfect, but I'd like to at least toss out the idea, and get some feedback. Currently noodling on it locally.

    For this function, if the amount of time it would take to work through the current workload is greater than 10 seconds, scale up.

    (
      sum by (function_name) (
        gateway_function_invocation_started
      )
      -
      sum by (function_name) (
        gateway_function_invocation_total
      )
    )
    /
    sum by (function_name) (
      1 + rate(gateway_function_invocation_total[10s])
    )
    > 10
    

    It would actually be more preferable to use something like gateway_function_invocation_incomplete (queued or currently running), rather than started, because as it stands, started caps off at queue workers * max_inflight. It would be more preferable to have a metric that includes those that are queued.

    The current, for reference, is this:

    For this function, if the amount of successes over the last 10 seconds is greater than 5 per second, scale up."

    sum(
      rate(gateway_function_invocation_total{code="200"}[10s])
    ) BY (function_name)
    > 5
    

    I haven't joined the slack channel, but if that's the place for this, I'm down.

    opened by kevin-lindsay-1 0
  • Support request - tuning for long timeouts

    Support request - tuning for long timeouts

    My actions before raising this issue

    Now the shutdownTimeout variable in watchdog is the same as the write_timeout environment variable. This is unfortunate since if you set a high write_timeout value the watchdog will wait for twice that time when shutting down. This will happen even if there are no fprocesses running.

    Expected Behaviour

    The the watchdog shuts down as quickly as possible when there are no running fprocesses.

    Possible Solution

    Since the http.Server.Shudown gracefully shuts down the server without interrupting any active connections there might not be any need to have <-time.Tick(shutdownTimeout) in the listenUntilShutdown function (tested this locally with kind and didn’t experience any problems).

    However, a fully backward compatible change would be to add a shutdown_timeout environment variable that would set shutdownTimeout if specified and default that back to write_timeout if not specified.

    Context

    We want to be able to configure a high timeout limit for the fprocess and that the watchdog shuts down as quickly as possible when there are no running fprocesses to use resources more efficiently.

    opened by greenbech 6
  • UI should show that deployment is in progress from store

    UI should show that deployment is in progress from store

    Description

    This relates specifically to the faasd and faas-lambda providers which block and download content when a function or image is deployed.

    The UI stays open and remains unresponsive for > 7 seconds (HCI shows that at this point, users assume it's broken). It isn't actually broken, the image is being downloaded synchronously unlike Swarm/K8s where we do it in the background.

    The UI should show that deployment is in progress - either with a cursor animation or some other status / info on the screen like going gray and saying "Deployment in progress".

    It's quick to reproduce using any large image and the faasd provider - https://github.com/openfaas/faasd

    Screenshot 2020-02-22 at 18 47 49 area/ui help wanted 
    opened by alexellis 8
  • NATS streaming cluster id missing override environment variable

    NATS streaming cluster id missing override environment variable

    Description

    There is no way to change the name of the nats cluster id used for asynchronous invocation. Currently it expects the cluster id to be faas-cluster.

    Note that the queue-worker does allow the cluster id to be overridden https://github.com/openfaas/nats-queue-worker/blob/dea1c90b8cc66dc73597b7531a4fd29a32b5f88c/readconfig.go#L42

    Proposal

    Add environment override to gateway default it to faas-cluster

    proposal 
    opened by ewilde 0
Releases(0.20.12)
  • 0.20.12(Mar 15, 2021)

  • 0.20.11(Feb 27, 2021)

    Changelog for 0.20.11:

    • PR #1633 Add explicit test for the logging notifier middleware by @LucasRoesler

    Commits f8576d5b5d192b60e2af85e0f1d4b50e2bcf3169 Return error from upstream when calling list functions by @alexellis 089cd332b88b1632c8751389ddb7879f06c7d130 Add explicit test for the logging notifier middleware by @LucasRoesler

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.10(Feb 26, 2021)

  • 0.20.9(Feb 26, 2021)

    Changelog for 0.20.9:

    Commits 4bdb580ae7231b5168453571e62b45645b392e26 Update provider to v0.17.0 by @alexellis 7763fa5d6fc0da23e26857ef5618694ea9836b7d Update ISSUE_TEMPLATE.md by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.8(Feb 10, 2021)

    Changelog for 0.20.8:

    • PR #1627 Restore the X-Call-Id for synchronous calls by @alexellis
    • PR #1623 List Blog posts in community.md updated till January 2021 by @nitishkumar71

    Commits d5b98a70783019f171553a99e604250ed72aa89a Restore the X-Call-Id for synchronous calls by @alexellis 17584aaf9c38761547221f79b8477cada2360bd6 Add link to image by @alexellis 15bc6bb9c5283afc8938805fabe1628b00026127 Update README.md by @alexellis 9a58143c01b050b5287afafb27f49f825e353c84 Update README.md by @alexellis be78064234de6ae265943a426d6aa8ea0ccdb2e2 Update .DEREK.yml by @alexellis b50e51ffc5fe2230df48561dec80c6e284caf5a2 Update .DEREK.yml by @alexellis 0962f9145f68394d35c48e29d0c9fc51cb72eb7a Update .DEREK.yml by @alexellis de4c1d7713809ba26a6d3542abc3ce7aea97d4bf Update .DEREK.yml by @alexellis 5c2bc2e0c7c95d06e6b202fd2924d05365f6269c Update .DEREK.yml by @alexellis 5fdeb664fb41df3f2165cdb07cbd1bde58201dc7 Blog posts updated till January 2021 by @nitishkumar71 e017ead0c5c35d9f1bc000777ad3df5c817130a4 First impressions - introducing yourself and your use-case by @alexellis 6fe10767ec06860527979d907ebe1a9b6c339eb8 Update CONTRIBUTING.md by @alexellis 6b014c43e2744535bb48a2fb0e08d7d86a76e3dc Update .DEREK.yml by @alexellis 5f6ddbc311701a35b8e92dc441beeee9030e548d Add enduser message for Derek by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.7(Jan 31, 2021)

    Changelog for 0.20.7:

    • PR #1616 Update version info endpoint by @viveksyngh

    Commits 77be2f34037cf80632a18420b903de18cb2a1171 Update to latest Alpine base image by @alexellis f98213a4283d95fa00d3bc7901032dc1220322bd Remove git commit message from binary by @alexellis 82cd46ef2ae3627cf82e609bd39945c50e44328e Update version info endpoint by @viveksyngh

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.6(Jan 30, 2021)

    Changelog for 0.20.6:

    • PR #1620 Add HM Planning Inspectorate to Adopters by @MrSimonEmms
    • PR #1617 Migrate to Go modules by @alexellis
    • PR #1614 Adding blog article by @spekulatius
    • PR #1608 Remove Swarm resources from faas repo by @alexellis
    • PR #1607 Fix parsing github commit status to container by @Waterdrips

    Commits 11d28b14cc6d215e67458ae7b14517c1f104c7c0 Add HM Planning Inspectorate to Adopters by @MrSimonEmms 66ccea614c7bb394923af4af5cfe9231e16a6c15 Update README order, add book by @alexellis 949e218758af4a064a3a5d52aad8fa58b7df2da0 Update GitHub Actions to Go 1.15 runtime by @alexellis 7ce266adc08450eb87ae56ef42aa579120a30e49 Migrate to Go modules by @alexellis 2e2250afe843e94fcc34e85c5c5173c8602ca56c Use a placeholder commit message for development by @alexellis 87d563664afc005d24b21f4bf79f00a0125312bc Update title by @spekulatius 98bf5e8f7ecfe02f7fe122abf2f59588481a5202 Adding blog article by @spekulatius 680d536dc32485baccbb6750862459f3b518de5e Update README by @alexellis 83d3a1ef87fa2a4cb1c3aa92d88756c6a16acda4 Publish multi-arch alpine base by @alexellis 27f5c3438918aade699be0618b3a136b433c021c Remove CI tests for Swarm by @alexellis e341cbeb76ddcf2dcdc126280a57d49bbca933b3 Revise use of term "docker" by @alexellis 3f98c856e5bdad8ce6560261f9b06909b5c298a5 Remove Swarm references by @alexellis 8a5b3123e0f3a4309f86920617eaf07f91a787d8 Remove Swarm resources from faas repo by @alexellis a2bdc94f00237049285986321dfc7a0547bb3d8b Fix parsing github commit status to container by @Waterdrips

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.5(Dec 10, 2020)

    Changelog for 0.20.5:

    • PR #1605 Use correct tag on publishing basic-auth container by @Waterdrips

    Commits 272ae94b506ca9d72c143e8556ef348afa0c1ecc Use correct tag on publishing basic-auth container by @Waterdrips

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.4(Dec 10, 2020)

    Changelog for 0.20.4:

    • PR #1598 Convert to Github Actions by @Waterdrips

    Commits f1ad13bfa65556d8d7961707bfb4de7e3401bb37 Correct typo in GitHub Action by @alexellis ca3d53c0a5aa49350eb22ff48a990984271b8f0b Add publish step to github actions by @Waterdrips e3b18e632476dd49d73fd420c3c598e39be04efb Convert Basic-Auth to multi-arch by @Waterdrips a5583074e0799b43ecebaa3073f7c7d1b6863405 Convert Gateway to Github Actions by @Waterdrips

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.3(Dec 10, 2020)

    Changelog for 0.20.3:

    • PR #1603 Update scaling polling interval by @alexellis

    Commits 4ced7cacd0bb546a97d451ef884f3ee6cbfaa4e3 Update scaling polling interval by @alexellis 3170d97bb5d0c3dc633771e3e6bdc0c3ad8f83b2 Update verbiage to remove core channel by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.2(Dec 5, 2020)

    Changelog for 0.20.2:

    • PR #1601 Fix a bug that caused the services list to keep growing by @alexellis
    • PR #1595 Delete the classic watchdog by @alexellis

    Commits 9bbb25e3c7c4cc5cd355edb3a122f8c7812e32db Fix a bug that caused the services list to keep growing by @alexellis 7de17fdf9d78086597d0304c1b4ccf44e6d7915e Remove BACKERS.md by @alexellis 9fccc1c84d6aac67c5e4657cfdcd0a5cdff3babf Update semi-automatic arm builds by @alexellis 579b9124e4ac21456a8d0a6211b7d4018803415f Delete the classic watchdog by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.20.1(Nov 17, 2020)

    Changelog for 0.20.1:

    • PR #1590 Fix Invocation count wrong for multiple namespace by @Waterdrips
    • PR #1594 Add First Baptist Church Carrollton to ADOPTERS.md by @genebean
    • PR #1589 Update link to deployment page by @kobayashi

    Commits 7b6cc60bd9865852cd11c98d4420752815052918 Fix Invocation count wrong for multiple namespace by @Waterdrips 413f86ebc1ea746db449f6711d8ff2c2d227bcc1 Add First Baptist Church Carrollton to ADOPTERS.md by @genebean bb9ba0387ca515a9a6bfaddbc0cbd9d5d4adf04a Update link to deployment page by @kobayashi

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(8.19 MB)
    fwatchdog-arm64(7.81 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(7.12 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(8.13 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.20.0(Nov 2, 2020)

    Changelog for 0.20.0:

    • PR #1488 Add namespace in function name for metrics by @viveksyngh
    • PR #1584 Add OSS presentation by Burton to community file by @burtonr
    • PR #1580 Update typo under definitions by @yankeexe

    Commits c9c2b39601f3ebcc6b320e4df7b5502c710bb225 Use namespace while filtering metric result by @viveksyngh c0ba41ce331de250a0d3b16b48d604d39e8e05ba Use default namespace in metrics exporter by @viveksyngh f7b02b47f8021b4c361b371d365c726e6e072706 Add namespace in function name for metrics by @viveksyngh be8090468e8e82c829d586c7223c08fb6cf99d2d Update CONTRIBUTING.md by @alexellis 8f76b7785712d804b50e3c1ff8b3a7f2aabcdec6 Closes #1568 by @alexellis 5516bc465d0c39be1880d68ad03b683222b2c6cb Remove go report which was failing by @alexellis f5deb8c0b6de61a7f8111e6f0f49e2979a175a5d Add OSS presentation by Burton to community file by @burtonr 888801f268c7f6679c853ae2cb1dfa3e49b2eb96 Update .DEREK.yml by @alexellis 15b90db952d36398d33efc53eb306f6f15072e46 Update typo under definitions by @yankeexe 500c5c9c1a712f00e571cad78366689ab5106860 Remove faas-cli from on-device builds by @alexellis acfaad56d522eaa1823be00b3545df85c13c9991 Update FUNDING.yml by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.19.1(Oct 14, 2020)

  • 0.19.0(Oct 14, 2020)

    Changelog for 0.19.0:

    • PR #1577 Upgrade Angular to 1.8.0 in the gateway UI by @alexellis
    • PR #1573 Update interviews, podcasts and featured talks by @alexellis
    • PR #1560 Update community.md with new blogs by @viveksyngh

    Commits 66c89c7b8a976c33bab93721addac777e2c868a6 Upgrade Angular to 1.8.0 by @alexellis d05d0a76a5b7274df40426f5f22282a6d9245257 Update interviews, podcasts and featured talks by @alexellis f8a530584e39d171be1bf40e8c5e83207c3d2836 Update .DEREK.yml by @alexellis 8017092bc4933acaca329441640880ff4bf51e3e Enable hacktober features by @alexellis 802461dd025a8cec4784a2e40c7f4d0db501a2c3 Bump up faas-swarm and gateway version by @alexellis da9996c3dcd88c4d129d8bf29a3b188f02ef834d Convert videos to bullet list. by @alexellis 1416ea693f21c9713179246afeccc110fbd51dcd Update caption for homepage by @alexellis 782bfcb741d3ff7647a3df506068fe78b6cc428f Remove technical overview section which is also in docs by @alexellis 5f80a1b3eed88a433ef547366da18caa4c586bf1 Add subscription by @alexellis a0f2c4d9485d94f387c16ee81abbfe4be6cf846a Add LF training by @alexellis 6b365a93ebf82904a8d0c7104752e893e517989d Update ADOPTERS.md by @alexellis 2d406544a5be9afdce6d94471345c0e6fa8290eb Update community.md by @alexellis fc63360c1e867ead123af2b378a40320e4a8194d Add Ingrooves as ADOPTER by @alexellis 76f91d176f5a420f7abfa9aee9915f4b94155747 Add events from SPS by @alexellis b54fda85b9a50334cbd6b8020f10d43793294943 Update headings in backers file by @alexellis 0b9be36e26ad5ad17c7ab50d205dd695dfd0e48b Update blurb on insiders by @alexellis ca4d702959666f49994a96766d7dfd83178c0a16 Update community.md with new blogs by @viveksyngh b4e2eaa10536a40b7b4b57f0cc27ed6bf2cb0008 Add a new podcast to the community page by @alexellis aa00b5ad4be2e83711984b0926259cc6d7cf1a7d Update list of curators by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(8.19 MB)
    fwatchdog-arm64(7.81 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(7.12 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(8.13 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.18.18(Jul 20, 2020)

    Changelog for 0.18.18:

    • PR #1555 Remove service namespace from scale request by @alexellis
    • PR #1553 Fix broken link to point at workshop by @Waterdrips
    • PR #1552 Add NDC Oslo 2020 lightning talk to community.md by @andmos
    • PR #1551 Update ADOPTERS.md by @mjallday
    • PR #1549 Added Cognite to ADOPTERS.md by @andeplane
    • PR #1548 Add cisco blog to community.md by @viveksyngh
    • PR #1547 Added DB2 Limited to ADOPTERS.md by @4doge
    • PR #1543 Updating blog post about Micronaut and OpenFaas by @PaulienVa
    • PR #1540 Update images including multi-arch by @alexellis
    • PR #1535 Add two blog posts by Hans van den Akker by @martindekov
    • PR #1534 Add PiperCI by @codrcodz
    • PR #1531 updated community.md with new article by @developer-guy
    • PR #1529 Add a blog from heyal.co.uk by @Waterdrips
    • PR #1528 Add node12 and restify template blog to community.md by @viveksyngh
    • PR #1524 Add Docker and DevOps talk podcast to community by @viveksyngh
    • PR #1519 Adding my blog article about creating a COBOL template by @devries
    • PR #1518 Add self-hosting serverless with OpenFaaS to community.md by @viveksyngh
    • PR #1514 Add OF with Gloo API blog by @martindekov

    Commits 11ff356ccea32b89b9da556c18305cd7c5ea9ba5 Remove service namespace from scale request by @alexellis 3e46a62ce2e18c1f51ad7c99fec4dd772e5c0f27 Fix broken link to point at workshop by @Waterdrips 8b03f6740f27776b56bba017efb8e2a7b315f64b Add NDC Oslo 2020 talk to community.md by @andmos f314eeddff65cbdbd336d28266aaa5a0e21e0d85 Update ADOPTERS.md by @mjallday 9372cb5b774dec6bff1f60d816eb9234c6b47d3d Added Cognite to Adopters by @andeplane 1671c1a7a33ce7a17c5728e7abedd6626bb6cd12 Add cisco blog to community.md by @viveksyngh 6602b4c11a0477ad0b612ed2022bd623f41a6299 add db2.io 👀 by @4doge 1055f039a84ad71a24bafbdb4f48323c44e3b8c2 Add SURFsara IoT Platform for Sensemakers by @alexellis b489ab0e7da3916393c3445a9b56e81b4b2589cd Add SURF as an adopter by @alexellis c933a019de827fa40f2cb1b4edc41a0383ac9aca Fix Spruce URL for ADOPTERS.md by @alexellis 7c7e40db9133e0e58859c91c63f8943058ee4f4e Add Spruce end-user and faasd use-case by @alexellis 1c760669d0029f83d4f73913c6c123d484a236cc Updating blog post about Micronaut and OpenFaas by @PaulienVa e339c36c201dca2fcfb4129388d79c4f692d93f7 Add Rapid Circle by @alexellis e109b9c72c89802778ca117845ddb6d0fadb0e4d Add PathfinderZA adopter by @alexellis 965506ee91ffca9e485dfa8e3988b20946931f3e Update backing companies by @alexellis d0ebb19fd9727c9ae717a62d2974ff14cb2fdffc Update images for all architectures for Swarm by @alexellis 64e340e4bde694a29f7dd7f022b6000b9c2aafbb Add two blog posts by Hans van den Akker by Martin Dekov 6841fba36bca919acc7796ca1d652742e45a1ad4 Add PiperCI by @codrcodz 3e4762e025c570fe66d549af243800c79cd3630e updated community.md with new article by @developer-guy 3999b8b3581134c563776eb6a8b99efadf0f9df9 Add a blog from heyal.co.uk by @Waterdrips d46de9d66c9f2e5eeb76430a334374ee590e8c69 Add node12 and restify template blog to community.md by @viveksyngh 61b861aa6d33ec43badb96fa23db588526aad56d Remove link to Patreon by @alexellis 0c28e9c64d628a9889cfbb58c274c74818abf459 Add 2x talks to community file by @vacax 70f65cb258cb68d8d360ae3ff79d6b374c55ffa2 Add katacoda lab by "javajon" by @developer-guy 297d98288f19361d4e9f7658a5f6ca9d56965814 Add Docker and DevOps talk podcast to community by @viveksyngh 997c6704b55b082779cb53642a665e19dad3b528 Remove unused value by @alexellis 5741610f3187cebc318a5c0acb150239795ba0d4 Return cached query when hit by @alexellis c45334657ad393f5e61274880c74db26cba9ebb1 Handle err in queue_proxy by @alexellis 98ad88bc3ff50c6597fbdbb200101749814ab23e Adding my blog article about creating a COBOL template by @devries 28eb499333885af10f49ecb6e2598f91db734bac Update Core Team by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(8.19 MB)
    fwatchdog-arm64(7.81 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(7.12 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(8.13 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.18.17(Apr 22, 2020)

    Changelog for 0.18.17:

    • PR #1513 Publish async requests to multiple topics by @alexellis

    This feature enables multiple NATS topics and queue-workers, so that you can have a fast and slow queue, or segregate by user. Read more in the documentation: https://docs.openfaas.com/reference/async/#multiple-queues

    Commits 18f6c720b50db7da5f9c410f9fd3369ed7aff379 Extract a caching function_query type by @alexellis 2bfca6d848cfdbb4901790eef1f103e8f09519d9 Publish to multiple topics by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(8.19 MB)
    fwatchdog-arm64(7.81 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(7.12 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(8.13 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.18.15(Apr 22, 2020)

    Changelog for 0.18.15:

    • PR #1512 Bump queue-worker and NATS by @alexellis
    • PR #1509 Add Data Pipelines blog by @martindekov
    • PR #1511 Add SG virtual conference meetup to community.md by @viveksyngh
    • PR #1510 Add weave online meetup to community.md by @viveksyngh
    • PR #1498 Add hey sample function by @kylos101

    Commits 5938e2f06877049af5aed5b915653793195cf5e1 Update queue-worker version for Swarm by @alexellis 9bde25aedbde22d1372e89d79959a4937e6668e3 Bump queue-worker and NATS by @alexellis 542d7c0b83fa1e88a9f7fece128c591f616452d1 Add Data Pipelines blog by @martindekov 0dbbde1dc581011e7a57c509318131ab3ca23248 Add SG virtual conference meetup to community.md by @viveksyngh ca760faaea63138399966db592417d044b2bb8d8 Update community.md by @alexellis 3d2ad3e7f7489822d8e16f4c91d91aa55caf436b Update community.md by @alexellis 41aee642541d2fa42fd36e35636353eefa26209d Add weave online meetup to community.md by @viveksyngh 28f45e7efaf5bada07810f59223c13f01dd0ee1a Update hey to pinned version by @alexellis d55cba82f896ae5e70295a767428db2d27b4538c Add hey sample function by @kylos101

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(8.19 MB)
    fwatchdog-arm64(7.81 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(7.12 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(8.13 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.18.14(Apr 5, 2020)

    Changelog for 0.18.14:

    • PR #1502 Add new blog post: Stripe & faasd by @mehyedes
    • PR #1489 Hey sample function by @kylos101
    • PR #1496 Add blog post by Wing-Kam Wong by @wingkwong
    • PR #1494 Add blog post RPi Kubernetes with OpenFaaS by @martindekov
    • PR #1492 Add blog post by Amir Movahedi by @Qolzam
    • PR #1483 Update doc URL from godoc.org to pkg.go.dev by @Amalkh5
    • PR #1485 Bumping the version numbers in docker compose files by @freshrap6
    • PR #1480 Add OpenFaaS email service blog post. by @Qolzam
    • PR #1478 Add link to the Online Meetup hosted by Containous by @utsavanand2

    Commits c44cb74cc728a8b9d3e634e02f14705440b5a3ff Propagate context to upstream request by @alexellis 4c08240d9f36bbbb82e0f10fa6335ee578536bd2 Add new blog post: Stripe & faasd by @mehyedes 28e53aaf4b12d6acc1e9a6975a5d6f61d5e5cb3e Updates for readability by @kylos101 c3c1d0c2fe8f21d6f5496e08e7d000a94faf3184 Add hey sample function by @kylos101 4e7fdfe03be0e7865df967a6cc60cfa62e41078a Add blog post by Wing-Kam Wong by @wingkwong 541ac30a1ed86037465de2c51b21d4268a712f58 Add blog post RPi Kubernetes with OpenFaaS by @martindekov 05c37721a3fb30df79ec474164655e396be5b182 Move out KubeCon/Rejekt/SPS events by @alexellis f181218ac5251edf2c5ecf7751e94a39d243a7ee Add blog post by Amir Movahedi by @Qolzam 46b106878d2c85bdf2944917a68d727558bc8948 Fix issue with nats version by @alexellis d492a8d1385f5cab21df95e6b01c14df02f5576c update doc url from godoc to pkg.go.dev by @Amalkh5 249e6d9267dad36ea6ce2f23212d2253c8c30d71 Update armhf/64 image tags in docker-compose by @alexellis f410e4d987b6d599e0219f449f969820f7ff3d51 Putting the correct version for arm64 by @freshrap6 690da5ed5ff505428508a19bd31d379be74d7e1e bumping the version numbers by @freshrap6 a7e5af5b0efb311a2f1426684b4d997d4ed30502 Remove Civo who just cancelled by @alexellis 97bbe4fc05d2f1f4de7367c8a81594e39cc007c6 Add OpenFaaS email service blog post. by @Qolzam 72aa39f372aeca02d05317fcdd7b98b35aada8a1 Add link to the Online Meetup hosted by Containous by @utsavanand2

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(8.19 MB)
    fwatchdog-arm64(7.81 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(7.12 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(8.13 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.18.12(Mar 12, 2020)

    Changelog for 0.18.12:

    • PR #1411 Record metrics for invocations when they start by @alexellis
    • PR #1473 Added community events and blogs to community.md by @aidun
    • PR #1472 Add myself to DEREK.yml by @carlosedp
    • PR #1469 Bump basic auth plugin to 0.18.11 by @martindekov
    • PR #1468 Bump gateway to newest image by @martindekov
    • PR #1454 Add Crossplane + OpenFaaS Kubecon Talk by @hasheddan

    Commits 37bf15e5088a3377b5070f7190baf862219f3326 Namespace invocation_total by @alexellis c4f924cfb5cc7fc078cfa6f29f43c22a66cacf72 Update Started variable to GatewayFunctionInvocationStarted by @alexellis 96812d2cd8afcd1c6e73cdab8ab1761ea83f56ad Record metrics for invocations when they start by @alexellis 1eea381dd5b81cd2b188f5fdb9195075f7614732 Added community events and blogs to community.md by @aidun e2c70e2d653917bcbd2ad827a89a5c9c74158462 Add myself to DEREK.yml by @carlosedp 79e00c9818b11150029e77bfcaaa9437fc4a435a Update README.md by @alexellis c6ee2e4da0ad61d385804f9da7319c264d261866 Bump basic auth plugin to 0.18.11 by @martindekov f9711c64365879bdea3cbd26391563b32f424119 Bump gateway to newest image by @martindekov 11f29ea8e3f4110b8d68f79ebc4dde082ecce541 Add Crossplane + OpenFaaS Kubecon Talk by @hasheddan

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
  • 0.18.11(Mar 5, 2020)

    Changelog for 0.18.11:

    • PR #1389 Add 3 KubeCon video links to community file by @burtonr
    • PR #1453 Fix Padding on UI and remove Namespace when not needed by @Waterdrips
    • PR #1467 Add link to Traefik webinar by @Waterdrips
    • PR #1466 Add faasd on RPi blog post by @mehyedes
    • PR #1465 Add Tutorial by Clear Linux by @utsavanand2
    • PR #1463 Add Arkade Blog post to community.md by @Waterdrips
    • PR #1462 Add faasd lxc post by @gabeduke
    • PR #1435 Add talk on RISC-V Summit 2019 by @carlosedp
    • PR #1443 gateway/handlers: fix use of testing.T inside goroutine by @alrs
    • PR #1449 Update projects to use Go 1.13 by @heyts
    • PR #1447 Add The State of Open Source Serverless talk by @jonatasbaldin
    • PR #1445 Add our Amazing Kubecon EU 2020 events to community.md by @Waterdrips
    • PR #1441 Use license-check docker image instead of curl by @hasheddan
    • PR #1437 Fix envvar handling in deploy_stack.ps1 by @johnmccabe
    • PR #1436 Update log message to reduce verbosity and for consistency by @viveksyngh
    • PR #1433 Add blog to community.md Serverless made accessible by @Waterdrips
    • PR #1432 Update community.md with more blog posts by @Waterdrips
    • PR #1431 Update ADOPTERS.md by @matevzmihalic
    • PR #1428 Update API docs for secret update by @viveksyngh
    • PR #1423 Add transfer-encoding to watchdog env-vars if present by @alexellis
    • PR #1426 Change the node example in readme to node12 by @Waterdrips
    • PR #1425 Add various posts to the community.md file by @Waterdrips
    • PR #1424 Add contributing blog to OF to community.md by @Waterdrips
    • PR #1420 Add Alistair Hey Blog to community.md by @Waterdrips
    • PR #1419 Fix Typo in community.md file by @Waterdrips

    Commits 326cc7a9b9235276ecf38430c49a5707a429c6c8 Add featured videos section to community file by @burtonr 5abe7636d1d816349186bad911501e0b18efaa64 Add 3 KubeCon video links to community file by @burtonr 6880fdc524a85356ef2ae2a3246a8471199d3a94 Fix issue with Namespace suffix on Gateway UI by @Waterdrips b4bed58b6606b5cbf2c3d345da85e2938f3ae8d9 Fix padding on Fn Store Gateway UI by @Waterdrips ac1caa2897841452ef3267056c462939422bd7c5 Add link to Traefik webinar by @Waterdrips cc03840115a884eaba11385cc1b36bd479a54cdc Add faasd on RPi blog post by @mehyedes a471a8604bedc70dcf79b455e3e475304f46822f Add Tutorial by Clear Linux by @utsavanand2 33ac99efd6ff4bec491b21a8a4e5f7624d5af70c Set header properly by @alexellis cd55a1b9fcb2297dbc326b41fef377c622ecefe3 Update to MB by @alexellis 52a42afbf6c29f3141e932b0d43f405629e9e6a9 Update nodeinfo with content-type by @alexellis b74cd09fa196ba7de85b9b3998edcc01ab40568b Add Arkade Blog post to community.md by @Waterdrips 8d0996ad394262bffce8fe0227cec913464c7fa5 Add nodeinfo-http - a faster nodeinfo by @alexellis e2494e222853f6b09057638ecde725949934a80c Add RPi w/ OpenFaaS blog post by @alexellis a4a545650a19e80440bb32941aa22ad349787ad7 Add arkade blog post that mentions OpenFaaS by @alexellis 7ca13475e7f70a858980233eff16beb74e2a55ba Add faasd lxc blog link by @gabeduke d98bd5ce2068274b4e90b593bd980926d673bd4d Add privte cloud post by @alexellis 7f5ba7d4351a717031e11fefc8d2ec90af626e37 Update SME listing by @alexellis 9299e50188179809ca469a6150d81c4ad6f5cb21 Update list of core team by @alexellis bf06355ad7bf66c3c5ce76d39e774de9a4ff3b1e Move event to chronologically correct place by @rgee0 eb16bea8f7fa010fced790af55f7ca011e5a90c2 Add talk on RISC-V Summit 2019 by @carlosedp b4a6872c04b00d8acdc5765012bc243d360e5f2d gateway/handlers: fix use of testing.T inside goroutine by @alrs 67598e58c5955fd87cc8092473ef8b573cae12c7 Update projects to use Go 1.13 by @heyts 45300420fe200354d1045f3cc2a649d0c993894b Set order for events by @alexellis 35e2252a87687536565878d57a3ff61aed4a2b57 Add The State of Open Source Serverless talk by @jonatasbaldin 94e50f56c44d53e3dce54e134b4f0c8df30e3611 Add Ramiro's talk by @alexellis 500edc6cb9dd58fa4c56de0f674b6fad565bfb86 Add faasd link by @alexellis 4d38de67bbc9da5d8f8c7775f6559880967ceaca Update blog posts and events. by @alexellis 38d6573c22ff715cede28c3fba7e30a00f6f903d Add our Amazing Kubecon EU 2020 events to community.md by @Waterdrips 8372e8ccdeb6aebbcd9e268e195c4f1d6bdda12d Add some events by @alexellis 6afae214e3ec3741504787c26aee89ca8dbcae3c Remove 2x bronze sponsors by @alexellis

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(8.19 MB)
    fwatchdog-arm64(7.81 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(7.12 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(8.13 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.18.6(Dec 15, 2019)

  • 0.18.5(Dec 10, 2019)

    Changelog for 0.18.5:

    • PR #1397 Update core OpenFaaS component in docker-compose by @ewilde
    • PR #1400 Support customising the NATS Streaming channel. by @bmcstdio
    • PR #1398 Remove Richard from Core members list by @rgee0
    • PR #1395 Fix Typo in readme by @Waterdrips
    • PR #1393 Add link to blog post by @MartinHeinz

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(7.56 MB)
    fwatchdog-arm64(7.03 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(6.50 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(7.49 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
  • 0.18.4(Nov 28, 2019)

    Changelog for 0.18.4:

    • PR #1380 Add Namespace indicator on Function page part of #1379 by @Waterdrips
    • PR #1382 Update ADOPTERS.md by @goncalo-oliveira
    • PR #1386 Add Namespace Dropdown to Gateway UI by @Waterdrips

    Add -run-healthcheck flag

    This flag is useful for some users that prefer a scratch image that cannot execute a bash healthcheck. Instead they can execute the watchdog itself such as:

    "watchdog -run-healthcheck"

    It will return a non-zero exit code for when the lock file is not found.

    Generated by Derek

    Source code(tar.gz)
    Source code(zip)
    fwatchdog(7.56 MB)
    fwatchdog-arm64(7.03 MB)
    fwatchdog-arm64.sha256(82 bytes)
    fwatchdog-armhf(6.50 MB)
    fwatchdog-armhf.sha256(82 bytes)
    fwatchdog.exe(7.49 MB)
    fwatchdog.exe.sha256(80 bytes)
    fwatchdog.sha256(76 bytes)
Owner
OpenFaaS
Serverless Functions Made Simple
OpenFaaS
IronFunctions - the serverless microservices platform by

Welcome to IronFunctions! The open source serverless platform. What is IronFunctions? IronFunctions is an open source serverless platform, or as we li

Iron.io 2.9k Jun 6, 2021
💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!

LocalStack - A fully functional local AWS cloud stack LocalStack provides an easy-to-use test/mocking framework for developing Cloud applications. Cur

LocalStack 30.5k Jun 3, 2021
A Function as a Service tool makes a function as a container-based service in seconds.

fx Poor man's function as a service. Table of Contents Introduction Installation Usage Introduction fx is a tool to help you do Function as a Service

Minghe 1.6k May 30, 2021
Lightweight runner for lambda functions/apps in CGI like mode

Trusted-CGI Lightweight self-hosted lambda/applications/cgi/serverless-functions engine. see docs Features: No specific requirements: just one binary.

Aleksandr Baryshnikov 93 Apr 14, 2021
Appwrite is a secure end-to-end backend server for Web, Mobile, and Flutter developers that is packaged as a set of Docker containers for easy deployment 🚀

A complete backend solution for your [Flutter / Vue / Angular / React / iOS / Android / *ANY OTHER*] app Appwrite is an end-to-end backend server for

Appwrite 9.6k Jun 6, 2021