mirror of
https://github.com/openfaas/faas.git
synced 2025-06-27 01:03:26 +00:00
Feature for probing functions
Introduces a single-flight call to a function's health endpoint to verify that it is registered with an Istio sidecar (Envoy) before letting the invocation through. Results are cached for 5 seconds, before a probe is required again. Tested without Istio, with probe_functions environment variable set to true, I saw a probe execute in the logs. Fixes: #1721 for Istio users. Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alex@openfaas.com>
This commit is contained in:
committed by
Alex Ellis
parent
01841f605c
commit
88eea5f62e
@ -7,18 +7,11 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/openfaas/faas/gateway/pkg/middleware"
|
||||
"github.com/openfaas/faas/gateway/scaling"
|
||||
)
|
||||
|
||||
func getNamespace(defaultNamespace, fullName string) (string, string) {
|
||||
if index := strings.LastIndex(fullName, "."); index > -1 {
|
||||
return fullName[:index], fullName[index+1:]
|
||||
}
|
||||
return fullName, defaultNamespace
|
||||
}
|
||||
|
||||
// MakeScalingHandler creates handler which can scale a function from
|
||||
// zero to N replica(s). After scaling the next http.HandlerFunc will
|
||||
// be called. If the function is not ready after the configured
|
||||
@ -28,7 +21,7 @@ func MakeScalingHandler(next http.HandlerFunc, scaler scaling.FunctionScaler, co
|
||||
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
functionName, namespace := getNamespace(defaultNamespace, getServiceName(r.URL.String()))
|
||||
functionName, namespace := middleware.GetNamespace(defaultNamespace, middleware.GetServiceName(r.URL.String()))
|
||||
|
||||
res := scaler.Scale(functionName, namespace)
|
||||
|
||||
|
Reference in New Issue
Block a user