Updated docs on configuration and required env vars. (#285)

* Updated docs on configuration and required env vars.

* minor
This commit is contained in:
Travis Reeder
2017-09-29 16:20:46 -07:00
committed by GitHub
parent ad7fe19da2
commit 5219227393
9 changed files with 117 additions and 41 deletions

View File

@@ -7,6 +7,10 @@ If you are a developer using Fn through the API, this section is for you.
* [Quickstart](https://github.com/fnproject/fn)
* [Usage](usage.md)
* [Writing functions](writing.md)
* [Testing functions](testing.md)
* [Hot functions](hot-functions.md)
* [Async functions](async.md)
* [Configuration](developers/configs.md)
* [fn (CLI Tool)](https://github.com/fnproject/cli/blob/master/README.md)
* [Hot functions](hot-functions.md)
* [Async functions](async.md)
@@ -15,7 +19,7 @@ If you are a developer using Fn through the API, this section is for you.
* [Client Libraries](developers/clients.md)
* [Packaging functions](packaging.md)
* [Open Function Format](function-format.md)
* API Reference (coming soon)
* [API Reference](http://petstore.swagger.io/?url=https://raw.githubusercontent.com/fnproject/fn/master/docs/swagger.yml)
* [Object Model](developers/model.md)
* [FAQ](faq.md)

View File

@@ -0,0 +1,20 @@
# Function Config Vars
There are three ways to get configuration variables into a function, all of which will be available as environment variables.
These are ordered in order of preference, the later ones overriding the previous ones.
## 1. Application level configuration
```sh
fn apps config set myapp LOG_LEVEL debug
```
## 2. Function configuration from func.yaml
See [Function file](../function-file.md) for more info.
## 3. Route level configuration
```sh
fn routes config set myapp hello2 LOG_LEVEL info
```

View File

@@ -19,11 +19,16 @@ config:
key2: value2
keyN: valueN
headers:
content-type:
- text/plain
Content-Type: text/plain
build:
- make
- make test
expects:
config:
- name: SECRET_1
required: true
- name: SECRET_2
required: false
```
`name` is the name and tag to which this function will be pushed to and the
@@ -40,7 +45,7 @@ appended to the image as a tag.
'go', 'python', 'java', etc. The runtime 'docker' will use the existing Dockerfile if one exists.
`build` (optional) is an array of local shell calls which are used to help
building the function.
building the function. TODO: Deprecate this?
`type` (optional) allows you to set the type of the route. `sync`, for functions
whose response are sent back to the requester; or `async`, for functions that
@@ -56,9 +61,12 @@ and error message is logged. Default: `128`.
`headers` (optional) is a set of HTTP headers to be returned in the response of
this function calls.
`config` (optional) is a set of configurations to be passed onto the route
setup. These configuration options shall override application configuration
during functions execution.
`config` (optional) is a set of configuration variables to be passed onto the function as environment variables.
These configuration options shall override application configuration during functions execution. See [Configuration](developers/configs.md)
for more information.
`expects` (optional) a list of config/env vars that are required to run this function. These vars will be used when running/testing locally,
if found in your local environment. If these vars are not found, local testing will fail.
## Hot functions
@@ -67,31 +75,4 @@ hot functions support also adds two extra options to this configuration file.
`format` (optional) is one of the streaming formats covered at [function-format.md](function-format.md).
`idle_timeout` (optional) is the time in seconds a container will remain alive without receiving any new requests;
hot functions will stay alive as long as they receive a request in this interval. Default: `30`.
## Testing functions
`tests` (optional) is an array of tests that can be used to valid functions both
locally and remotely. It has the following structure
```yaml
tests:
- name: envvar
in: "inserted stdin"
out: "expected stdout"
err: "expected stderr"
env:
envvar: trololo
```
`in` (optional) is a string that is going to be sent to the file's declared
function.
`out` (optional) is the expected output for this function test. It is present
both in local and remote executions.
`err` (optional) similar to `out`, however it read from `stderr`. It is only
available for local machine tests.
`env` (optional) is a map of environment variables that are injected during
tests.
hot functions will stay alive as long as they receive a request in this interval. Default: `30`.

View File

@@ -20,25 +20,25 @@ The basic Dockerfile for most languages is along these lines:
```
# Choose base image
FROM funcy/node:dev
FROM node:alpine
# Set the working directory
WORKDIR /function
# Add your binary or code to the working directory
ADD funcbin /function/
ADD . /function/
# Set what will run when a container is started for this image
ENTRYPOINT ["./funcbin"]
ENTRYPOINT ["node func.js"]
```
Then build your function image:
```sh
docker build -t $USERNAME/myfunction .
fn build
```
### Push your image
```sh
docker push $USERNAME/myfunction
fn push
```
Now you can use that image when creating or updating routes.
Now you can use that image when creating or updating routes.