From 8adadaa5d443f42025d326cb5b09e6e2e9f172ce Mon Sep 17 00:00:00 2001 From: emile Date: Fri, 22 Jan 2016 12:36:24 +0100 Subject: [PATCH] Add launch configuration documentation --- cmd.go | 2 +- configuration.go | 10 ++--- docs/index.md | 99 +++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 104 insertions(+), 7 deletions(-) diff --git a/cmd.go b/cmd.go index 81c804d27..5bfeb4851 100644 --- a/cmd.go +++ b/cmd.go @@ -77,7 +77,7 @@ func init() { traefikCmd.PersistentFlags().StringP("graceTimeOut", "g", "10", "Timeout in seconds. Duration to give active requests a chance to finish during hot-reloads") traefikCmd.PersistentFlags().String("accessLogsFile", "log/access.log", "Access logs file") traefikCmd.PersistentFlags().String("traefikLogsFile", "log/traefik.log", "Traefik logs file") - traefikCmd.PersistentFlags().Var(&arguments.Certificates, "certificates", "SSL certificates and keys. You may add several certificate/key pairs to terminate HTTPS for multiple domain names using TLS SNI") + traefikCmd.PersistentFlags().Var(&arguments.Certificates, "certificates", "SSL certificates and keys pair, ie 'tests/traefik.crt,tests/traefik.key'. You may add several certificate/key pairs to terminate HTTPS for multiple domain names using TLS SNI") traefikCmd.PersistentFlags().StringP("logLevel", "l", "ERROR", "Log level") traefikCmd.PersistentFlags().DurationVar(&arguments.ProvidersThrottleDuration, "providersThrottleDuration", time.Duration(2*time.Second), "Backends throttle duration: minimum duration between 2 events from providers before applying a new configuration. It avoids unnecessary reloads if multiples events are sent in a short amount of time.") diff --git a/configuration.go b/configuration.go index 14b74ae87..3bca90541 100644 --- a/configuration.go +++ b/configuration.go @@ -94,11 +94,11 @@ func LoadConfiguration() *GlobalConfiguration { } else { viper.SetConfigName("traefik") // name of config file (without extension) } - viper.AddConfigPath("/etc/traefik/") // path to look for the config file in - viper.AddConfigPath("$HOME/.traefik") // call multiple times to add many search paths - viper.AddConfigPath(".") // optionally look for config in the working directory - err := viper.ReadInConfig() // Find and read the config file - if err != nil { // Handle errors reading the config file + viper.AddConfigPath("/etc/traefik/") // path to look for the config file in + viper.AddConfigPath("$HOME/.traefik/") // call multiple times to add many search paths + viper.AddConfigPath(".") // optionally look for config in the working directory + err := viper.ReadInConfig() // Find and read the config file + if err != nil { // Handle errors reading the config file fmtlog.Fatalf("Error reading file: %s", err) } if len(arguments.Certificates) > 0 { diff --git a/docs/index.md b/docs/index.md index 3473bd308..fab43ea2b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,6 +5,7 @@ ___ # Documentation - [Basics](#basics) +- [Launch configuration](#launch) - [Global configuration](#global) - [File backend](#file) - [API backend](#api) @@ -38,7 +39,8 @@ Frontends can be defined using the following rules: A frontend is a set of rules that forwards the incoming http traffic to a backend. - You can optionally enable `passHostHeader` to forward client `Host` header to the backend. + You can optionally enable `passHostHeader` to +- []forward client `Host` header to the backend. ### HTTP Backends @@ -59,6 +61,101 @@ For example: - `LatencyAtQuantileMS(50.0) > 50` - `ResponseCodeRatio(500, 600, 0, 600) > 0.5` + +## Launch configuration + +Træfɪk can be configured using a TOML file configuration, arguments, or both. +By default, Træfɪk will try to find a `traefik.toml` in the following places: +- `/etc/traefik/` +- `$HOME/.traefik/` +- `.` the working directory + +You can override this by setting a `configFile` argument: + +```bash +$ traefik --configFile=foo/bar/myconfigfile.toml +``` + +Træfɪk uses the following precedence order. Each item takes precedence over the item below it: + +- arguments +- configuration file +- default + +It means that arguments overrides configuration file. +Each argument is described in the help section: +```bash +$ traefik --help +traefik is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. +Complete documentation is available at http://traefik.io + +Usage: + traefik [flags] + traefik [command] + +Available Commands: + version Print version + help Help about any command + +Flags: + --accessLogsFile="log/access.log": Access logs file + --boltdb=false: Enable Boltdb backend + --boltdb.endpoint="127.0.0.1:4001": Boltdb server endpoint + --boltdb.filename="": Override default configuration template. For advanced users :) + --boltdb.prefix="/traefik": Prefix used for KV store + --boltdb.watch=true: Watch provider + --certificates=: SSL certificates and keys. You may add several certificate/key pairs to terminate HTTPS for multiple domain names using TLS SNI + -c, --configFile="": Configuration file to use (TOML, JSON, YAML, HCL). + --consul=false: Enable Consul backend + --consul.endpoint="127.0.0.1:8500": Consul server endpoint + --consul.filename="": Override default configuration template. For advanced users :) + --consul.prefix="/traefik": Prefix used for KV store + --consul.watch=true: Watch provider + --docker=false: Enable Docker backend + --docker.domain="": Default domain used + --docker.endpoint="unix:///var/run/docker.sock": Docker server endpoint. Can be a tcp or a unix socket endpoint + --docker.filename="": Override default configuration template. For advanced users :) + --docker.tls=false: Enable Docker TLS support + --docker.tls.ca="": TLS CA + --docker.tls.cert="": TLS cert + --docker.tls.insecureSkipVerify=false: TLS insecure skip verify + --docker.tls.key="": TLS key + --docker.watch=true: Watch provider + --etcd=false: Enable Etcd backend + --etcd.endpoint="127.0.0.1:4001": Etcd server endpoint + --etcd.filename="": Override default configuration template. For advanced users :) + --etcd.prefix="/traefik": Prefix used for KV store + --etcd.watch=true: Watch provider + --file=false: Enable File backend + --file.filename="": Override default configuration template. For advanced users :) + --file.watch=true: Watch provider + -g, --graceTimeOut="10": Timeout in seconds. Duration to give active requests a chance to finish during hot-reloads + -h, --help=false: help for traefik + -l, --logLevel="ERROR": Log level + --marathon=false: Enable Marathon backend + --marathon.domain="": Default domain used + --marathon.endpoint="http://127.0.0.1:8080": Marathon server endpoint. You can also specify multiple endpoint for Marathon + --marathon.filename="": Override default configuration template. For advanced users :) + --marathon.networkInterface="eth0": Network interface used to call Marathon web services. Needed in case of multiple network interfaces + --marathon.watch=true: Watch provider + -p, --port=":80": Reverse proxy port + --providersThrottleDuration=2s: Backends throttle duration: minimum duration between 2 events from providers before applying a new configuration. It avoids unnecessary reloads if multiples events are sent in a short amount of time. + --traefikLogsFile="log/traefik.log": Traefik logs file + --web=false: Enable Web backend + --web.address=":8080": Web administration port + --web.cerFile="": SSL certificate + --web.keyFile="": SSL certificate + --web.readOnly=false: Enable read only API + --zookeeper=false: Enable Zookeeper backend + --zookeeper.endpoint="127.0.0.1:2181": Zookeeper server endpoint + --zookeeper.filename="": Override default configuration template. For advanced users :) + --zookeeper.prefix="/traefik": Prefix used for KV store + --zookeeper.watch=true: Watch provider + + +Use "traefik help [command]" for more information about a command. +``` + ## Global configuration ```toml