Fix Docker & KV templates for sticky

Signed-off-by: Emile Vauge <emile@vauge.com>
This commit is contained in:
Emile Vauge 2016-09-28 16:29:19 +02:00
parent 291c3b6dbc
commit 462d8b3e74
No known key found for this signature in database
GPG key ID: D808B4C167352E59
8 changed files with 59 additions and 147 deletions

View file

@ -711,12 +711,12 @@ Labels can be used on containers to override default behaviour:
- `traefik.backend.maxconn.amount=10`: set a maximum number of connections to the backend. Must be used in conjunction with the below label to take effect. - `traefik.backend.maxconn.amount=10`: set a maximum number of connections to the backend. Must be used in conjunction with the below label to take effect.
- `traefik.backend.maxconn.extractorfunc=client.ip`: set the function to be used against the request to determine what to limit maximum connections to the backend by. Must be used in conjunction with the above label to take effect. - `traefik.backend.maxconn.extractorfunc=client.ip`: set the function to be used against the request to determine what to limit maximum connections to the backend by. Must be used in conjunction with the above label to take effect.
- `traefik.backend.loadbalancer.method=drr`: override the default `wrr` load balancer algorithm - `traefik.backend.loadbalancer.method=drr`: override the default `wrr` load balancer algorithm
- `traefik.backend.loadbalancer.sticky=true`: enable backend sticky sessions
- `traefik.backend.circuitbreaker.expression=NetworkErrorRatio() > 0.5`: create a [circuit breaker](/basics/#backends) to be used against the backend - `traefik.backend.circuitbreaker.expression=NetworkErrorRatio() > 0.5`: create a [circuit breaker](/basics/#backends) to be used against the backend
- `traefik.port=80`: register this port. Useful when the container exposes multiples ports. - `traefik.port=80`: register this port. Useful when the container exposes multiples ports.
- `traefik.protocol=https`: override the default `http` protocol - `traefik.protocol=https`: override the default `http` protocol
- `traefik.weight=10`: assign this weight to the container - `traefik.weight=10`: assign this weight to the container
- `traefik.enable=false`: disable this container in Træfɪk - `traefik.enable=false`: disable this container in Træfɪk
- `traefik.stickysession=true`: enable backend sticky sessions
- `traefik.frontend.rule=Host:test.traefik.io`: override the default frontend rule (Default: `Host:{containerName}.{domain}`). - `traefik.frontend.rule=Host:test.traefik.io`: override the default frontend rule (Default: `Host:{containerName}.{domain}`).
- `traefik.frontend.passHostHeader=true`: forward client `Host` header to the backend. - `traefik.frontend.passHostHeader=true`: forward client `Host` header to the backend.
- `traefik.frontend.priority=10`: override default frontend priority - `traefik.frontend.priority=10`: override default frontend priority
@ -811,6 +811,7 @@ Labels can be used on containers to override default behaviour:
- `traefik.backend.maxconn.amount=10`: set a maximum number of connections to the backend. Must be used in conjunction with the below label to take effect. - `traefik.backend.maxconn.amount=10`: set a maximum number of connections to the backend. Must be used in conjunction with the below label to take effect.
- `traefik.backend.maxconn.extractorfunc=client.ip`: set the function to be used against the request to determine what to limit maximum connections to the backend by. Must be used in conjunction with the above label to take effect. - `traefik.backend.maxconn.extractorfunc=client.ip`: set the function to be used against the request to determine what to limit maximum connections to the backend by. Must be used in conjunction with the above label to take effect.
- `traefik.backend.loadbalancer.method=drr`: override the default `wrr` load balancer algorithm - `traefik.backend.loadbalancer.method=drr`: override the default `wrr` load balancer algorithm
- `traefik.backend.loadbalancer.sticky=true`: enable backend sticky sessions
- `traefik.backend.circuitbreaker.expression=NetworkErrorRatio() > 0.5`: create a [circuit breaker](/basics/#backends) to be used against the backend - `traefik.backend.circuitbreaker.expression=NetworkErrorRatio() > 0.5`: create a [circuit breaker](/basics/#backends) to be used against the backend
- `traefik.portIndex=1`: register port by index in the application's ports array. Useful when the application exposes multiple ports. - `traefik.portIndex=1`: register port by index in the application's ports array. Useful when the application exposes multiple ports.
- `traefik.port=80`: register the explicit application port value. Cannot be used alongside `traefik.portIndex`. - `traefik.port=80`: register the explicit application port value. Cannot be used alongside `traefik.portIndex`.

148
glide.lock generated
View file

@ -1,25 +1,10 @@
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b
<<<<<<< 3d7c44735a6fe792ad7fc9f074034a260e53bb0d
hash: c0ac205a859d78847e21d3cd63f427ffba985755c6ae84373e4a20364ba39b05 hash: c0ac205a859d78847e21d3cd63f427ffba985755c6ae84373e4a20364ba39b05
updated: 2016-09-28T16:50:04.352639437+01:00 updated: 2016-09-30T10:57:42.336729457+02:00
=======
<<<<<<< HEAD
hash: b82175c1aafff6c4e98c8ac4baea3832895c9600beac445c10af4c004982ef05
updated: 2016-09-20T16:03:26.379383173+02:00
=======
hash: f7ade4acdfd43efe6a0c1a1444776dd02d556e40bf122a495ca2fc226c880d0b
updated: 2016-08-10T11:55:40.961089942-04:00
>>>>>>> 2848e10... glide up
>>>>>>> glide up
=======
hash: b82175c1aafff6c4e98c8ac4baea3832895c9600beac445c10af4c004982ef05
updated: 2016-09-28T13:05:02.84360542+02:00
>>>>>>> Fix sticky sessions Docker/Marathon labels
imports: imports:
- name: github.com/abbot/go-http-auth - name: github.com/abbot/go-http-auth
version: cb4372376e1e00e9f6ab9ec142e029302c9e7140 version: cb4372376e1e00e9f6ab9ec142e029302c9e7140
- name: github.com/boltdb/bolt - name: github.com/boltdb/bolt
version: 94c8db596809690a3f7046fa83c7b0dda13a3222 version: 5cc10bbbc5c141029940133bb33c9e969512a698
- name: github.com/BurntSushi/toml - name: github.com/BurntSushi/toml
version: 99064174e013895bbd9b025c31100bd1d9b590ca version: 99064174e013895bbd9b025c31100bd1d9b590ca
- name: github.com/BurntSushi/ty - name: github.com/BurntSushi/ty
@ -33,7 +18,7 @@ imports:
- name: github.com/codegangsta/cli - name: github.com/codegangsta/cli
version: 1efa31f08b9333f1bd4882d61f9d668a70cd902e version: 1efa31f08b9333f1bd4882d61f9d668a70cd902e
- name: github.com/codegangsta/negroni - name: github.com/codegangsta/negroni
version: 6edff56736fa7bd546812f149e8cdaae61e5a38f version: dc6b9d037e8dab60cbfc09c61d6932537829be8b
- name: github.com/containous/flaeg - name: github.com/containous/flaeg
version: a731c034dda967333efce5f8d276aeff11f8ff87 version: a731c034dda967333efce5f8d276aeff11f8ff87
- name: github.com/containous/mux - name: github.com/containous/mux
@ -51,19 +36,7 @@ imports:
subpackages: subpackages:
- spew - spew
- name: github.com/docker/distribution - name: github.com/docker/distribution
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b version: 87917f30529e6a7fca8eaff2932424915fb11225
<<<<<<< 3d7c44735a6fe792ad7fc9f074034a260e53bb0d
version: 99cb7c0946d2f5a38015443e515dc916295064d7
=======
<<<<<<< HEAD
version: b6e0cfbdaa1ddc3a17c95142c7bf6e42c5567370
=======
version: 9000745401d186602c2ae63ffca12ed4233a968b
>>>>>>> 2848e10... glide up
>>>>>>> glide up
=======
version: 9000745401d186602c2ae63ffca12ed4233a968b
>>>>>>> Fix sticky sessions Docker/Marathon labels
subpackages: subpackages:
- context - context
- digest - digest
@ -143,13 +116,13 @@ imports:
- types/time - types/time
- types/versions - types/versions
- name: github.com/docker/go-connections - name: github.com/docker/go-connections
version: 0bad1a3951398f88ef4dd75fdb42af374430be89 version: 990a1a1a70b0da4c4cb70e117971a4f0babfbf1a
subpackages: subpackages:
- nat - nat
- sockets - sockets
- tlsconfig - tlsconfig
- name: github.com/docker/go-units - name: github.com/docker/go-units
version: eb879ae3e2b84e2a142af415b679ddeda47ec71c version: f2d77a61e3c169b43402a0a1e84f06daf29b8190
- name: github.com/docker/libcompose - name: github.com/docker/libcompose
version: d1876c1d68527a49c0aac22a0b161acc7296b740 version: d1876c1d68527a49c0aac22a0b161acc7296b740
subpackages: subpackages:
@ -168,7 +141,7 @@ imports:
- version - version
- yaml - yaml
- name: github.com/docker/libkv - name: github.com/docker/libkv
version: aabc039ad04deb721e234f99cd1b4aa28ac71a40 version: 35d3e2084c650109e7bcc7282655b1bc8ba924ff
subpackages: subpackages:
- store - store
- store/boltdb - store/boltdb
@ -178,25 +151,13 @@ imports:
- name: github.com/donovanhide/eventsource - name: github.com/donovanhide/eventsource
version: fd1de70867126402be23c306e1ce32828455d85b version: fd1de70867126402be23c306e1ce32828455d85b
- name: github.com/elazarl/go-bindata-assetfs - name: github.com/elazarl/go-bindata-assetfs
version: e1a2a7ec64b07d04ac9ebb072404fe8b7b60de1b version: 57eb5e1fc594ad4b0b1dbea7b286d299e0cb43c2
- name: github.com/gambol99/go-marathon - name: github.com/gambol99/go-marathon
version: a558128c87724cd7430060ef5aedf39f83937f55 version: a558128c87724cd7430060ef5aedf39f83937f55
- name: github.com/go-check/check - name: github.com/go-check/check
version: 11d3bc7aa68e238947792f30573146a3231fc0f1 version: 4f90aeace3a26ad7021961c297b22c42160c7b25
- name: github.com/gogo/protobuf - name: github.com/gogo/protobuf
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b version: e33835a643a970c11ac74f6333f5f6866387a101
<<<<<<< 3d7c44735a6fe792ad7fc9f074034a260e53bb0d
version: 89f1976ff373a3e549675d2f212c10f98b6c6316
=======
<<<<<<< HEAD
version: a11c89fbb0ad4acfa8abc4a4d5f7e27c477169b1
=======
version: a4cceea7a401a73fefafd1a21fedbd4694124a82
>>>>>>> 2848e10... glide up
>>>>>>> glide up
=======
version: a4cceea7a401a73fefafd1a21fedbd4694124a82
>>>>>>> Fix sticky sessions Docker/Marathon labels
subpackages: subpackages:
- proto - proto
- name: github.com/golang/glog - name: github.com/golang/glog
@ -208,39 +169,16 @@ imports:
- name: github.com/gorilla/context - name: github.com/gorilla/context
version: aed02d124ae4a0e94fea4541c8effd05bf0c8296 version: aed02d124ae4a0e94fea4541c8effd05bf0c8296
- name: github.com/hashicorp/consul - name: github.com/hashicorp/consul
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b version: fce7d75609a04eeb9d4bf41c8dc592aac18fc97d
<<<<<<< 3d7c44735a6fe792ad7fc9f074034a260e53bb0d
version: d5b7530ec593f1ec2a8f8a7c145bcadafa88b572
=======
<<<<<<< HEAD
version: 67a03d57b5851011e5601ee6e7e3d05699548462
=======
version: d6aa033793a68b509d336b3bac6ebe36ac0ef818
>>>>>>> 2848e10... glide up
>>>>>>> glide up
=======
version: d6aa033793a68b509d336b3bac6ebe36ac0ef818
>>>>>>> Fix sticky sessions Docker/Marathon labels
subpackages: subpackages:
- api - api
- name: github.com/hashicorp/go-cleanhttp - name: github.com/hashicorp/go-cleanhttp
version: ad28ea4487f05916463e2423a55166280e8254b5 version: 875fb671b3ddc66f8e2f0acc33829c8cb989a38d
- name: github.com/hashicorp/serf - name: github.com/hashicorp/serf
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b version: 6c4672d66fc6312ddde18399262943e21175d831
<<<<<<< 3d7c44735a6fe792ad7fc9f074034a260e53bb0d
version: b7a120a5fc494f6dd5e858f42fd0fd4022d6320f
=======
<<<<<<< HEAD
version: 555e0dcbb180ecbd03431adc28226bb3192558bc
=======
version: a01569795d12afbdb3698739b614e057ee289fa0
>>>>>>> 2848e10... glide up
>>>>>>> glide up
=======
version: a01569795d12afbdb3698739b614e057ee289fa0
>>>>>>> Fix sticky sessions Docker/Marathon labels
subpackages: subpackages:
- coordinate - coordinate
- serf
- name: github.com/jarcoal/httpmock - name: github.com/jarcoal/httpmock
version: 145b10d659265440f062c31ea15326166bae56ee version: 145b10d659265440f062c31ea15326166bae56ee
- name: github.com/libkermit/compose - name: github.com/libkermit/compose
@ -282,7 +220,7 @@ imports:
- name: github.com/miekg/dns - name: github.com/miekg/dns
version: 5d001d020961ae1c184f9f8152fdc73810481677 version: 5d001d020961ae1c184f9f8152fdc73810481677
- name: github.com/mitchellh/mapstructure - name: github.com/mitchellh/mapstructure
version: ca63d7c062ee3c9f34db231e352b60012b4fd0c1 version: d2dd0262208475919e1a362f675cfc0e7c10e905
- name: github.com/moul/http2curl - name: github.com/moul/http2curl
version: b1479103caacaa39319f75e7f57fc545287fca0d version: b1479103caacaa39319f75e7f57fc545287fca0d
- name: github.com/NYTimes/gziphandler - name: github.com/NYTimes/gziphandler
@ -290,25 +228,11 @@ imports:
- name: github.com/ogier/pflag - name: github.com/ogier/pflag
version: 45c278ab3607870051a2ea9040bb85fcb8557481 version: 45c278ab3607870051a2ea9040bb85fcb8557481
- name: github.com/opencontainers/runc - name: github.com/opencontainers/runc
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b version: 1a81e9ab1f138c091fe5c86d0883f87716088527
<<<<<<< 3d7c44735a6fe792ad7fc9f074034a260e53bb0d
version: d9fec4c63b089ddfc267194ecb6cda58a13f072c
=======
<<<<<<< HEAD
version: 38e0df9ec67c05e73b656c02c9222f24c1683d73
>>>>>>> glide up
subpackages: subpackages:
- libcontainer/user - libcontainer/user
- name: github.com/parnurzeal/gorequest - name: github.com/parnurzeal/gorequest
version: 29ced6f360a5ac3823a3675b4e29fbab336cc186 version: 045012d33ef41ea146c1b675df9296d0dc1a212d
=======
=======
>>>>>>> Fix sticky sessions Docker/Marathon labels
version: 0f764571384a3ff16c6fed25ace5b7c83f0f0379
subpackages:
- libcontainer/user
- name: github.com/parnurzeal/gorequest
version: e213a02fb0082d41e66996deeaab5ae96039d913
- name: github.com/pmezard/go-difflib - name: github.com/pmezard/go-difflib
version: d8ed2627bdf02c080bf22230dbb337003b7aba2d version: d8ed2627bdf02c080bf22230dbb337003b7aba2d
subpackages: subpackages:
@ -322,16 +246,16 @@ imports:
- name: github.com/Sirupsen/logrus - name: github.com/Sirupsen/logrus
version: a283a10442df8dc09befd873fab202bf8a253d6a version: a283a10442df8dc09befd873fab202bf8a253d6a
- name: github.com/streamrail/concurrent-map - name: github.com/streamrail/concurrent-map
version: 430cc620f036386dacc40e603921cc607f37366b version: 65a174a3a4188c0b7099acbc6cfa0c53628d3287
- name: github.com/stretchr/objx - name: github.com/stretchr/objx
version: cbeaeb16a013161a98496fad62933b1d21786672 version: cbeaeb16a013161a98496fad62933b1d21786672
- name: github.com/stretchr/testify - name: github.com/stretchr/testify
version: 976c720a22c8eb4eb6a0b4348ad85ad12491a506 version: d77da356e56a7428ad25149ca77381849a6a5232
subpackages: subpackages:
- assert - assert
- mock - mock
- name: github.com/thoas/stats - name: github.com/thoas/stats
version: 152b5d051953fdb6e45f14b6826962aadc032324 version: 79b768ff1780f4e5b0ed132e192bfeefe9f85a9c
- name: github.com/tv42/zbase32 - name: github.com/tv42/zbase32
version: 03389da7e0bf9844767f82690f4d68fc097a1306 version: 03389da7e0bf9844767f82690f4d68fc097a1306
- name: github.com/ugorji/go - name: github.com/ugorji/go
@ -339,7 +263,7 @@ imports:
subpackages: subpackages:
- codec - codec
- name: github.com/unrolled/render - name: github.com/unrolled/render
version: 7bc415efc1b94ad17b0fc642cb50b3e2465027e7 version: 198ad4d8b8a4612176b804ca10555b222a086b40
- name: github.com/vdemeester/docker-events - name: github.com/vdemeester/docker-events
version: be74d4929ec1ad118df54349fda4b0cba60f849b version: be74d4929ec1ad118df54349fda4b0cba60f849b
- name: github.com/vdemeester/shakers - name: github.com/vdemeester/shakers
@ -361,11 +285,7 @@ imports:
- name: github.com/vulcand/route - name: github.com/vulcand/route
version: cb89d787ddbb1c5849a7ac9f79004c1fd12a4a32 version: cb89d787ddbb1c5849a7ac9f79004c1fd12a4a32
- name: github.com/vulcand/vulcand - name: github.com/vulcand/vulcand
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b
version: 643ca8acff8386e3b276f6feb8ba9b5893dbc4a2
=======
version: 28a4e5c0892167589737b95ceecbcef00295be50 version: 28a4e5c0892167589737b95ceecbcef00295be50
>>>>>>> Fix sticky sessions Docker/Marathon labels
subpackages: subpackages:
- conntracker - conntracker
- plugin - plugin
@ -395,27 +315,11 @@ imports:
- name: gopkg.in/fsnotify.v1 - name: gopkg.in/fsnotify.v1
version: a8a77c9133d2d6fd8334f3260d06f60e8d80a5fb version: a8a77c9133d2d6fd8334f3260d06f60e8d80a5fb
- name: gopkg.in/mgo.v2 - name: gopkg.in/mgo.v2
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b
version: 22287bab4379e1fbf6002fb4eb769888f3fb224c
subpackages:
- bson
- name: gopkg.in/square/go-jose.v1
<<<<<<< 3d7c44735a6fe792ad7fc9f074034a260e53bb0d
version: aa2e30fdd1fe9dd3394119af66451ae790d50e0d
=======
<<<<<<< HEAD
version: 139276ceb5afbf13e636c44e9382f0ca75c12ba3
=======
version: a3927f83df1b1516f9e9dec71839c93e6bcf1db0
>>>>>>> 2848e10... glide up
>>>>>>> glide up
=======
version: 29cc868a5ca65f401ff318143f9408d02f4799cc version: 29cc868a5ca65f401ff318143f9408d02f4799cc
subpackages: subpackages:
- bson - bson
- name: gopkg.in/square/go-jose.v1 - name: gopkg.in/square/go-jose.v1
version: a3927f83df1b1516f9e9dec71839c93e6bcf1db0 version: e3f973b66b91445ec816dd7411ad1b6495a5a2fc
>>>>>>> Fix sticky sessions Docker/Marathon labels
subpackages: subpackages:
- cipher - cipher
- json - json
@ -433,13 +337,9 @@ testImports:
- name: github.com/libkermit/docker-check - name: github.com/libkermit/docker-check
version: cbe0ef03b3d23070eac4d00ba8828f2cc7f7e5a3 version: cbe0ef03b3d23070eac4d00ba8828f2cc7f7e5a3
- name: github.com/spf13/pflag - name: github.com/spf13/pflag
<<<<<<< df225d9170aa2efb251cb74f0a58b2952315fe2b
version: 08b1a584251b5b62f458943640fc8ebd4d50aaa5
=======
version: 5644820622454e71517561946e3d94b9f9db6842 version: 5644820622454e71517561946e3d94b9f9db6842
>>>>>>> Fix sticky sessions Docker/Marathon labels
- name: github.com/vbatts/tar-split - name: github.com/vbatts/tar-split
version: bd4c5d64c3e9297f410025a3b1bd0c58f659e721 version: 6810cedb21b2c3d0b9bb8f9af12ff2dc7a2f14df
subpackages: subpackages:
- archive/tar - archive/tar
- tar/asm - tar/asm
@ -449,4 +349,4 @@ testImports:
- name: github.com/xeipuuv/gojsonreference - name: github.com/xeipuuv/gojsonreference
version: e02fc20de94c78484cd5ffb007f8af96be030a45 version: e02fc20de94c78484cd5ffb007f8af96be030a45
- name: github.com/xeipuuv/gojsonschema - name: github.com/xeipuuv/gojsonschema
version: e4f482d0deea5bfc0522ab4582c5fdbd2edc98ad version: 00f9fafb54d2244d291b86ab63d12c38bd5c3886

View file

@ -262,19 +262,27 @@ func (provider *Docker) loadDockerConfig(containersInspected []dockerData) *type
}, containersInspected).([]dockerData) }, containersInspected).([]dockerData)
frontends := map[string][]dockerData{} frontends := map[string][]dockerData{}
backends := map[string]dockerData{}
servers := map[string][]dockerData{}
for _, container := range filteredContainers { for _, container := range filteredContainers {
frontendName := provider.getFrontendName(container) frontendName := provider.getFrontendName(container)
frontends[frontendName] = append(frontends[frontendName], container) frontends[frontendName] = append(frontends[frontendName], container)
frontends[frontendName] = append(frontends[frontendName], container) backendName := provider.getBackend(container)
backends[backendName] = container
servers[backendName] = append(servers[backendName], container)
} }
templateObjects := struct { templateObjects := struct {
Containers []dockerData Containers []dockerData
Frontends map[string][]dockerData Frontends map[string][]dockerData
Backends map[string]dockerData
Servers map[string][]dockerData
Domain string Domain string
}{ }{
filteredContainers, filteredContainers,
frontends, frontends,
backends,
servers,
provider.Domain, provider.Domain,
} }

