fn: runner status and docker load images (#1116)

* fn: runner status and docker load images

Introducing a function run for pure runner Status
calls. Previously, Status gRPC calls returned active
inflight request counts with the purpose of a simple
health checker. However this is not sufficient since
it does not show if agent or docker is healthy. With
this change, if pure runner is configured with a status
image, that image is executed through docker. The
call uses zero memory/cpu/tmpsize settings to ensure
resource tracker does not block it.

However, operators might not always have a docker
repository accessible/available for status image. Or
operators might not want the status to go over the
network. To allow such cases, and in general possibly
caching docker images, added a new environment variable
FN_DOCKER_LOAD_FILE. If this is set, fn-agent during
startup will load these images that were previously
saved with 'docker save' into docker.
This commit is contained in:
Tolga Ceylan
2018-07-12 13:58:38 -07:00
committed by GitHub
parent 62461d93a7
commit 5dc5740a54
26 changed files with 745 additions and 57 deletions

View File

@@ -31,7 +31,8 @@ import (
)
const (
LBAddress = "http://127.0.0.1:8081"
LBAddress = "http://127.0.0.1:8081"
StatusImage = "fnproject/fn-status-checker:latest"
)
func LB() (string, error) {
@@ -276,7 +277,10 @@ func SetUpPureRunnerNode(ctx context.Context, nodeNum int) (*server.Server, erro
cancelCtx, cancel := context.WithCancel(ctx)
// now create pure-runner that wraps agent.
pureRunner, err := agent.NewPureRunner(cancel, grpcAddr, agent.PureRunnerWithAgent(innerAgent))
pureRunner, err := agent.NewPureRunner(cancel, grpcAddr,
agent.PureRunnerWithAgent(innerAgent),
agent.PureRunnerWithStatusImage(StatusImage),
)
if err != nil {
return nil, err
}