A Deis application stores config in environment variables.
Use deis config to modify environment variables for a deployed application.
$ deis help config
Valid commands for config:
config:list list environment variables for an app
config:set set environment variables for an app
config:unset unset environment variables for an app
config:pull extract environment variables to .env
config:push set environment variables from .env
Use `deis help [command]` to learn more.
When config is changed, a new release is created and deployed automatically.
You can set multiple environment variables with one deis config:set command,
or with deis config:push and a local .env file.
$ deis config:set FOO=1 BAR=baz && deis config:pull
$ cat .env
FOO=1
BAR=baz
$ echo "TIDE=high" >> .env
$ deis config:push
Creating config... done, v4
=== yuppie-earthman
DEIS_APP: yuppie-earthman
FOO: 1
BAR: baz
TIDE: high
Deis treats backing services like databases, caches and queues as attached resources. Attachments are performed using environment variables.
For example, use deis config to set a DATABASE_URL that attaches
the application to an external PostgreSQL database.
$ deis config:set DATABASE_URL=postgres://user:pass@example.com:5432/db
=== peachy-waxworks
DATABASE_URL: postgres://user:pass@example.com:5432/db
Detachments can be performed with deis config:unset.
By default, Workflow only checks that your application containers start in their Pod. If you would like Kubernetes to respond to appliation health, you may add a health check by configuring URL, port, initial delay, and timeout values.
The health checks are implemented as Kubernetes container probes. Currently only HTTP GET is supported.
Available configuration options for health checks are the following, including defaults:
HEALTHCHECK_URL
Path in the application to use for health check, such as /healthz - This value needs to be set for any health check to happen. Needs to accept a HTTP GET request and return a HTTP status between 200-399.
HEALTHCHCK_PORT
TCP port to use for health check. Defaults to using same port as the application
HEALTHCHECK_TIMEOUT
Number of seconds after which the health check times out. Defaults to 50 seconds
HEALTHCHECK_INITIAL_DELAY
Number of seconds before health checks starts checking the application after the start of the pod.
This is useful to set if the application takes a while to get setup, due to migrations, cache warming or otherwise. Prevents Kubernetes (and Deis Workflow) from replacing an application pod in its setup phase.
Defaults to 50 seconds
HEALTHCHECK_PERIOD_SECONDS
How often (in seconds) to perform the health check. Defaults every 10 seconds
HEALTHCHECK_SUCCESS_THRESHOLD
Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1 success
HEALTHCHECK_FAILURE_THRESHOLD
Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3 failures
Configure these health checks on a per-application basis using deis config:set:
$ deis config:set HEALTHCHECK_URL=/200.html
=== peachy-waxworks
HEALTHCHECK_URL: /200.html
$ deis config:set HEALTHCHECK_INITIAL_DELAY=5
=== peachy-waxworks
HEALTHCHECK_INITIAL_DELAY: 5
HEALTHCHECK_URL: /200.html
$ deis config:set HEALTHCHECK_TIMEOUT=5
=== peachy-waxworks
HEALTHCHECK_TIMEOUT: 5
HEALTHCHECK_INITIAL_DELAY: 5
HEALTHCHECK_URL: /200.html
$ deis config:set HEALTHCHECK_PORT=5000
=== peachy-waxworks
HEALTHCHECK_TIMEOUT: 5
HEALTHCHECK_INITIAL_DELAY: 5
HEALTHCHECK_URL: /200.html
HEALTHCHECK_PORT: 5000
If an application times out, or responds to a health check with a response code outside the 200-399 range, Kubernetes will stop sending requests to the application and re-schedule the pod to another node.
Configured health checks also modify the default application deploy behavior. When starting a new pod, Workflow will wait for the health check to pass before moving onto the next pod.