View file

@ -940,7 +940,6 @@ func TestDockerLoadDockerConfig(t *testing.T) {
}, },
}, },
CircuitBreaker: nil, CircuitBreaker: nil,
LoadBalancer: &types.LoadBalancer{Sticky: false, Method: ""},
}, },
}, },
}, },
@ -1027,7 +1026,6 @@ func TestDockerLoadDockerConfig(t *testing.T) {
}, },
}, },
CircuitBreaker: nil, CircuitBreaker: nil,
LoadBalancer: &types.LoadBalancer{Sticky: false, Method: ""},
}, },
}, },
}, },

View file

@ -107,7 +107,6 @@ func TestMarathonLoadConfig(t *testing.T) {
}, },
}, },
CircuitBreaker: nil, CircuitBreaker: nil,
LoadBalancer: &types.LoadBalancer{Sticky: false},
}, },
}, },
}, },

View file

@ -546,12 +546,11 @@ func (server *Server) loadConfig(configurations configs, globalConfiguration Glo
} }
stickysession := configuration.Backends[frontend.Backend].LoadBalancer.Sticky stickysession := configuration.Backends[frontend.Backend].LoadBalancer.Sticky
var cookiename string cookiename := "_TRAEFIK_BACKEND"
var sticky *roundrobin.StickySession var sticky *roundrobin.StickySession
if stickysession { if stickysession {
sticky = roundrobin.NewStickySession(cookiename) sticky = roundrobin.NewStickySession(cookiename)
cookiename = "_TRAEFIK_BACKEND"
} }
switch lbMethod { switch lbMethod {

View file

@ -1,24 +1,29 @@
[backends]{{range .Containers}} {{$backendServers := .Servers}}
{{if hasCircuitBreakerLabel .}} [backends]{{range $backendName, $backend := .Backends}}
[backends.backend-{{getBackend .}}.circuitbreaker] {{if hasCircuitBreakerLabel $backend}}
expression = "{{getCircuitBreakerExpression .}}" [backends.backend-{{$backendName}}.circuitbreaker]
expression = "{{getCircuitBreakerExpression $backend}}"
{{end}} {{end}}
{{if hasLoadBalancerLabel .}} {{if hasLoadBalancerLabel $backend}}
[backends.backend-{{getBackend .}}.loadbalancer] [backends.backend-{{$backendName}}.loadbalancer]
method = "{{getLoadBalancerMethod .}}" method = "{{getLoadBalancerMethod $backend}}"
sticky = {{getSticky . }} sticky = {{getSticky $backend}}
{{end}} {{end}}
{{if hasMaxConnLabels .}} {{if hasMaxConnLabels $backend}}
[backends.backend-{{getBackend .}}.maxconn] [backends.backend-{{$backendName}}.maxconn]
amount = {{getMaxConnAmount . }} amount = {{getMaxConnAmount $backend}}
extractorfunc = "{{getMaxConnExtractorFunc . }}" extractorfunc = "{{getMaxConnExtractorFunc $backend}}"
{{end}}
{{$servers := index $backendServers $backendName}}
{{range $serverName, $server := $servers}}
[backends.backend-{{$backendName}}.servers.server-{{$server.Name | replace "/" "" | replace "." "-"}}]
url = "{{getProtocol $server}}://{{getIPAddress $server}}:{{getPort $server}}"
weight = {{getWeight $server}}
{{end}} {{end}}
[backends.backend-{{getBackend .}}.servers.server-{{.Name | replace "/" "" | replace "." "-"}}]
url = "{{getProtocol .}}://{{getIPAddress .}}:{{getPort .}}"
weight = {{getWeight .}}
{{end}} {{end}}
[frontends]{{range $frontend, $containers := .Frontends}} [frontends]{{range $frontend, $containers := .Frontends}}

View file

@ -12,9 +12,11 @@
{{end}} {{end}}
{{$loadBalancer := Get "" . "/loadbalancer/" "method"}} {{$loadBalancer := Get "" . "/loadbalancer/" "method"}}
{{$sticky := Get "false" . "/loadbalancer/" "sticky"}}
{{with $loadBalancer}} {{with $loadBalancer}}
[backends."{{Last $backend}}".loadBalancer] [backends."{{Last $backend}}".loadBalancer]
method = "{{$loadBalancer}}" method = "{{$loadBalancer}}"
sticky = {{$sticky}}
{{end}} {{end}}
{{$maxConnAmt := Get "" . "/maxconn/" "amount"}} {{$maxConnAmt := Get "" . "/maxconn/" "amount"}}