The function deployment and status structs have been moved away
into the faas-provider package.
Tested with a build, running tests, and CI.
Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
This change which has been tested on armhf and x86_64 removes
the need for a separate Dockerfile for armhf.
CGO_ENABLED and GOARM etc are now passed as ARGs via build.sh.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
With this change /system/info endpoint is going to give
information about the platform architecture it is running on
(arm64, armhf, x86_64)
Signed-off-by: Ivana Yovcheva (VMware) <iyovcheva@vmware.com>
**What**
- Ensure that we are loading the log provider url correctly, including
fallback to the function provider, when the value is set
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
**What**
- Document the new logs handler url env variable in the gateway readme
- Document the logs handler in the swagger docs
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
**What**
- Use NotImplemented when we get a 404 from the log provider. When we
get a 200, process the log request, as normal. For all other status
codes, return a sever error with a message stating that the
response was unexpected. The message will contain the original status
code to assist with debugging
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
**What**
- Fix missing imports since my ide forgot to add the "time" package
- Update the tests to accept the handler timeout duration
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
**What**
- Pass the writetimeout to the logs handler to set the context timeout
of the log stream.
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
**What**
- Add test to verify that the log proxy shutsdown correctly when the
client cancels
- Add test to verify that the log proxy shutsdown correctly when the
logs provider closes the connection
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
**What**
- Implement log handler method that will hijack the connection and clear
timeouts to allow long lived streams
- Proxies requests to the logs provider and returns the response
unmodified
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
The customize button was redundant to the custom tab
This could lead to confusion with the user experience,
so the additional button has been removed.
Signed-off-by: Burton Rheutan <rheutan7@gmail.com>
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
Signed-off-by: Burton Rheutan <rheutan7@gmail.com>
This corrects an issue where the error body was being hidden
for the external auth handler. It also adds the ca-certs into
the runtime Docker image for when the gateway is calling an
external plugin exposed over HTTPS.
Tested with OAuth2 plugin.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
This commit moves the OpenFaaS gateway from using in-process
basic-auth for everything to use an external auth URL instead.
When auth is not enable, this functionality is not added to the
handlers and behaves as before. When enabled, the configured
plugin with authenticate requests.
Tested on Docker Swarm with positive and negative tests.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
Fixes issue by adding unit test to make sure the body from
the plugin is written correctly and proxied to the client.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
Fix for external auth wrapper handler. Written by introducing
a broken unit test. Whenever the auth plugin returns a request
as not authorized, we must pass back any headers set by the
plugin.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
Fixes issue found in e2e testing where the headers were not
being passed to the basic-auth-plugin. This change makes sure
the upstream check gets all headers copied in before making
the call.
Tested with negative unit tests before writing fix.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
An explicit timeout is passed to the handler and a new unit test
proves that the functionality is in place. A additional return
statement was needed in the handler as pointed out by
@stefanprodan.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
Adds two new environment variables and unit tests to validate
positive and default use-cases.
auth_proxy_url
auth_proxy_pass_body
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
This commit adds an external auth handler which can be used to
wrap existing handlers, so that they delegate their requests
to an upstream URL before allowing a request to pass through
to an upstream API.
New handler tested with unit tests.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
There is a utility script which can be used for installing
license-check. This is added to the gateway Dockerfiles.
Tested in Docker for Mac.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
Requested by @LucasRoesler - removes headers detailed in HTTP
spec which are not supposed to be forwarded by proxies or
gateways.
Signed-off-by: Alex Ellis <alexellis2@gmail.com>
This commit adds changes to run metrics server in a separate method and
also removed port 8082 from exposed port a/c to review comments.
It also uses a smaller static timeout value for new server.
Signed-off-by: Vivek Singh <vivekkmr45@yahoo.in>
This commit runs a new HTTPServer on port 8082 in a goroutine to serve
/metrics endpoint on a different port.
This also update the configurations and compose files.
Fixes: #1081
Signed-off-by: Vivek Singh <vivekkmr45@yahoo.in>
- max_conns / idle / per host are now read from env-vars and have
defaults set to 1024 for both values
- logging / metrics are collected in the client transaction
rather than via defer (this may impact throughput)
- function cache moved to use RWMutex to try to improve latency
around locking when updating cache
- logging message added to show latency in running GetReplicas
because this was observed to increase in a linear fashion under
high concurrency
- changes tested against 3-node bare-metal 1.13 K8s cluster
with kubeadm
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
- due to what appears to be a frequent issue with the Go HTTP
client some tweaks were needed to the HTTP client used for
reverse proxying to prevent CoreDNS from rejecting connections.
The following PRs / commits implement similar changes in
Prometheus and Minio.
https://github.com/prometheus/prometheus/pull/3592https://github.com/minio/minio/pull/5860
Under a 3-node (1-master) kubeadm cluster running on bare
metal with Ubuntu 18.04 I was able to send 100k requests
with 1000 being concurrent with no errors being returned
by hey.
```
hey -n 100000 -c 1000 -m=POST -d="hi" \
http://192.168.0.26:31112/function/go-echo
```
The go-echo function is based upon the golang-http
template in the function store using the of-watchdog.
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>