diff --git a/Makefile b/Makefile
index 90e54c3a7..47a73dbea 100644
--- a/Makefile
+++ b/Makefile
@@ -59,8 +59,8 @@ test-integration: build ## run the integration tests
$(DOCKER_RUN_TRAEFIK) ./script/make.sh generate binary test-integration
TEST_HOST=1 ./script/make.sh test-integration
-validate: build ## validate code, vendor and autogen
- $(DOCKER_RUN_TRAEFIK) ./script/make.sh generate validate-lint validate-misspell validate-vendor validate-autogen
+validate: build ## validate code, vendor
+ $(DOCKER_RUN_TRAEFIK) ./script/make.sh generate validate-lint validate-misspell validate-vendor
build: dist
docker build $(DOCKER_BUILD_ARGS) -t "$(TRAEFIK_DEV_IMAGE)" -f build.Dockerfile .
diff --git a/autogen/gentemplates/gen.go b/autogen/gentemplates/gen.go
deleted file mode 100644
index 9ad55207d..000000000
--- a/autogen/gentemplates/gen.go
+++ /dev/null
@@ -1,2609 +0,0 @@
-// Code generated by go-bindata.
-// sources:
-// templates/consul_catalog.tmpl
-// templates/docker.tmpl
-// templates/ecs.tmpl
-// templates/eureka.tmpl
-// templates/kubernetes.tmpl
-// templates/kv.tmpl
-// templates/marathon.tmpl
-// templates/mesos.tmpl
-// templates/notFound.tmpl
-// templates/rancher.tmpl
-// DO NOT EDIT!
-
-package gentemplates
-
-import (
- "fmt"
- "io/ioutil"
- "os"
- "path/filepath"
- "strings"
- "time"
-)
-
-type asset struct {
- bytes []byte
- info os.FileInfo
-}
-
-type bindataFileInfo struct {
- name string
- size int64
- mode os.FileMode
- modTime time.Time
-}
-
-func (fi bindataFileInfo) Name() string {
- return fi.name
-}
-func (fi bindataFileInfo) Size() int64 {
- return fi.size
-}
-func (fi bindataFileInfo) Mode() os.FileMode {
- return fi.mode
-}
-func (fi bindataFileInfo) ModTime() time.Time {
- return fi.modTime
-}
-func (fi bindataFileInfo) IsDir() bool {
- return false
-}
-func (fi bindataFileInfo) Sys() interface{} {
- return nil
-}
-
-var _templatesConsul_catalogTmpl = []byte(`[backends]
-{{range $service := .Services}}
- {{ $backendName := getServiceBackendName $service }}
-
- {{ $circuitBreaker := getCircuitBreaker $service.TraefikLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $service.TraefikLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
-
-
- {{ $loadBalancer := getLoadBalancer $service.TraefikLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $service.TraefikLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $service.TraefikLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $service.TraefikLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
-{{end}}
-{{range $index, $node := .Nodes}}
- {{ $server := getServer $node }}
- [backends."backend-{{ getNodeBackendName $node }}".servers."{{ getServerName $node $index }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
-
-{{end}}
-
-[frontends]
-{{range $service := .Services}}
-
- [frontends."frontend-{{ $service.ServiceName }}"]
- backend = "backend-{{ getServiceBackendName $service }}"
- priority = {{ getPriority $service.TraefikLabels }}
- passHostHeader = {{ getPassHostHeader $service.TraefikLabels }}
- passTLSCert = {{ getPassTLSCert $service.TraefikLabels }}
-
- entryPoints = [{{range getFrontEndEntryPoints $service.TraefikLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $service.TraefikLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $service.TraefikLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $service.ServiceName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $service.TraefikLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $service.ServiceName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $service.ServiceName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $service.TraefikLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $service.ServiceName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $service.TraefikLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $service.ServiceName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $service.ServiceName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $service.TraefikLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $service.ServiceName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $service.TraefikLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $service.ServiceName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $service.ServiceName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $service.ServiceName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $service.ServiceName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders}}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $service.ServiceName }}".routes."route-host-{{ $service.ServiceName }}"]
- rule = "{{ getFrontendRule $service }}"
-
-{{end}}
-`)
-
-func templatesConsul_catalogTmplBytes() ([]byte, error) {
- return _templatesConsul_catalogTmpl, nil
-}
-
-func templatesConsul_catalogTmpl() (*asset, error) {
- bytes, err := templatesConsul_catalogTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/consul_catalog.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesDockerTmpl = []byte(`{{$backendServers := .Servers}}
-[backends]
-{{range $backendName, $servers := .Servers}}
-{{ $backend := index $servers 0 }}
-
- {{ $circuitBreaker := getCircuitBreaker $backend.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $backend.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $backend.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $backend.SegmentLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $backend.SegmentLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $backend.SegmentLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $servers }}
- [backends."backend-{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontendName, $containers := .Frontends }}
- {{ $container := index $containers 0 }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ getBackendName $container }}"
- priority = {{ getPriority $container.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $container.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $container.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $container.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $container.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Issuer }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $container.SegmentLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- realm = "{{ $auth.Basic.Realm }}"
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $container.SegmentLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $container.SegmentLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $container.SegmentLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $container.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $container.SegmentLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-frontend-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $container $container.SegmentLabels }}"
-
-{{end}}
-`)
-
-func templatesDockerTmplBytes() ([]byte, error) {
- return _templatesDockerTmpl, nil
-}
-
-func templatesDockerTmpl() (*asset, error) {
- bytes, err := templatesDockerTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/docker.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesEcsTmpl = []byte(`[backends]
-{{range $serviceName, $instances := .Services }}
- {{ $firstInstance := index $instances 0 }}
-
- {{ $circuitBreaker := getCircuitBreaker $firstInstance.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $serviceName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $firstInstance.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $serviceName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $firstInstance.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $serviceName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $serviceName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $firstInstance.SegmentLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $serviceName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $firstInstance.SegmentLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $serviceName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $serviceName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $firstInstance.SegmentLabels }}
- {{if $buffering }}
- [backends."backend-{{ $serviceName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $instances }}
- [backends."backend-{{ $serviceName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $serviceName, $instances := .Services }}
-{{range $instance := filterFrontends $instances }}
-
- {{ $frontendName := getFrontendName $instance }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ $serviceName }}"
- priority = {{ getPriority $instance.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $instance.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $instance.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $instance.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $instance.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Issuer }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $instance.SegmentLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $instance.SegmentLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $instance.SegmentLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $instance.SegmentLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $instance.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $instance.SegmentLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-frontend-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $instance }}"
-
-{{end}}
-{{end}}`)
-
-func templatesEcsTmplBytes() ([]byte, error) {
- return _templatesEcsTmpl, nil
-}
-
-func templatesEcsTmpl() (*asset, error) {
- bytes, err := templatesEcsTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/ecs.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesEurekaTmpl = []byte(`[backends]
-{{range $app := .Applications }}
-
- [backends.backend-{{ $app.Name }}]
-
- {{range $instance := .Instances }}
- [backends."backend-{{ $app.Name }}".servers."server-{{ getInstanceID $instance }}"]
- url = "{{ getProtocol $instance }}://{{ .IpAddr }}:{{ getPort $instance }}"
- weight = {{ getWeight $instance }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $app := .Applications }}
-
- [frontends."frontend-{{ $app.Name }}"]
- backend = "backend-{{ $app.Name }}"
- entryPoints = ["http"]
-
- [frontends."frontend-{{ $app.Name }}".routes."route-host{{ $app.Name }}"]
- rule = "Host:{{ $app.Name | tolower }}"
-
-{{end}}
-`)
-
-func templatesEurekaTmplBytes() ([]byte, error) {
- return _templatesEurekaTmpl, nil
-}
-
-func templatesEurekaTmpl() (*asset, error) {
- bytes, err := templatesEurekaTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/eureka.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesKubernetesTmpl = []byte(`[backends]
-{{range $backendName, $backend := .Backends }}
-
- [backends."{{ $backendName }}"]
-
- {{if $backend.CircuitBreaker }}
- [backends."{{ $backendName }}".circuitBreaker]
- expression = "{{ $backend.CircuitBreaker.Expression }}"
- {{end}}
-
- {{if $backend.ResponseForwarding }}
- [backends."{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $backend.responseForwarding.FlushInterval }}"
- {{end}}
-
- [backends."{{ $backendName }}".loadBalancer]
- method = "{{ $backend.LoadBalancer.Method }}"
- {{if $backend.LoadBalancer.Stickiness }}
- [backends."{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $backend.LoadBalancer.Stickiness.CookieName }}"
- {{end}}
-
- {{if $backend.MaxConn }}
- [backends."{{ $backendName }}".maxConn]
- amount = {{ $backend.MaxConn.Amount }}
- extractorFunc = "{{ $backend.MaxConn.ExtractorFunc }}"
- {{end}}
-
- {{if $backend.Buffering }}
- [backends."{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $backend.Buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $backend.Buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $backend.Buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $backend.Buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $backend.Buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := $backend.Servers }}
- [backends."{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontendName, $frontend := .Frontends }}
-
- [frontends."{{ $frontendName }}"]
- backend = "{{ $frontend.Backend }}"
- priority = {{ $frontend.Priority }}
- passHostHeader = {{ $frontend.PassHostHeader }}
- passTLSCert = {{ $frontend.PassTLSCert }}
-
- entryPoints = [{{range $frontend.EntryPoints }}
- "{{.}}",
- {{end}}]
-
- {{if $frontend.Auth }}
- [frontends."{{ $frontendName }}".auth]
- headerField = "X-WebAuth-User"
-
- {{if $frontend.Auth.Basic }}
- [frontends."{{ $frontendName }}".auth.basic]
- removeHeader = {{$frontend.Auth.Basic.RemoveHeader}}
- users = [{{range $frontend.Auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $frontend.Auth.Digest }}
- [frontends."{{ $frontendName }}".auth.digest]
- removeHeader = {{$frontend.Auth.Digest.RemoveHeader}}
- users = [{{range $frontend.Auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $frontend.Auth.Forward }}
- [frontends."{{ $frontendName }}".auth.forward]
- address = "{{ $frontend.Auth.Forward.Address }}"
- authResponseHeaders = [{{range $frontend.Auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- trustForwardHeader = {{ $frontend.Auth.Forward.TrustForwardHeader }}
- {{if $frontend.Auth.Forward.TLS }}
- [frontends."{{ $frontendName }}".auth.forward.tls]
- cert = """{{ $frontend.Auth.Forward.TLS.Cert }}"""
- key = """{{ $frontend.Auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $frontend.Auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{end}}
-
- {{if $frontend.WhiteList }}
- [frontends."{{ $frontendName }}".whiteList]
- sourceRange = [{{range $frontend.Whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $frontend.Whitelist.IPStrategy }}
- [frontends."{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $frontend.Whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $frontend.Whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{if $frontend.Redirect }}
- [frontends."{{ $frontendName }}".redirect]
- entryPoint = "{{ $frontend.Redirect.EntryPoint }}"
- regex = "{{ $frontend.Redirect.Regex }}"
- replacement = "{{ $frontend.Redirect.Replacement }}"
- permanent = {{ $frontend.Redirect.Permanent }}
- {{end}}
-
- {{if $frontend.Errors }}
- [frontends."{{ $frontendName }}".errors]
- {{range $pageName, $page := $frontend.Errors }}
- [frontends."{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{if $frontend.RateLimit }}
- [frontends."{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $frontend.RateLimit.ExtractorFunc }}"
- [frontends."{{ $frontendName }}".rateLimit.rateSet]
- {{range $limitName, $limit := $frontend.RateLimit.RateSet }}
- [frontends."{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{if $frontend.PassTLSClientCert }}
- [frontends."{{ $frontendName }}".passTLSClientCert]
- pem = {{ $frontend.PassTLSClientCert.PEM }}
- {{ $infos := $frontend.PassTLSClientCert.Infos }}
- {{if $infos }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{if $frontend.Headers }}
- [frontends."{{ $frontendName }}".headers]
- SSLRedirect = {{ $frontend.Headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $frontend.Headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $frontend.Headers.SSLHost }}"
- SSLForceHost = {{ $frontend.Headers.SSLForceHost }}
- STSSeconds = {{ $frontend.Headers.STSSeconds }}
- STSIncludeSubdomains = {{ $frontend.Headers.STSIncludeSubdomains }}
- STSPreload = {{ $frontend.Headers.STSPreload }}
- ForceSTSHeader = {{ $frontend.Headers.ForceSTSHeader }}
- FrameDeny = {{ $frontend.Headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $frontend.Headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $frontend.Headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $frontend.Headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $frontend.Headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $frontend.Headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $frontend.Headers.PublicKey }}"
- ReferrerPolicy = "{{ $frontend.Headers.ReferrerPolicy }}"
- IsDevelopment = {{ $frontend.Headers.IsDevelopment }}
- {{if $frontend.Headers.AllowedHosts }}
- AllowedHosts = [{{range $frontend.Headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{if $frontend.Headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $frontend.Headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{if $frontend.Headers.CustomRequestHeaders }}
- [frontends."{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $frontend.Headers.CustomRequestHeaders }}
- {{ $k }} = "{{ $v }}"
- {{end}}
- {{end}}
- {{if $frontend.Headers.CustomResponseHeaders }}
- [frontends."{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $frontend.Headers.CustomResponseHeaders }}
- {{ $k }} = "{{ $v }}"
- {{end}}
- {{end}}
- {{if $frontend.Headers.SSLProxyHeaders }}
- [frontends."{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $frontend.Headers.SSLProxyHeaders }}
- {{ $k }} = "{{ $v }}"
- {{end}}
- {{end}}
- {{end}}
-
- {{range $routeName, $route := $frontend.Routes }}
- [frontends."{{ $frontendName }}".routes."{{ $routeName }}"]
- rule = "{{ $route.Rule }}"
- {{end}}
-
-{{end}}
-
-{{range $tls := .TLS }}
-[[tls]]
- entryPoints = [{{range $tls.EntryPoints }}
- "{{.}}",
- {{end}}]
- [tls.certificate]
- certFile = """{{ $tls.Certificate.CertFile }}"""
- keyFile = """{{ $tls.Certificate.KeyFile }}"""
-{{end}}
-`)
-
-func templatesKubernetesTmplBytes() ([]byte, error) {
- return _templatesKubernetesTmpl, nil
-}
-
-func templatesKubernetesTmpl() (*asset, error) {
- bytes, err := templatesKubernetesTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/kubernetes.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesKvTmpl = []byte(`[backends]
-{{range $backend := List .Prefix "/backends/" }}
- {{ $backendName := Last $backend }}
-
- {{ $circuitBreaker := getCircuitBreaker $backend }}
- {{if $circuitBreaker }}
- [backends."{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $backend }}
- {{if $responseForwarding }}
- [backends."{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.flushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $backend }}
- {{if $loadBalancer }}
- [backends."{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $backend }}
- {{if $maxConn }}
- [backends."{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $backend }}
- {{if $healthCheck }}
- [backends."{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $backend }}
- {{if $buffering }}
- [backends."{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $backend}}
- [backends."{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontend := List .Prefix "/frontends/" }}
- {{ $frontendName := Last $frontend }}
-
- [frontends."{{ $frontendName }}"]
- backend = "{{ getBackendName $frontend }}"
- priority = {{ getPriority $frontend }}
- passHostHeader = {{ getPassHostHeader $frontend }}
- passTLSCert = {{ getPassTLSCert $frontend }}
-
- entryPoints = [{{range getEntryPoints $frontend }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $frontend }}
- {{if $tlsClientCert }}
- [frontends."{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $frontend }}
- {{if $auth }}
- [frontends."{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $frontend }}
- {{if $whitelist }}
- [frontends."{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $frontend }}
- {{if $redirect }}
- [frontends."{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $frontend }}
- {{if $errorPages }}
- [frontends."{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."{{$frontendName}}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "{{$page.Backend}}"
- query = "{{$page.Query}}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $frontend }}
- {{if $rateLimit }}
- [frontends."{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."{{ $frontendName }}".rateLimit.rateSet]
- {{range $limitName, $rateLimit := $rateLimit.RateSet }}
- [frontends."{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $rateLimit.Period }}"
- average = {{ $rateLimit.Average }}
- burst = {{ $rateLimit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $frontend }}
- {{if $headers }}
- [frontends."{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders}}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{range $routeName, $route := getRoutes $frontend }}
- [frontends."{{ $frontendName }}".routes."{{ $routeName }}"]
- rule = "{{ $route.Rule }}"
- {{end}}
-
-{{end}}
-
-{{range $tls := getTLSSection .Prefix }}
-[[tls]]
-
- entryPoints = [{{range $tls.EntryPoints }}
- "{{.}}",
- {{end}}]
-
- [tls.certificate]
- certFile = """{{ $tls.Certificate.CertFile }}"""
- keyFile = """{{ $tls.Certificate.KeyFile }}"""
-
-{{end}}
-`)
-
-func templatesKvTmplBytes() ([]byte, error) {
- return _templatesKvTmpl, nil
-}
-
-func templatesKvTmpl() (*asset, error) {
- bytes, err := templatesKvTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/kv.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesMarathonTmpl = []byte(`{{ $apps := .Applications }}
-
-[backends]
-{{range $backendName, $app := $apps }}
-
- [backends."{{ $backendName }}"]
-
- {{ $circuitBreaker := getCircuitBreaker $app.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $app.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $app.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $app.SegmentLabels }}
- {{if $maxConn }}
- [backends."{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $app.SegmentLabels }}
- {{if $healthCheck }}
- [backends."{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends.{{ $backendName }}.healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $app.SegmentLabels }}
- {{if $buffering }}
- [backends."{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $app }}
- [backends."{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $backendName, $app := $apps }}
- {{ $frontendName := getFrontendName $app }}
-
- [frontends."{{ $frontendName }}"]
- backend = "{{ $backendName }}"
- priority = {{ getPriority $app.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $app.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $app.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $app.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $app.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $app.SegmentLabels }}
- {{if $auth }}
- [frontends."{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $app.SegmentLabels }}
- {{if $whitelist }}
- [frontends."{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $app.SegmentLabels }}
- {{if $redirect }}
- [frontends."{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $app.SegmentLabels }}
- {{if $errorPages }}
- [frontends."{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $app.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $app.SegmentLabels }}
- {{if $headers }}
- [frontends."{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."{{ $frontendName }}".routes."route-host{{ $app.ID | replace "/" "-" }}{{ getSegmentNameSuffix $app.SegmentName }}"]
- rule = "{{ getFrontendRule $app }}"
-
-{{end}}
-`)
-
-func templatesMarathonTmplBytes() ([]byte, error) {
- return _templatesMarathonTmpl, nil
-}
-
-func templatesMarathonTmpl() (*asset, error) {
- bytes, err := templatesMarathonTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/marathon.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesMesosTmpl = []byte(`[backends]
-{{range $applicationName, $tasks := .ApplicationsTasks }}
- {{ $app := index $tasks 0 }}
- {{ $backendName := getBackendName $app }}
-
- [backends."backend-{{ $backendName }}"]
-
- {{ $circuitBreaker := getCircuitBreaker $app.TraefikLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $app.TraefikLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $app.TraefikLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $app.TraefikLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $app.TraefikLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $app.TraefikLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $tasks }}
- [backends."backend-{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-{{end}}
-
-[frontends]
-{{range $applicationName, $tasks := .ApplicationsTasks }}
- {{ $app := index $tasks 0 }}
- {{ $frontendName := getFrontEndName $app }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ getBackendName $app }}"
- priority = {{ getPriority $app.TraefikLabels }}
- passHostHeader = {{ getPassHostHeader $app.TraefikLabels }}
- passTLSCert = {{ getPassTLSCert $app.TraefikLabels }}
-
- entryPoints = [{{range getEntryPoints $app.TraefikLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $app.TraefikLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $app.TraefikLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader}}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader}}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $app.TraefikLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $app.TraefikLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $app.TraefikLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $app.TraefikLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $app.TraefikLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-host-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $app }}"
-
-{{end}}`)
-
-func templatesMesosTmplBytes() ([]byte, error) {
- return _templatesMesosTmpl, nil
-}
-
-func templatesMesosTmpl() (*asset, error) {
- bytes, err := templatesMesosTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/mesos.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesNotfoundTmpl = []byte(`
-
-
- Traefik
-
-
- Ohhhh man, this is bad...
-
-`)
-
-func templatesNotfoundTmplBytes() ([]byte, error) {
- return _templatesNotfoundTmpl, nil
-}
-
-func templatesNotfoundTmpl() (*asset, error) {
- bytes, err := templatesNotfoundTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/notFound.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-var _templatesRancherTmpl = []byte(`{{ $backendServers := .Backends }}
-[backends]
-{{range $backendName, $backend := .Backends }}
-
- [backends."backend-{{ $backendName }}"]
-
- {{ $circuitBreaker := getCircuitBreaker $backend.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $backend.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $backend.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $backend.SegmentLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $backend.SegmentLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $backend.SegmentLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $backend}}
- [backends."backend-{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontendName, $service := .Frontends }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ getBackendName $service }}"
- priority = {{ getPriority $service.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $service.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $service.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $service.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $service.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $service.SegmentLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $service.SegmentLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $service.SegmentLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $service.SegmentLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $service.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $service.SegmentLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-frontend-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $service.Name $service.SegmentLabels }}"
-
-{{end}}
-`)
-
-func templatesRancherTmplBytes() ([]byte, error) {
- return _templatesRancherTmpl, nil
-}
-
-func templatesRancherTmpl() (*asset, error) {
- bytes, err := templatesRancherTmplBytes()
- if err != nil {
- return nil, err
- }
-
- info := bindataFileInfo{name: "templates/rancher.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
- a := &asset{bytes: bytes, info: info}
- return a, nil
-}
-
-// Asset loads and returns the asset for the given name.
-// It returns an error if the asset could not be found or
-// could not be loaded.
-func Asset(name string) ([]byte, error) {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[cannonicalName]; ok {
- a, err := f()
- if err != nil {
- return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
- }
- return a.bytes, nil
- }
- return nil, fmt.Errorf("Asset %s not found", name)
-}
-
-// MustAsset is like Asset but panics when Asset would return an error.
-// It simplifies safe initialization of global variables.
-func MustAsset(name string) []byte {
- a, err := Asset(name)
- if err != nil {
- panic("asset: Asset(" + name + "): " + err.Error())
- }
-
- return a
-}
-
-// AssetInfo loads and returns the asset info for the given name.
-// It returns an error if the asset could not be found or
-// could not be loaded.
-func AssetInfo(name string) (os.FileInfo, error) {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[cannonicalName]; ok {
- a, err := f()
- if err != nil {
- return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
- }
- return a.info, nil
- }
- return nil, fmt.Errorf("AssetInfo %s not found", name)
-}
-
-// AssetNames returns the names of the assets.
-func AssetNames() []string {
- names := make([]string, 0, len(_bindata))
- for name := range _bindata {
- names = append(names, name)
- }
- return names
-}
-
-// _bindata is a table, holding each asset generator, mapped to its name.
-var _bindata = map[string]func() (*asset, error){
- "templates/consul_catalog.tmpl": templatesConsul_catalogTmpl,
- "templates/docker.tmpl": templatesDockerTmpl,
- "templates/ecs.tmpl": templatesEcsTmpl,
- "templates/eureka.tmpl": templatesEurekaTmpl,
- "templates/kubernetes.tmpl": templatesKubernetesTmpl,
- "templates/kv.tmpl": templatesKvTmpl,
- "templates/marathon.tmpl": templatesMarathonTmpl,
- "templates/mesos.tmpl": templatesMesosTmpl,
- "templates/notFound.tmpl": templatesNotfoundTmpl,
- "templates/rancher.tmpl": templatesRancherTmpl,
-}
-
-// AssetDir returns the file names below a certain
-// directory embedded in the file by go-bindata.
-// For example if you run go-bindata on data/... and data contains the
-// following hierarchy:
-// data/
-// foo.txt
-// img/
-// a.png
-// b.png
-// then AssetDir("data") would return []string{"foo.txt", "img"}
-// AssetDir("data/img") would return []string{"a.png", "b.png"}
-// AssetDir("foo.txt") and AssetDir("notexist") would return an error
-// AssetDir("") will return []string{"data"}.
-func AssetDir(name string) ([]string, error) {
- node := _bintree
- if len(name) != 0 {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- pathList := strings.Split(cannonicalName, "/")
- for _, p := range pathList {
- node = node.Children[p]
- if node == nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- }
- }
- if node.Func != nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- rv := make([]string, 0, len(node.Children))
- for childName := range node.Children {
- rv = append(rv, childName)
- }
- return rv, nil
-}
-
-type bintree struct {
- Func func() (*asset, error)
- Children map[string]*bintree
-}
-
-var _bintree = &bintree{nil, map[string]*bintree{
- "templates": {nil, map[string]*bintree{
- "consul_catalog.tmpl": {templatesConsul_catalogTmpl, map[string]*bintree{}},
- "docker.tmpl": {templatesDockerTmpl, map[string]*bintree{}},
- "ecs.tmpl": {templatesEcsTmpl, map[string]*bintree{}},
- "eureka.tmpl": {templatesEurekaTmpl, map[string]*bintree{}},
- "kubernetes.tmpl": {templatesKubernetesTmpl, map[string]*bintree{}},
- "kv.tmpl": {templatesKvTmpl, map[string]*bintree{}},
- "marathon.tmpl": {templatesMarathonTmpl, map[string]*bintree{}},
- "mesos.tmpl": {templatesMesosTmpl, map[string]*bintree{}},
- "notFound.tmpl": {templatesNotfoundTmpl, map[string]*bintree{}},
- "rancher.tmpl": {templatesRancherTmpl, map[string]*bintree{}},
- }},
-}}
-
-// RestoreAsset restores an asset under the given directory
-func RestoreAsset(dir, name string) error {
- data, err := Asset(name)
- if err != nil {
- return err
- }
- info, err := AssetInfo(name)
- if err != nil {
- return err
- }
- err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
- if err != nil {
- return err
- }
- err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
- if err != nil {
- return err
- }
- err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
- if err != nil {
- return err
- }
- return nil
-}
-
-// RestoreAssets restores an asset under the given directory recursively
-func RestoreAssets(dir, name string) error {
- children, err := AssetDir(name)
- // File
- if err != nil {
- return RestoreAsset(dir, name)
- }
- // Dir
- for _, child := range children {
- err = RestoreAssets(dir, filepath.Join(name, child))
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-func _filePath(dir, name string) string {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
-}
diff --git a/docs/content/contributing/building-testing.md b/docs/content/contributing/building-testing.md
index a01fa8b1f..225d0649b 100644
--- a/docs/content/contributing/building-testing.md
+++ b/docs/content/contributing/building-testing.md
@@ -35,7 +35,6 @@ Successfully built 5c3c1a911277
Successfully tagged traefik-dev:4475--feature-documentation
docker run -e "TEST_CONTAINER=1" -v "/var/run/docker.sock:/var/run/docker.sock" -it -e OS_ARCH_ARG -e OS_PLATFORM_ARG -e TESTFLAGS -e VERBOSE -e VERSION -e CODENAME -e TESTDIRS -e CI -e CONTAINER=DOCKER -v "/home/ldez/sources/go/src/github.com/containous/traefik/"dist":/go/src/github.com/containous/traefik/"dist"" "traefik-dev:4475--feature-documentation" ./script/make.sh generate binary
---> Making bundle: generate (in .)
-removed 'autogen/gentemplates/gen.go'
removed 'autogen/genstatic/gen.go'
---> Making bundle: binary (in .)
diff --git a/docs/content/getting-started/quick-start.md b/docs/content/getting-started/quick-start.md
index 17bec437b..762c64d21 100644
--- a/docs/content/getting-started/quick-start.md
+++ b/docs/content/getting-started/quick-start.md
@@ -7,7 +7,6 @@ A Simple Use Case Using Docker
!!! tip
To save some time, you can clone [Traefik's repository](https://github.com/containous/traefik).
- The quickstart files are located in the [examples/quickstart](https://github.com/containous/traefik/tree/master/examples/quickstart/) directory.
## Launch Traefik With the Docker Provider
diff --git a/examples/accessLog/.gitignore b/examples/accessLog/.gitignore
deleted file mode 100644
index 47939b405..000000000
--- a/examples/accessLog/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-exampleHandler
-exampleHandler.exe
diff --git a/examples/accessLog/exampleHandler.go b/examples/accessLog/exampleHandler.go
deleted file mode 100644
index 2a8fb3d61..000000000
--- a/examples/accessLog/exampleHandler.go
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Simple program to start a web server on a specified port
-*/
-package main
-
-import (
- "flag"
- "fmt"
- "net/http"
- "os"
-)
-
-var (
- name string
- port int
- help *bool
-)
-
-func init() {
- flag.StringVar(&name, "n", "", "Name of handler for messages")
- flag.IntVar(&port, "p", 0, "Port number to listen")
- help = flag.Bool("h", false, "Displays help message")
-}
-
-func usage() {
- fmt.Printf("Usage: example -n name -p port \n")
- os.Exit(2)
-}
-
-func handler(w http.ResponseWriter, r *http.Request) {
- fmt.Fprintf(w, "%s: Received query %s!\n", name, r.URL.Path[1:])
-}
-
-func main() {
- flag.Parse()
- if *help || len(name) == 0 || port <= 0 {
- usage()
- }
- http.HandleFunc("/", handler)
- fmt.Printf("%s: Listening on :%d...\n", name, port)
- if er := http.ListenAndServe(fmt.Sprintf(":%d", port), nil); er != nil {
- fmt.Printf("%s: Error from ListenAndServe: %s", name, er.Error())
- os.Exit(1)
- }
- fmt.Printf("%s: How'd we get past listen and serve???\n", name)
-}
diff --git a/examples/accessLog/runAb.sh b/examples/accessLog/runAb.sh
deleted file mode 100755
index db7d9366c..000000000
--- a/examples/accessLog/runAb.sh
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/bin/bash
-usage()
-{
- echo 'runAb.sh - Run Apache Benchmark to test access log'
- echo ' Usage: runAb.sh [--conn nnn] [--log xxx] [--num nnn] [--time nnn] [--wait nn]'
- echo ' -c|--conn - number of simultaneous connections (default 100)'
- echo ' -l|--log - name of logfile (default benchmark.log)'
- echo ' -n|--num - number of requests (default 50000); ignored when -t specified'
- echo ' -t|--time - time in seconds for benchmark (default no limit)'
- echo ' -w|--wait - number of seconds to wait for Traefik to initialize (default 15)'
- echo ' '
- exit
-}
-
-# Parse options
-
-conn=100
-num=50000
-wait=15
-time=0
-logfile=""
-while [[ $1 =~ ^- ]]
-do
- case $1 in
- -c|--conn)
- conn=$2
- shift
- ;;
- -h|--help)
- usage
- ;;
- -l|--log|--logfile)
- logfile=$2
- shift
- ;;
- -n|--num)
- num=$2
- shift
- ;;
- -t|--time)
- time=$2
- shift
- ;;
- -w|--wait)
- wait=$2
- shift
- ;;
- *)
- echo Unknown option "$1"
- usage
- esac
- shift
-done
-if [ -z "$logfile" ] ; then
- logfile="benchmark.log"
-fi
-
-# Change to accessLog examples directory
-
-[ -d examples/accessLog ] && cd examples/accessLog
-if [ ! -r exampleHandler.go ] ; then
- echo Please run this script either from the traefik repo root or from the examples/accessLog directory
- exit
-fi
-
-# Kill traefik and any running example processes
-
-sudo pkill -f traefik
-pkill -f exampleHandler
-[ ! -d log ] && mkdir log
-
-# Start new example processes
-
-go build exampleHandler.go
-[ $? -ne 0 ] && exit $?
-./exampleHandler -n Handler1 -p 8081 &
-[ $? -ne 0 ] && exit $?
-./exampleHandler -n Handler2 -p 8082 &
-[ $? -ne 0 ] && exit $?
-./exampleHandler -n Handler3 -p 8083 &
-[ $? -ne 0 ] && exit $?
-
-# Wait a couple of seconds for handlers to initialize and start Traefik
-
-cd ../..
-sleep 2s
-echo Starting Traefik...
-sudo ./traefik -c examples/accessLog/traefik.ab.toml &
-[ $? -ne 0 ] && exit $?
-
-# Wait for Traefik to initialize and run ab
-
-echo Waiting $wait seconds before starting ab benchmark
-sleep ${wait}s
-echo
-stime=`date '+%s'`
-if [ $time -eq 0 ] ; then
- echo Benchmark starting `date` with $conn connections until $num requests processed | tee $logfile
- echo | tee -a $logfile
- echo ab -k -c $conn -n $num http://127.0.0.1/test | tee -a $logfile
- echo | tee -a $logfile
- ab -k -c $conn -n $num http://127.0.0.1/test 2>&1 | tee -a $logfile
-else
- if [ $num -ne 50000 ] ; then
- echo Request count ignored when --time specified
- fi
- echo Benchmark starting `date` with $conn connections for $time seconds | tee $logfile
- echo | tee -a $logfile
- echo ab -k -c $conn -t $time -n 100000000 http://127.0.0.1/test | tee -a $logfile
- echo | tee -a $logfile
- ab -k -c $conn -t $time -n 100000000 http://127.0.0.1/test 2>&1 | tee -a $logfile
-fi
-
-etime=`date '+%s'`
-let "dt=$etime - $stime"
-let "ds=$dt % 60"
-let "dm=($dt / 60) % 60"
-let "dh=$dt / 3600"
-echo | tee -a $logfile
-printf "Benchmark ended `date` after %d:%02d:%02d\n" $dh $dm $ds | tee -a $logfile
-echo Results available in $logfile
-
diff --git a/examples/accessLog/runExample.sh b/examples/accessLog/runExample.sh
deleted file mode 100755
index 69186b4df..000000000
--- a/examples/accessLog/runExample.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# Script to run a three-server example. This script runs the three servers and restarts Traefik
-# Once it is running, use the command:
-#
-# curl http://127.0.0.1:80/test{1,2,2}
-#
-# to send requests to send test requests to the servers. You should see a response like:
-#
-# Handler1: received query test1!
-# Handler2: received query test2!
-# Handler3: received query test2!
-#
-# and can then inspect log/access.log to see frontend, backend, and timing
-
-# Kill traefik and any running example processes
-sudo pkill -f traefik
-pkill -f exampleHandler
-[ ! -d log ] && mkdir log
-
-# Start new example processes
-cd examples/accessLog
-go build exampleHandler.go
-[ $? -ne 0 ] && exit $?
-./exampleHandler -n Handler1 -p 8081 &
-[ $? -ne 0 ] && exit $?
-./exampleHandler -n Handler2 -p 8082 &
-[ $? -ne 0 ] && exit $?
-./exampleHandler -n Handler3 -p 8083 &
-[ $? -ne 0 ] && exit $?
-
-# Wait a couple of seconds for handlers to initialize and start Traefik
-cd ../..
-sleep 2s
-echo Starting Traefik...
-sudo ./traefik -c examples/accessLog/traefik.example.toml &
-[ $? -ne 0 ] && exit $?
-
-echo Sample handlers and traefik started successfully!
-echo 'Use command curl http://127.0.0.1:80/test{1,2,2} to drive test'
-echo Then inspect log/access.log to verify it contains frontend, backend, and timing
diff --git a/examples/accessLog/traefik.ab.toml b/examples/accessLog/traefik.ab.toml
deleted file mode 100644
index ccd988f4f..000000000
--- a/examples/accessLog/traefik.ab.toml
+++ /dev/null
@@ -1,44 +0,0 @@
-################################################################
-# Global configuration
-################################################################
-traefikLogsFile = "log/traefik.log"
-accessLogsFile = "log/access.log"
-logLevel = "DEBUG"
-
-[entrypoints]
- [entrypoints.api]
- address = ":7888"
-
-################################################################
-# API configuration
-################################################################
-[api]
-entryPoint = "api"
-
-################################################################
-# File configuration backend
-################################################################
-[file]
-
-################################################################
-# rules
-################################################################
- [backends]
- [backends.backend]
- [backends.backend.LoadBalancer]
- method = "drr"
- [backends.backend.servers.server1]
- url = "http://127.0.0.1:8081"
- weight = 1
- [backends.backend.servers.server2]
- url = "http://127.0.0.1:8082"
- weight = 1
- [backends.backend.servers.server3]
- url = "http://127.0.0.1:8083"
- weight = 1
- [frontends]
- [frontends.frontend]
- backend = "backend"
- passHostHeader = true
- [frontends.frontend.routes.test]
- rule = "Path: /test"
diff --git a/examples/accessLog/traefik.example.toml b/examples/accessLog/traefik.example.toml
deleted file mode 100644
index fae74586d..000000000
--- a/examples/accessLog/traefik.example.toml
+++ /dev/null
@@ -1,52 +0,0 @@
-################################################################
-# Global configuration
-################################################################
-traefikLogsFile = "log/traefik.log"
-accessLogsFile = "log/access.log"
-logLevel = "DEBUG"
-
-[entrypoints]
- [entrypoints.api]
- address = ":7888"
-
-################################################################
-# API configuration
-################################################################
-[api]
-entryPoint = "api"
-
-################################################################
-# File configuration backend
-################################################################
-[file]
-
-################################################################
-# rules
-################################################################
- [backends]
- [backends.backend1]
- [backends.backend1.servers.server1]
- url = "http://127.0.0.1:8081"
- weight = 1
-
- [backends.backend2]
- [backends.backend2.LoadBalancer]
- method = "drr"
- [backends.backend2.servers.server1]
- url = "http://127.0.0.1:8082"
- weight = 1
- [backends.backend2.servers.server2]
- url = "http://127.0.0.1:8083"
- weight = 1
-
- [frontends]
- [frontends.frontend1]
- backend = "backend1"
- [frontends.frontend1.routes.test_1]
- rule = "Path: /test1"
-
- [frontends.frontend2]
- backend = "backend2"
- passHostHeader = true
- [frontends.frontend2.routes.test_2]
- rule = "Path: /test2"
\ No newline at end of file
diff --git a/examples/acme/Readme.md b/examples/acme/Readme.md
deleted file mode 100644
index 2ee672f3c..000000000
--- a/examples/acme/Readme.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# ACME Testing environment
-
-## Objectives
-
-In our integration ACME tests, we use a simulated Let's Encrypt container based stack named boulder.
-
-The goal of this directory is to provide to developers a Traefik-boulder full stack environment.
-This environment may be used in order to quickly test developments on ACME certificates management.
-
-The provided Boulder stack is based on the environment used during integration tests.
-
-## Directory content
-
-* **docker-compose.yml** : Docker-Compose file which contains the description of Traefik and all the boulder stack containers to get,
-* **acme.toml** : Traefik configuration file used by the Traefik container described above,
-* **manage_acme_docker_environment.sh** Shell script which does all needed checks and manages the docker-compose environment.
-
-## Shell script
-
-### Description
-
-To work fine, boulder needs a domain name, with a related IP and storage file. The shell script allows to check the environment before launching the Docker environment with the rights parameters and to managing this environment.
-
-### Use
-
-The script **manage_acme_docker_environment.sh** requires one argument. This argument can have 3 values :
-
-* **--start** : Launch a new Docker environment Boulder + Traefik.
-* **--stop** : Stop and delete the current Docker environment.
-* **--restart--** : Concatenate **--stop** and **--start** actions.
-* **--dev** : Launch a new Boulder Docker environment.
diff --git a/examples/acme/acme.toml b/examples/acme/acme.toml
deleted file mode 100644
index 79994e5ac..000000000
--- a/examples/acme/acme.toml
+++ /dev/null
@@ -1,30 +0,0 @@
-logLevel = "DEBUG"
-
-[entrypoints]
- [entrypoints.web]
- address = ":80"
- [entrypoints.web.redirect]
- entryPoint = "https"
- [entrypoints.web-secure]
- address = ":443"
- [entrypoints.web-secure.tls]
-
-[acme]
-email = "test@traefik.io"
-storage = "/etc/traefik/conf/acme.json"
-entryPoint = "https"
-onDemand = false
-onHostRule = true
-caServer = "http://traefik.boulder.com:4001/directory"
- [acme.httpChallenge]
- entryPoint="http"
-
-[api]
-
-[docker]
-endpoint = "unix:///var/run/docker.sock"
-domain = "traefik.localhost.com"
-watch = true
-exposedByDefault = false
-
-
diff --git a/examples/acme/docker-compose.yml b/examples/acme/docker-compose.yml
deleted file mode 100644
index fb3f73eb1..000000000
--- a/examples/acme/docker-compose.yml
+++ /dev/null
@@ -1,97 +0,0 @@
-version: "2"
-
-services :
-
- boulder:
- # To minimize fetching this should be the same version used below
- image: containous/boulder:containous-acmev2
- environment:
- FAKE_DNS: 172.17.0.1
- PKCS11_PROXY_SOCKET: tcp://boulder-hsm:5657
- restart: unless-stopped
- extra_hosts:
- - le.wtf:127.0.0.1
- - boulder:127.0.0.1
- ports:
- - 4000:4000 # ACME
- - 4001:4001 # ACMEv2
- - 4002:4002 # OCSP
- - 4003:4003 # OCSP
- - 4430:4430 # ACME via HTTPS
- - 4431:4431 # ACMEv2 via HTTPS
- - 4500:4500 # ct-test-srv
- - 6000:6000 # gsb-test-srv
- - 8000:8000 # debug ports
- - 8001:8001
- - 8002:8002
- - 8003:8003
- - 8004:8004
- - 8005:8005
- - 8006:8006
- - 8008:8008
- - 8009:8009
- - 8010:8010
- - 8055:8055 # dns-test-srv updates
- - 9380:9380 # mail-test-srv
- - 9381:9381 # mail-test-srv
- depends_on:
- - bhsm
- - bmysql
- networks:
- - default
-
- bhsm:
- # To minimize fetching this should be the same version used above
- image: letsencrypt/boulder-tools:2018-03-07
- hostname: boulder-hsm
- environment:
- PKCS11_DAEMON_SOCKET: tcp://0.0.0.0:5657
- command: /usr/local/bin/pkcs11-daemon /usr/lib/softhsm/libsofthsm2.so
- expose:
- - 5657
- networks:
- default:
- aliases:
- - boulder-hsm
-
- bmysql:
- image: mariadb:10.1
- hostname: boulder-mysql
- environment:
- MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
- command: mysqld --bind-address=0.0.0.0
- logging:
- driver: none
- networks:
- default:
- aliases:
- - boulder-mysql
-
- ## TRAEFIK part ##
-
- traefik:
- build:
- context: ../..
- image: containous/traefik:latest
- command: --configFile=/etc/traefik/conf/acme.toml
- restart: unless-stopped
- extra_hosts:
- - traefik.boulder.com:172.17.0.1
- volumes:
- - "./acme.toml:/etc/traefik/conf/acme.toml:ro"
- - "/var/run/docker.sock:/var/run/docker.sock:ro"
- - "./acme.json:/etc/traefik/conf/acme.json:rw"
- ports:
- - "80:80"
- - "443:443"
- - "5001:443" # Needed for SNI challenge
- - "5002:80" # Needed for HTTP challenge
- expose:
- - "8080"
- labels:
- - "traefik.port=8080"
- - "traefik.backend=traefikception"
- - "traefik.frontend.rule=Host:traefik.localhost.com"
- - "traefik.enable=true"
- depends_on:
- - boulder
\ No newline at end of file
diff --git a/examples/acme/manage_acme_docker_environment.sh b/examples/acme/manage_acme_docker_environment.sh
deleted file mode 100755
index 6200d041d..000000000
--- a/examples/acme/manage_acme_docker_environment.sh
+++ /dev/null
@@ -1,91 +0,0 @@
-#! /usr/bin/env bash
-
-# Initialize variables
-readonly traefik_url="traefik.localhost.com"
-readonly basedir=$(dirname $0)
-readonly doc_file=$basedir"/docker-compose.yml"
-
-# Stop and remove Docker environment
-down_environment() {
- echo "STOP Docker environment"
- ! docker-compose -f $doc_file down -v &>/dev/null && \
- echo "[ERROR] Unable to stop the Docker environment" && exit 11
-}
-
-# Create and start Docker-compose environment or subpart of its services (if services are listed)
-# $@ : List of services to start (optional)
-up_environment() {
- echo "START Docker environment"
- ! docker-compose -f $doc_file up -d $@ &>/dev/null && \
- echo "[ERROR] Unable to start Docker environment" && exit 21
-}
-
-# Init the environment : get IP address and create needed files
-init_environment() {
- echo "CREATE empty acme.json file"
- rm -f $basedir/acme.json && \
- touch $basedir/acme.json && \
- chmod 600 $basedir/acme.json # Needed for ACME
-}
-
-# Start all the environement
-start_boulder() {
- init_environment
- echo "Start boulder environment"
- up_environment bmysql bhsm boulder
- waiting_counter=12
- # Not start Traefik if boulder is not started
- echo "WAIT for boulder..."
- while [[ -z $(curl -s http://127.0.0.1:4000/directory) ]]; do
- sleep 5
- let waiting_counter-=1
- if [[ $waiting_counter -eq 0 ]]; then
- echo "[ERROR] Unable to start boulder container in the allowed time, the Docker environment will be stopped"
- down_environment
- exit 41
- fi
- done
-}
-
-# Script usage
-show_usage() {
- echo
- echo "USAGE : manage_acme_docker_environment.sh [--dev|--start|--stop|--restart]"
- echo
-}
-
-# Main method
-# $@ All parameters given
-main() {
-
- [[ $# -ne 1 ]] && show_usage && exit 1
-
- case $1 in
- "--dev")
- start_boulder
- ;;
- "--start")
- # Start boulder environment
- start_boulder
- echo "START Traefik container"
- up_environment traefik
- echo "ENVIRONMENT SUCCESSFULLY STARTED"
- ;;
- "--stop")
- ! down_environment
- echo "ENVIRONMENT SUCCESSFULLY STOPPED"
- ;;
- "--restart")
- down_environment
- start_boulder
- echo "START Traefik container"
- up_environment traefik
- echo "ENVIRONMENT SUCCESSFULLY RESTARTED"
- ;;
- *)
- show_usage && exit 2
- ;;
- esac
-}
-
-main $@
\ No newline at end of file
diff --git a/examples/cluster/docker-compose.yml b/examples/cluster/docker-compose.yml
deleted file mode 100644
index b325f8291..000000000
--- a/examples/cluster/docker-compose.yml
+++ /dev/null
@@ -1,205 +0,0 @@
-version: '2'
-
-services:
-
- ## KV part ##
-
- # CONSUL
-
- consul:
- image: progrium/consul
- command: -server -bootstrap -log-level debug -ui-dir /ui
- ports:
- - "8400:8400"
- - "8500:8500"
- - "8600:53/udp"
- expose:
- - "8300"
- - "8301"
- - "8301/udp"
- - "8302"
- - "8302/udp"
- networks:
- net:
- ipv4_address: 10.0.1.2
-
- # ETCD V3
-
- etcd3:
- image: quay.io/coreos/etcd:v3.2.9
- command: /usr/local/bin/etcd --data-dir=/etcd-data --name node1 --initial-advertise-peer-urls http://10.0.1.12:2380 --listen-peer-urls http://10.0.1.12:2380 --advertise-client-urls http://10.0.1.12:2379,http://10.0.1.12:4001 --listen-client-urls http://10.0.1.12:2379,http://10.0.1.12:4001 --initial-cluster node1=http://10.0.1.12:2380 --debug
- ports:
- - "4001:4001"
- - "2380:2380"
- - "2379:2379"
- networks:
- net:
- ipv4_address: 10.0.1.12
-
- etcdctl-ping:
- image: tenstartups/etcdctl
- command: --endpoints=[10.0.1.12:2379] get "traefik/acme/storage"
- environment:
- ETCDCTL_DIAL_: "TIMEOUT 10s"
- ETCDCTL_API : "3"
- networks:
- - net
-
- ## BOULDER part ##
-
- boulder:
- # To minimize fetching this should be the same version used below
- image: containous/boulder:containous-acmev2
- environment:
- FAKE_DNS: 172.17.0.1
- PKCS11_PROXY_SOCKET: tcp://boulder-hsm:5657
- restart: unless-stopped
- extra_hosts:
- - le.wtf:127.0.0.1
- - boulder:127.0.0.1
- ports:
- - 4000:4000 # ACME
- - 4001:4001 # ACMEv2
- - 4002:4002 # OCSP
- - 4003:4003 # OCSP
- - 4430:4430 # ACME via HTTPS
- - 4431:4431 # ACMEv2 via HTTPS
- - 4500:4500 # ct-test-srv
- - 6000:6000 # gsb-test-srv
- - 8000:8000 # debug ports
- - 8001:8001
- - 8002:8002
- - 8003:8003
- - 8004:8004
- - 8005:8005
- - 8006:8006
- - 8008:8008
- - 8009:8009
- - 8010:8010
- - 8055:8055 # dns-test-srv updates
- - 9380:9380 # mail-test-srv
- - 9381:9381 # mail-test-srv
- depends_on:
- - bhsm
- - bmysql
- networks:
- net:
- ipv4_address: 10.0.1.3
-
- bhsm:
- # To minimize fetching this should be the same version used above
- image: letsencrypt/boulder-tools:2018-03-07
- hostname: boulder-hsm
- environment:
- PKCS11_DAEMON_SOCKET: tcp://0.0.0.0:5657
- command: /usr/local/bin/pkcs11-daemon /usr/lib/softhsm/libsofthsm2.so
- expose:
- - 5657
- networks:
- net:
- ipv4_address: 10.0.1.4
- aliases:
- - boulder-hsm
- bmysql:
- image: mariadb:10.1
- hostname: boulder-mysql
- environment:
- MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
- command: mysqld --bind-address=0.0.0.0
- logging:
- driver: none
- networks:
- net:
- ipv4_address: 10.0.1.5
- aliases:
- - boulder-mysql
-
- ## TRAEFIK part ##
-
- storeconfig:
- build:
- context: ../..
- image: containous/traefik
- volumes:
- - "./traefik.toml:/traefik.toml:ro"
- command: storeconfig --debug
- networks:
- - net
-
- traefik01:
- build:
- context: ../..
- image: containous/traefik
- command: ${TRAEFIK_CMD}
- extra_hosts:
- - traefik.boulder.com:172.17.0.1
- volumes:
- - "/var/run/docker.sock:/var/run/docker.sock:ro"
- expose:
- - "443"
- - "5001"
- - "5002"
- ports:
- - "80:80"
- - "8080:8080"
- - "443:443"
- - "5001:443" # Needed for SNI challenge
- - "5002:80" # Needed for HTTP challenge
- networks:
- net:
- ipv4_address: 10.0.1.8
-
- traefik02:
- build:
- context: ../..
- image: containous/traefik
- command: ${TRAEFIK_CMD}
- extra_hosts:
- - traefik.boulder.com:172.17.0.1
- volumes:
- - "/var/run/docker.sock:/var/run/docker.sock:ro"
- expose:
- - "443"
- - "5001"
- - "5002"
- ports:
- - "88:80"
- - "8888:8080"
- - "8443:443"
- depends_on:
- - traefik01
- networks:
- net:
- ipv4_address: 10.0.1.9
-
- whoami01:
- image: containous/whoami
- expose:
- - "80"
- labels:
- - "traefik.port=80"
- - "traefik.backend=wam01"
- - "traefik.frontend.rule=Host:who01.localhost.com"
- - "traefik.enable=true"
- networks:
- net:
- ipv4_address: 10.0.1.10
-
- whoami02:
- image: containous/whoami
- expose:
- - "80"
- labels:
- - "traefik.port=80"
- - "traefik.backend=wam02"
- - "traefik.frontend.rule=Host:who02.localhost.com"
- - "traefik.enable=true"
- networks:
- - net
-
-networks:
- net:
- driver: bridge
- ipam:
- config:
- - subnet: 10.0.1.0/26
\ No newline at end of file
diff --git a/examples/cluster/manage_cluster_docker_environment.sh b/examples/cluster/manage_cluster_docker_environment.sh
deleted file mode 100755
index b182717a0..000000000
--- a/examples/cluster/manage_cluster_docker_environment.sh
+++ /dev/null
@@ -1,215 +0,0 @@
-#! /usr/bin/env bash
-
-# Initialize variables
-readonly basedir=$(dirname $0)
-readonly doc_file=$basedir"/docker-compose.yml"
-export COMPOSE_PROJECT_NAME="cluster"
-
-# Stop and remove Docker environment
-down_environment() {
- echo "DOWN Docker environment"
- ! docker-compose -f $doc_file down -v &>/dev/null && \
- echo "[ERROR] Unable to stop the Docker environment" && exit 11
- return 0
-}
-
-# Create and start Docker-compose environment or subpart of its services (if services are listed)
-# $@ : List of services to start (optional)
-up_environment() {
- echo "START Docker environment "$@
- ! docker-compose -f $doc_file up -d $@ &>/dev/null && \
- echo "[ERROR] Unable to start Docker environment ${@}" && exit 21
- return 0
-}
-
-# Stop and remove Docker environment
-delete_services() {
- echo "DELETE services "$@
- ! docker-compose -f $doc_file stop $@ &>/dev/null && \
- echo "[ERROR] Unable to stop services "$@ && exit 31
- ! docker-compose -f $doc_file rm -vf $@ &>/dev/null && \
- echo "[ERROR] Unable to delete services "$@ && exit 31
- return 0
-}
-
-start_consul() {
- up_environment consul
- waiting_counter=12
- # Not start Traefik store config if consul is not started
- echo "WAIT for consul..."
- sleep 5
- while [[ -z $(curl -s http://10.0.1.2:8500/v1/status/leader) ]]; do
- sleep 5
- let waiting_counter-=1
- if [[ $waiting_counter -eq 0 ]]; then
- echo "[ERROR] Unable to start consul container in the allowed time, the Docker environment will be stopped"
- down_environment
- exit 41
- fi
- done
-
-}
-
-start_etcd3() {
- up_environment etcd3
- waiting_counter=12
- # Not start Traefik store config if consul is not started
- echo "WAIT for ETCD3..."
- while [[ -z $(curl -s --connect-timeout 2 http://10.0.1.12:2379/version) ]]; do
- sleep 5
- let waiting_counter-=1
- if [[ $waiting_counter -eq 0 ]]; then
- echo "[ERROR] Unable to start etcd3 container in the allowed time, the Docker environment will be stopped"
- down_environment
- exit 51
- fi
- done
-}
-
-start_storeconfig_consul() {
- # Create traefik.toml with consul provider
- cp $basedir/traefik.toml.tmpl $basedir/traefik.toml
- echo '
- [consul]
- endpoint = "10.0.1.2:8500"
- watch = true
- prefix = "traefik"' >> $basedir/traefik.toml
- up_environment storeconfig
- rm -f $basedir/traefik.toml
- waiting_counter=5
- delete_services storeconfig
-
-}
-
-start_storeconfig_etcd3() {
- # Create traefik.toml with consul provider
- cp $basedir/traefik.toml.tmpl $basedir/traefik.toml
- echo '
- [etcd]
- endpoint = "10.0.1.12:2379"
- watch = true
- prefix = "/traefik"' >> $basedir/traefik.toml
- up_environment storeconfig
- rm -f $basedir/traefik.toml
- waiting_counter=5
- # Don't start Traefik store config if ETCD3 is not started
- echo "Delete storage file key..."
- while [[ $(docker-compose -f $doc_file up --exit-code-from etcdctl-ping etcdctl-ping &>/dev/null) -ne 0 && $waiting_counter -gt 0 ]]; do
- sleep 5
- let waiting_counter-=1
- done
- delete_services storeconfig etcdctl-ping
-}
-
-start_traefik() {
- up_environment traefik01
- # Waiting for the first instance which is mapped to the host as leader before to start the second one
- waiting_counter=5
- echo "WAIT for traefik leader..."
- sleep 10
- while [[ -z $(curl -s --connect-timeout 3 http://10.0.1.8:8080/ping) ]]; do
- sleep 2
- let waiting_counter-=1
- if [[ $waiting_counter -eq 0 ]]; then
- echo "[ERROR] Unable to start Traefik leader container in the allowed time, the Docker environment will be stopped"
- down_environment
- exit 51
- fi
- done
- up_environment whoami01
- waiting_counter=5
- echo "WAIT for whoami..."
- sleep 10
- while [[ -z $(curl -s --connect-timeout 3 http://10.0.1.10) ]]; do
- sleep 2
- let waiting_counter-=1
- if [[ $waiting_counter -eq 0 ]]; then
- echo "[ERROR] Unable to start whoami container in the allowed time, the Docker environment will be stopped"
- down_environment
- exit 52
- fi
- done
- up_environment traefik02 whoami02
-}
-
-# Start boulder services
-start_boulder() {
- echo "Start boulder environment"
- up_environment bmysql bhsm boulder
- waiting_counter=12
- # Not start Traefik if boulder is not started
- echo "WAIT for boulder..."
- while [[ -z $(curl -s http://10.0.1.3:4001/directory) ]]; do
- sleep 5
- let waiting_counter-=1
- if [[ $waiting_counter -eq 0 ]]; then
- echo "[ERROR] Unable to start boulder container in the allowed time, the Docker environment will be stopped"
- down_environment
- exit 61
- fi
- done
- echo "Boulder started."
-}
-
-# Script usage
-show_usage() {
- echo
- echo "USAGE : manage_cluster_docker_environment.sh [--start [--consul|--etcd3]|--stop|--restart [--consul|--etcd3]]"
- echo
-}
-
-# Main method
-# $@ All parameters given
-main() {
-
- [[ $# -lt 1 && $# -gt 2 ]] && show_usage && exit 1
-
- case $1 in
- "--start")
- [[ $# -ne 2 ]] && show_usage && exit 2
- # The domains who01.localhost.com and who02.localhost.com have to refer 127.0.0.1
- # I, the /etc/hosts file
- for whoami_idx in "01" "02"; do
- [[ -z $(cat /etc/hosts | grep "127.0.0.1" | grep -vE "^#" | grep "who${whoami_idx}.localhost.com") ]] && \
- echo "[ERROR] Domain who${whoami_idx}.localhost.com has to refer to 127.0.0.1 into /etc/hosts file." && \
- exit 3
- done
- case $2 in
- "--etcd3")
- echo "USE ETCD V3 AS KV STORE"
- export TRAEFIK_CMD="--etcd --etcd.endpoint=10.0.1.12:2379"
- start_boulder && \
- start_etcd3 && \
- start_storeconfig_etcd3 && \
- start_traefik
- ;;
- "--consul")
- echo "USE CONSUL AS KV STORE"
- export TRAEFIK_CMD="--consul --consul.endpoint=10.0.1.2:8500"
- start_boulder && \
- start_consul && \
- start_storeconfig_consul && \
- start_traefik
- ;;
- *)
- show_usage && exit 4
- ;;
- esac
- echo "ENVIRONMENT SUCCESSFULLY STARTED"
- ;;
- "--stop")
- ! down_environment
- echo "ENVIRONMENT SUCCESSFULLY STOPPED"
- ;;
- "--restart")
- [[ $# -ne 2 ]] && show_usage && exit 5
- down_environment
- main --start $2
- ;;
- *)
- show_usage && exit 6
- ;;
- esac
-}
-
-main $@
\ No newline at end of file
diff --git a/examples/cluster/traefik.toml.tmpl b/examples/cluster/traefik.toml.tmpl
deleted file mode 100644
index c9f879351..000000000
--- a/examples/cluster/traefik.toml.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-logLevel = "DEBUG"
-
-[entrypoints]
- [entrypoints.web]
- address = ":80"
- [entrypoints.web-secure]
- address = ":443"
- [entrypoints.web-secure.tls]
-
-[acme]
-email = "test@traefik.io"
-storage = "traefik/acme/account"
-entryPoint = "https"
-onHostRule = true
-caServer = "http://traefik.boulder.com:4001/directory"
-[acme.httpChallenge]
-entryPoint="http"
-
-
-[api]
-
-[docker]
-endpoint = "unix:///var/run/docker.sock"
-domain = "localhost.com"
-watch = true
-exposedByDefault = false
diff --git a/examples/compose-consul.yml b/examples/compose-consul.yml
deleted file mode 100644
index c9b4e27f9..000000000
--- a/examples/compose-consul.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-version: '2'
-services:
- consul:
- image: progrium/consul
- command: -server -bootstrap -advertise 12.0.0.254 -log-level debug -ui-dir /ui
- ports:
- - "8400:8400"
- - "8500:8500"
- - "8600:53/udp"
- expose:
- - "8300"
- - "8301"
- - "8301/udp"
- - "8302"
- - "8302/udp"
-
- registrator:
- depends_on:
- - consul
- image: gliderlabs/registrator:master
- command: -internal consul://consul:8500
- volumes:
- - /var/run/docker.sock:/tmp/docker.sock
- links:
- - consul
\ No newline at end of file
diff --git a/examples/compose-etcd.yml b/examples/compose-etcd.yml
deleted file mode 100644
index 83ba52f72..000000000
--- a/examples/compose-etcd.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-etcd:
- image: gcr.io/google_containers/etcd:2.2.1
- net: host
- command: ['/usr/local/bin/etcd', '--addr=127.0.0.1:2379', '--bind-addr=0.0.0.0:2379', '--data-dir=/var/etcd/data']
diff --git a/examples/compose-k8s.yaml b/examples/compose-k8s.yaml
deleted file mode 100644
index 9e7a18b5b..000000000
--- a/examples/compose-k8s.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-kubelet:
- image: gcr.io/google_containers/hyperkube-amd64:v1.5.2
- privileged: true
- pid: host
- net : host
- volumes:
- - /sys:/sys:rw
- - /var/lib/docker/:/var/lib/docker:rw
- - /var/lib/kubelet/:/var/lib/kubelet:rw,shared
- - /var/run:/var/run:rw
- command: ['/hyperkube', 'kubelet', '--hostname-override=127.0.0.1', '--api-servers=http://localhost:8080', '--config=/etc/kubernetes/manifests', '--allow-privileged=true', '--v=2', '--cluster-dns=10.0.0.10', '--cluster-domain=cluster.local']
diff --git a/examples/compose-marathon.yml b/examples/compose-marathon.yml
deleted file mode 100644
index 7b3a1bc1f..000000000
--- a/examples/compose-marathon.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-version: '2'
-services:
- zookeeper:
- image: netflixoss/exhibitor:1.5.2
- hostname: zookeeper
- ports:
- - "2181:2181"
- mesos-master:
- image: mesosphere/marathon:v1.2.0-RC6
- hostname: mesos-master
- entrypoint: [ "mesos-master" ]
- ports:
- - "5050:5050"
- links:
- - zookeeper
- environment:
- - MESOS_CLUSTER=local
- - MESOS_HOSTNAME=mesos-master.docker
- - MESOS_LOG_DIR=/var/log
- - MESOS_WORK_DIR=/var/lib/mesos
- - MESOS_QUORUM=1
- - MESOS_ZK=zk://zookeeper:2181/mesos
- mesos-slave:
- image: mesosphere/mesos-slave-dind:0.2.4_mesos-0.27.2_docker-1.8.2_ubuntu-14.04.4
- entrypoint:
- - mesos-slave
- privileged: true
- hostname: mesos-slave
- ports:
- - "5051:5051"
- links:
- - zookeeper
- - mesos-master
- environment:
- - MESOS_CONTAINERIZERS=docker,mesos
- - MESOS_ISOLATOR=cgroups/cpu,cgroups/mem
- - MESOS_LOG_DIR=/var/log
- - MESOS_MASTER=zk://zookeeper:2181/mesos
- - MESOS_PORT=5051
- - MESOS_WORK_DIR=/var/lib/mesos
- - MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins
- - MESOS_EXECUTOR_SHUTDOWN_GRACE_PERIOD=90secs
- - MESOS_DOCKER_STOP_TIMEOUT=60secs
- - MESOS_RESOURCES=cpus:2;mem:2048;disk:20480;ports(*):[12000-12999]
- volumes:
- - "/var/run/docker.sock:/var/run/docker.sock"
- marathon:
- image: mesosphere/marathon:v1.2.0-RC6
- ports:
- - "8080:8080"
- links:
- - zookeeper
- - mesos-master
- extra_hosts:
- - "mesos-slave:172.17.0.1"
- environment:
- - MARATHON_ZK=zk://zookeeper:2181/marathon
- - MARATHON_MASTER=zk://zookeeper:2181/mesos
diff --git a/examples/compose-rancher.yml b/examples/compose-rancher.yml
deleted file mode 100644
index 06352a651..000000000
--- a/examples/compose-rancher.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-traefik:
- image: traefik
- command: --api --rancher --rancher.domain=rancher.localhost --rancher.endpoint=http://example.com --rancher.accesskey=XXXXXXX --rancher.secretkey=YYYYYY --logLevel=DEBUG
- ports:
- - "80:80"
- - "443:443"
- - "8080:8080"
diff --git a/examples/compose-traefik.yml b/examples/compose-traefik.yml
deleted file mode 100644
index 9dd257d04..000000000
--- a/examples/compose-traefik.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-traefik:
- image: traefik
- command: -c /dev/null --api --docker --docker.domain=docker.localhost --logLevel=DEBUG
- ports:
- - "80:80"
- - "8080:8080"
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
-
-whoami1:
- image: containous/whoami
- labels:
- - "traefik.backend=whoami"
- - "traefik.frontend.rule=Host:whoami.docker.localhost"
-
-whoami2:
- image: containous/whoami
- labels:
- - "traefik.backend=whoami"
- - "traefik.frontend.rule=Host:whoami.docker.localhost"
\ No newline at end of file
diff --git a/examples/consul-config.sh b/examples/consul-config.sh
deleted file mode 100755
index ee9066eeb..000000000
--- a/examples/consul-config.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-# backend 1
-curl -i -H "Accept: application/json" -X PUT -d "NetworkErrorRatio() > 0.5" http://localhost:8500/v1/kv/traefik/backends/backend1/circuitbreaker/expression
-curl -i -H "Accept: application/json" -X PUT -d "http://172.17.0.2:80" http://localhost:8500/v1/kv/traefik/backends/backend1/servers/server1/url
-curl -i -H "Accept: application/json" -X PUT -d "10" http://localhost:8500/v1/kv/traefik/backends/backend1/servers/server1/weight
-curl -i -H "Accept: application/json" -X PUT -d "http://172.17.0.3:80" http://localhost:8500/v1/kv/traefik/backends/backend1/servers/server2/url
-curl -i -H "Accept: application/json" -X PUT -d "1" http://localhost:8500/v1/kv/traefik/backends/backend1/servers/server2/weight
-
-# backend 2
-curl -i -H "Accept: application/json" -X PUT -d "drr" http://localhost:8500/v1/kv/traefik/backends/backend2/loadbalancer/method
-curl -i -H "Accept: application/json" -X PUT -d "http://172.17.0.4:80" http://localhost:8500/v1/kv/traefik/backends/backend2/servers/server1/url
-curl -i -H "Accept: application/json" -X PUT -d "1" http://localhost:8500/v1/kv/traefik/backends/backend2/servers/server1/weight
-curl -i -H "Accept: application/json" -X PUT -d "http://172.17.0.5:80" http://localhost:8500/v1/kv/traefik/backends/backend2/servers/server2/url
-curl -i -H "Accept: application/json" -X PUT -d "2" http://localhost:8500/v1/kv/traefik/backends/backend2/servers/server2/weight
-
-# frontend 1
-curl -i -H "Accept: application/json" -X PUT -d "backend2" http://localhost:8500/v1/kv/traefik/frontends/frontend1/backend
-curl -i -H "Accept: application/json" -X PUT -d "http" http://localhost:8500/v1/kv/traefik/frontends/frontend1/entrypoints
-curl -i -H "Accept: application/json" -X PUT -d "Host:test.localhost" http://localhost:8500/v1/kv/traefik/frontends/frontend1/routes/test_1/rule
-
-# frontend 2
-curl -i -H "Accept: application/json" -X PUT -d "backend1" http://localhost:8500/v1/kv/traefik/frontends/frontend2/backend
-curl -i -H "Accept: application/json" -X PUT -d "http" http://localhost:8500/v1/kv/traefik/frontends/frontend2/entrypoints
-curl -i -H "Accept: application/json" -X PUT -d "Path:/test" http://localhost:8500/v1/kv/traefik/frontends/frontend2/routes/test_2/rule
-
-
-# certificate 1
-curl -i -H "Accept: application/json" -X PUT -d "https" http://localhost:8500/v1/kv/traefik/tls/pair1/entrypoints
-curl -i -H "Accept: application/json" -X PUT -d "/tmp/test1.crt" http://localhost:8500/v1/kv/traefik/tls/pair1/certificate/certfile
-curl -i -H "Accept: application/json" -X PUT -d "/tmp/test1.key" http://localhost:8500/v1/kv/traefik/tls/pair1/certificate/keyfile
-
-# certificate 2
-curl -i -H "Accept: application/json" -X PUT -d "http,https" http://localhost:8500/v1/kv/traefik/tls/pair2/entrypoints
-curl -i -H "Accept: application/json" -X PUT -d "/tmp/test2.crt" http://localhost:8500/v1/kv/traefik/tls/pair2/certificate/certfile
-curl -i -H "Accept: application/json" -X PUT -d "/tmp/test2.key" http://localhost:8500/v1/kv/traefik/tls/pair2/certificate/keyfile
diff --git a/examples/etcd-config.sh b/examples/etcd-config.sh
deleted file mode 100755
index 0bb0b69c7..000000000
--- a/examples/etcd-config.sh
+++ /dev/null
@@ -1,115 +0,0 @@
-#! /usr/bin/env bash
-
-#
-# Insert data in ETCD V3
-function insert_etcd2_data() {
- # backend 1
- curl -i -H "Accept: application/json" -X PUT -d value="NetworkErrorRatio() > 0.5" http://localhost:2379/v2/keys/traefik/backends/backend1/circuitbreaker/expression
- curl -i -H "Accept: application/json" -X PUT -d value="http://172.17.0.2:80" http://localhost:2379/v2/keys/traefik/backends/backend1/servers/server1/url
- curl -i -H "Accept: application/json" -X PUT -d value="10" http://localhost:2379/v2/keys/traefik/backends/backend1/servers/server1/weight
- curl -i -H "Accept: application/json" -X PUT -d value="http://172.17.0.3:80" http://localhost:2379/v2/keys/traefik/backends/backend1/servers/server2/url
- curl -i -H "Accept: application/json" -X PUT -d value="1" http://localhost:2379/v2/keys/traefik/backends/backend1/servers/server2/weight
-
- # backend 2
- curl -i -H "Accept: application/json" -X PUT -d value="drr" http://localhost:2379/v2/keys/traefik/backends/backend2/loadbalancer/method
- curl -i -H "Accept: application/json" -X PUT -d value="http://172.17.0.4:80" http://localhost:2379/v2/keys/traefik/backends/backend2/servers/server1/url
- curl -i -H "Accept: application/json" -X PUT -d value="1" http://localhost:2379/v2/keys/traefik/backends/backend2/servers/server1/weight
- curl -i -H "Accept: application/json" -X PUT -d value="http://172.17.0.5:80" http://localhost:2379/v2/keys/traefik/backends/backend2/servers/server2/url
- curl -i -H "Accept: application/json" -X PUT -d value="2" http://localhost:2379/v2/keys/traefik/backends/backend2/servers/server2/weight
-
- # frontend 1
- curl -i -H "Accept: application/json" -X PUT -d value="backend2" http://localhost:2379/v2/keys/traefik/frontends/frontend1/backend
- curl -i -H "Accept: application/json" -X PUT -d value="http" http://localhost:2379/v2/keys/traefik/frontends/frontend1/entrypoints
- curl -i -H "Accept: application/json" -X PUT -d value="Host:test.localhost" http://localhost:2379/v2/keys/traefik/frontends/frontend1/routes/test_1/rule
-
- # frontend 2
- curl -i -H "Accept: application/json" -X PUT -d value="backend1" http://localhost:2379/v2/keys/traefik/frontends/frontend2/backend
- curl -i -H "Accept: application/json" -X PUT -d value="http" http://localhost:2379/v2/keys/traefik/frontends/frontend2/entrypoints
- curl -i -H "Accept: application/json" -X PUT -d value="Path:/test" http://localhost:2379/v2/keys/traefik/frontends/frontend2/routes/test_2/rule
-
- # certificate 1
- curl -i -H "Accept: application/json" -X PUT -d value="https" http://localhost:2379/v2/keys/traefik/tls/pair1/entrypoints
- curl -i -H "Accept: application/json" -X PUT -d value="/tmp/test1.crt" http://localhost:2379/v2/keys/traefik/tls/pair1/certificate/certfile
- curl -i -H "Accept: application/json" -X PUT -d value="/tmp/test1.key" http://localhost:2379/v2/keys/traefik/tls/pair1/certificate/keyfile
-
- # certificate 2
- curl -i -H "Accept: application/json" -X PUT -d value="http,https" http://localhost:2379/v2/keys/traefik/tls/pair2/entrypoints
- curl -i -H "Accept: application/json" -X PUT -d value="/tmp/test2.crt" http://localhost:2379/v2/keys/traefik/tls/pair2/certificate/certfile
- curl -i -H "Accept: application/json" -X PUT -d value="/tmp/test2.key" http://localhost:2379/v2/keys/traefik/tls/pair2/certificate/keyfile
-}
-
-#
-# Insert data in ETCD V3
-# $1 = ECTD IP address
-# Note : This function allows adding data in a ETCD V3 which is directly installed on a host
-# or in container which binds its port 2379 on a host in the way to allows etcd_client container to access it.
-function insert_etcd3_data() {
-
- readonly etcd_ip=$1
- # backend 1
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend1/circuitbreaker/expression" "NetworkErrorRatio() > 0.5"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend1/servers/server1/url" "http://172.17.0.2:80"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend1/servers/server1/weight" "10"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend1/servers/server2/url" "http://172.17.0.3:80"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend1/servers/server2/weight" "1"
-
- # backend 2
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend2/loadbalancer/method" "drr"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend2/servers/server1/url" "http://172.17.0.4:80"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend2/servers/server1/weight" "1"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend2/servers/server2/url" "http://172.17.0.5:80"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/backends/backend2/servers/server2/weight" "2"
-
- # frontend 1
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/frontends/frontend1/backend" "backend2"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik//frontends/frontend1/entrypoints" "http"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/frontends/frontend1/routes/test_1/rule" "Host:test.localhost"
-
- # frontend 2
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/frontends/frontend2/backend" "backend1"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/frontends/frontend2/entrypoints" "http"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/frontends/frontend2/routes/test_2/rule" "Path:/test"
-
- # certificate 1
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/tls/pair1/entrypoints" "https"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/tls/pair1/certificate/certfile" "/tmp/test1.crt"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/tls/pair1/certificate/keyfile" "/tmp/test1.key"
-
- # certificate 2
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/tls/pair2/entrypoints" "https"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/tls/pair2/certificate/certfile" "/tmp/test2.crt"
- docker container run --rm -ti -e ETCDCTL_DIAL_="TIMEOUT 10s" -e ETCDCTL_API="3" tenstartups/etcdctl --endpoints=[$etcd_ip:2379] put "/traefik/tls/pair2/certificate/keyfile" "/tmp/test2.key"
-}
-
-function show_usage() {
- echo "USAGE : etcd-config.sh ETCD_API_VERSION [ETCD_IP_ADDRESS]"
- echo " ETCD_API_VERSION : Values V2 or V3 (V3 requires ETCD_IP_ADDRESS)"
- echo " ETCD_IP_ADDRESS : Host ETCD IP address (not 127.0.0.1)"
-}
-
-function main() {
- case $# in
- 1)
- if [[ $1 == "V2" ]]; then
- insert_etcd2_data
- else
- show_usage
- exit 1
- fi
- ;;
- 2)
- if [[ $1 == "V3" && $2 != "127.0.0.1" && ! -z $(echo $2 | grep -oE "([0-9]+(\.)?){4}") ]]; then
- insert_etcd3_data $2
- else
- show_usage
- exit 1
- fi
- ;;
- *)
- show_usage
- exit 1
- ;;
- esac
-}
-
-main $@
diff --git a/examples/k8s.namespace.yaml b/examples/k8s.namespace.yaml
deleted file mode 100755
index abc1ad232..000000000
--- a/examples/k8s.namespace.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-kind: Namespace
-apiVersion: v1
-metadata:
- name: kube-system
- labels:
- name: kube-system
diff --git a/examples/k8s/cheese-default-ingress.yaml b/examples/k8s/cheese-default-ingress.yaml
deleted file mode 100644
index 3c0d4f010..000000000
--- a/examples/k8s/cheese-default-ingress.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: cheese-default
-spec:
- backend:
- serviceName: stilton
- servicePort: 80
diff --git a/examples/k8s/cheese-deployments.yaml b/examples/k8s/cheese-deployments.yaml
deleted file mode 100644
index 5342136d2..000000000
--- a/examples/k8s/cheese-deployments.yaml
+++ /dev/null
@@ -1,99 +0,0 @@
----
-kind: Deployment
-apiVersion: extensions/v1beta1
-metadata:
- name: stilton
- labels:
- app: cheese
- cheese: stilton
-spec:
- replicas: 2
- selector:
- matchLabels:
- app: cheese
- task: stilton
- template:
- metadata:
- labels:
- app: cheese
- task: stilton
- version: v0.0.1
- spec:
- containers:
- - name: cheese
- image: errm/cheese:stilton
- resources:
- requests:
- cpu: 100m
- memory: 50Mi
- limits:
- cpu: 100m
- memory: 50Mi
- ports:
- - containerPort: 80
----
-kind: Deployment
-apiVersion: extensions/v1beta1
-metadata:
- name: cheddar
- labels:
- app: cheese
- cheese: cheddar
-spec:
- replicas: 2
- selector:
- matchLabels:
- app: cheese
- task: cheddar
- template:
- metadata:
- labels:
- app: cheese
- task: cheddar
- version: v0.0.1
- spec:
- containers:
- - name: cheese
- image: errm/cheese:cheddar
- resources:
- requests:
- cpu: 100m
- memory: 50Mi
- limits:
- cpu: 100m
- memory: 50Mi
- ports:
- - containerPort: 80
----
-kind: Deployment
-apiVersion: extensions/v1beta1
-metadata:
- name: wensleydale
- labels:
- app: cheese
- cheese: wensleydale
-spec:
- replicas: 2
- selector:
- matchLabels:
- app: cheese
- task: wensleydale
- template:
- metadata:
- labels:
- app: cheese
- task: wensleydale
- version: v0.0.1
- spec:
- containers:
- - name: cheese
- image: errm/cheese:wensleydale
- resources:
- requests:
- cpu: 100m
- memory: 50Mi
- limits:
- cpu: 100m
- memory: 50Mi
- ports:
- - containerPort: 80
diff --git a/examples/k8s/cheese-ingress.yaml b/examples/k8s/cheese-ingress.yaml
deleted file mode 100644
index 4fbbe2123..000000000
--- a/examples/k8s/cheese-ingress.yaml
+++ /dev/null
@@ -1,27 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: cheese
-spec:
- rules:
- - host: stilton.minikube
- http:
- paths:
- - path: /
- backend:
- serviceName: stilton
- servicePort: http
- - host: cheddar.minikube
- http:
- paths:
- - path: /
- backend:
- serviceName: cheddar
- servicePort: http
- - host: wensleydale.minikube
- http:
- paths:
- - path: /
- backend:
- serviceName: wensleydale
- servicePort: http
diff --git a/examples/k8s/cheese-services.yaml b/examples/k8s/cheese-services.yaml
deleted file mode 100644
index 1a57a1ae0..000000000
--- a/examples/k8s/cheese-services.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
----
-apiVersion: v1
-kind: Service
-metadata:
- name: stilton
-spec:
- ports:
- - name: http
- targetPort: 80
- port: 80
- selector:
- app: cheese
- task: stilton
----
-apiVersion: v1
-kind: Service
-metadata:
- name: cheddar
-spec:
- ports:
- - name: http
- targetPort: 80
- port: 80
- selector:
- app: cheese
- task: cheddar
----
-apiVersion: v1
-kind: Service
-metadata:
- name: wensleydale
-spec:
- ports:
- - name: http
- targetPort: 80
- port: 80
- selector:
- app: cheese
- task: wensleydale
diff --git a/examples/k8s/cheeses-ingress.yaml b/examples/k8s/cheeses-ingress.yaml
deleted file mode 100644
index 863bd446b..000000000
--- a/examples/k8s/cheeses-ingress.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: cheeses
- annotations:
- traefik.frontend.rule.type: PathPrefixStrip
-spec:
- rules:
- - host: cheeses.minikube
- http:
- paths:
- - path: /stilton
- backend:
- serviceName: stilton
- servicePort: http
- - path: /cheddar
- backend:
- serviceName: cheddar
- servicePort: http
- - path: /wensleydale
- backend:
- serviceName: wensleydale
- servicePort: http
diff --git a/examples/k8s/traefik-deployment.yaml b/examples/k8s/traefik-deployment.yaml
deleted file mode 100644
index 1ad9f0d4e..000000000
--- a/examples/k8s/traefik-deployment.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: traefik-ingress-controller
- namespace: kube-system
----
-kind: Deployment
-apiVersion: extensions/v1beta1
-metadata:
- name: traefik-ingress-controller
- namespace: kube-system
- labels:
- k8s-app: traefik-ingress-lb
-spec:
- replicas: 1
- selector:
- matchLabels:
- k8s-app: traefik-ingress-lb
- template:
- metadata:
- labels:
- k8s-app: traefik-ingress-lb
- name: traefik-ingress-lb
- spec:
- serviceAccountName: traefik-ingress-controller
- terminationGracePeriodSeconds: 60
- containers:
- - image: traefik
- name: traefik-ingress-lb
- ports:
- - name: http
- containerPort: 80
- - name: admin
- containerPort: 8080
- args:
- - --api
- - --kubernetes
- - --logLevel=INFO
----
-kind: Service
-apiVersion: v1
-metadata:
- name: traefik-ingress-service
- namespace: kube-system
-spec:
- selector:
- k8s-app: traefik-ingress-lb
- ports:
- - protocol: TCP
- port: 80
- name: web
- - protocol: TCP
- port: 8080
- name: admin
- type: NodePort
diff --git a/examples/k8s/traefik-ds.yaml b/examples/k8s/traefik-ds.yaml
deleted file mode 100644
index 8a5659054..000000000
--- a/examples/k8s/traefik-ds.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: traefik-ingress-controller
- namespace: kube-system
----
-kind: DaemonSet
-apiVersion: extensions/v1beta1
-metadata:
- name: traefik-ingress-controller
- namespace: kube-system
- labels:
- k8s-app: traefik-ingress-lb
-spec:
- template:
- metadata:
- labels:
- k8s-app: traefik-ingress-lb
- name: traefik-ingress-lb
- spec:
- serviceAccountName: traefik-ingress-controller
- terminationGracePeriodSeconds: 60
- containers:
- - image: traefik
- name: traefik-ingress-lb
- ports:
- - name: http
- containerPort: 80
- hostPort: 80
- - name: admin
- containerPort: 8080
- hostPort: 8080
- securityContext:
- capabilities:
- drop:
- - ALL
- add:
- - NET_BIND_SERVICE
- args:
- - --api
- - --kubernetes
- - --logLevel=INFO
----
-kind: Service
-apiVersion: v1
-metadata:
- name: traefik-ingress-service
- namespace: kube-system
-spec:
- selector:
- k8s-app: traefik-ingress-lb
- ports:
- - protocol: TCP
- port: 80
- name: web
- - protocol: TCP
- port: 8080
- name: admin
diff --git a/examples/k8s/traefik-rbac.yaml b/examples/k8s/traefik-rbac.yaml
deleted file mode 100644
index 35601dac4..000000000
--- a/examples/k8s/traefik-rbac.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-kind: ClusterRole
-apiVersion: rbac.authorization.k8s.io/v1beta1
-metadata:
- name: traefik-ingress-controller
-rules:
- - apiGroups:
- - ""
- resources:
- - services
- - endpoints
- - secrets
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - extensions
- resources:
- - ingresses
- verbs:
- - get
- - list
- - watch
- - apiGroups:
- - extensions
- resources:
- - ingresses/status
- verbs:
- - update
----
-kind: ClusterRoleBinding
-apiVersion: rbac.authorization.k8s.io/v1beta1
-metadata:
- name: traefik-ingress-controller
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: traefik-ingress-controller
-subjects:
-- kind: ServiceAccount
- name: traefik-ingress-controller
- namespace: kube-system
diff --git a/examples/k8s/ui.yaml b/examples/k8s/ui.yaml
deleted file mode 100644
index ffacef4bd..000000000
--- a/examples/k8s/ui.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
----
-apiVersion: v1
-kind: Service
-metadata:
- name: traefik-web-ui
- namespace: kube-system
-spec:
- selector:
- k8s-app: traefik-ingress-lb
- ports:
- - name: web
- port: 80
- targetPort: 8080
----
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: traefik-web-ui
- namespace: kube-system
-spec:
- rules:
- - host: traefik-ui.minikube
- http:
- paths:
- - path: /
- backend:
- serviceName: traefik-web-ui
- servicePort: web
diff --git a/examples/quickstart/README.md b/examples/quickstart/README.md
deleted file mode 100644
index 0f977fb0a..000000000
--- a/examples/quickstart/README.md
+++ /dev/null
@@ -1,107 +0,0 @@
-## The Traefik Quickstart (Using Docker)
-
-In this quickstart, we'll use [Docker compose](https://docs.docker.com/compose) to create our demo infrastructure.
-
-To save some time, you can clone [Traefik's repository](https://github.com/containous/traefik) and use the quickstart files located in the [examples/quickstart](https://github.com/containous/traefik/tree/master/examples/quickstart/) directory.
-
-### 1 — Launch Traefik — Tell It to Listen to Docker
-
-Create a `docker-compose.yml` file where you will define a `reverse-proxy` service that uses the official Traefik image:
-
-```yaml
-version: '3'
-
-services:
- reverse-proxy:
- image: traefik # The official Traefik docker image
- command: --api --docker # Enables the web UI and tells Traefik to listen to docker
- ports:
- - "80:80" # The HTTP port
- - "8080:8080" # The Web UI (enabled by --api)
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock #So that Traefik can listen to the Docker events
-```
-
-**That's it. Now you can launch Traefik!**
-
-Start your `reverse-proxy` with the following command:
-
-```shell
-docker-compose up -d reverse-proxy
-```
-
-You can open a browser and go to [http://localhost:8080](http://localhost:8080) to see Traefik's dashboard (we'll go back there once we have launched a service in step 2).
-
-### 2 — Launch a Service — Traefik Detects It and Creates a Route for You
-
-Now that we have a Traefik instance up and running, we will deploy new services.
-
-Edit your `docker-compose.yml` file and add the following at the end of your file.
-
-```yaml
-# ...
- whoami:
- image: containous/whoami # A container that exposes an API to show its IP address
- labels:
- - "traefik.http.routers.whoami.rule=Host:whoami.docker.localhost"
-```
-
-The above defines `whoami`: a simple web service that outputs information about the machine it is deployed on (its IP address, host, and so on).
-
-Start the `whoami` service with the following command:
-
-```shell
-docker-compose up -d whoami
-```
-
-Go back to your browser ([http://localhost:8080](http://localhost:8080)) and see that Traefik has automatically detected the new container and updated its own configuration.
-
-When Traefik detects new services, it creates the corresponding routes so you can call them ... _let's see!_ (Here, we're using curl)
-
-```shell
-curl -H Host:whoami.docker.localhost http://127.0.0.1
-```
-
-_Shows the following output:_
-```yaml
-Hostname: 8656c8ddca6c
-IP: 172.27.0.3
-#...
-```
-
-### 3 — Launch More Instances — Traefik Load Balances Them
-
-Run more instances of your `whoami` service with the following command:
-
-```shell
-docker-compose up -d --scale whoami=2
-```
-
-Go back to your browser ([http://localhost:8080](http://localhost:8080)) and see that Traefik has automatically detected the new instance of the container.
-
-Finally, see that Traefik load-balances between the two instances of your services by running twice the following command:
-
-```shell
-curl -H Host:whoami.docker.localhost http://127.0.0.1
-```
-
-The output will show alternatively one of the followings:
-
-```yaml
-Hostname: 8656c8ddca6c
-IP: 172.27.0.3
-#...
-```
-
-```yaml
-Hostname: 8458f154e1f1
-IP: 172.27.0.4
-# ...
-```
-
-### 4 — Enjoy Traefik's Magic
-
-Now that you have a basic understanding of how Traefik can automatically create the routes to your services and load balance them, it might be time to dive into [the documentation](https://docs.traefik.io/) and let Traefik work for you!
-Whatever your infrastructure is, there is probably [an available Traefik backend](https://docs.traefik.io/#supported-backends) that will do the job.
-
-Our recommendation would be to see for yourself how simple it is to enable HTTPS with [Traefik's let's encrypt integration](https://docs.traefik.io/user-guide/examples/#lets-encrypt-support) using the dedicated [user guide](https://docs.traefik.io/user-guide/docker-and-lets-encrypt/).
diff --git a/examples/quickstart/docker-compose.yml b/examples/quickstart/docker-compose.yml
deleted file mode 100644
index 2f3cd0894..000000000
--- a/examples/quickstart/docker-compose.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-version: '3'
-
-services:
- # The reverse proxy service (Traefik)
- reverse-proxy:
- image: traefik # The official Traefik docker image
- command: --api --docker # Enables the web UI and tells Traefik to listen to docker
- ports:
- - "80:80" # The HTTP port
- - "8080:8080" # The Web UI (enabled by --api)
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
-
- # A container that exposes a simple API
- whoami:
- image: containous/whoami # A container that exposes an API to show its IP address
- labels:
- - "traefik.http.routers.whoami.rule=Host:whoami.docker.localhost"
diff --git a/examples/traefik.crt b/examples/traefik.crt
deleted file mode 100644
index fe1c90f5f..000000000
--- a/examples/traefik.crt
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDHDCCAgQCCQDODsC1A72mSDANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJG
-UjELMAkGA1UECAwCTVAxDTALBgNVBAcMBFRsc2UxEzARBgNVBAoMCkNvbnRhaW5v
-dXMxEDAOBgNVBAsMB1RyYWVmaWswHhcNMTcwODI1MTQxMzU3WhcNMjcwODIzMTQx
-MzU3WjBQMQswCQYDVQQGEwJGUjELMAkGA1UECAwCTVAxDTALBgNVBAcMBFRsc2Ux
-EzARBgNVBAoMCkNvbnRhaW5vdXMxEDAOBgNVBAsMB1RyYWVmaWswggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCacKEL5+AlaArZWyfysY1qbtOWdGj0xwq1
-tZ6GZ0fb+0uVeKzJxPBulpwhmXiofUncvFOpr1paaQQRRgE71A6PSIzc64a3NGmm
-dbju3eOdFVm9za37asFTA2Y87v9HSYJyNSeQgdVCbykhHBrHPrP6kfPx8T7uiPRT
-cYWhL9Ko1IuW2rTjMt2UUmk1IPk2WFMWKM1mopqzrxu/NB+O5wOs7MRO1Z8BtAak
-bclxCQaaE0TgjChlxVPP0us77rCq3///i9kf1x0PGt/LyseaxzAoKfZ6kM6Uq0yk
-psWGSxu7sPXmERsN4tZLj7d/J5A2nvnO7h/bhl2FtBAauzsi3LIbAgMBAAEwDQYJ
-KoZIhvcNAQELBQADggEBACQbp2gcCFbbQE47SwdI7rWDIITylHj0uCXHJfUggkUl
-F/WHIBUdpVaWVOLSysmG8n6fmWTDZOCVNA1+XMjRZUPwVvr//XHjcFpOKfHW47r2
-VeMHQYQpZH7QmsjyvxXZOrz/Ft3uA9Dna1N5nHRYflpfasdRmXbNK81IykR93Dfn
-jV9ecDAQl0ru/YcMmabYx3uoWyTvO57EnbXfiPcwIdKGpykXKTv64vAMtkrJicgX
-jhh+p7ayKklfxinEL7/GCjfSBip7J4DszvLVoyIzmS7HjVdJkpu9agZLYsSl4tCJ
-qnh7nkp/Fd0XdTV17FwL/veMlpq9AkillIKjHl6vFL0=
------END CERTIFICATE-----
diff --git a/examples/traefik.key b/examples/traefik.key
deleted file mode 100644
index 95e6425a0..000000000
--- a/examples/traefik.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAmnChC+fgJWgK2Vsn8rGNam7TlnRo9McKtbWehmdH2/tLlXis
-ycTwbpacIZl4qH1J3LxTqa9aWmkEEUYBO9QOj0iM3OuGtzRppnW47t3jnRVZvc2t
-+2rBUwNmPO7/R0mCcjUnkIHVQm8pIRwaxz6z+pHz8fE+7oj0U3GFoS/SqNSLltq0
-4zLdlFJpNSD5NlhTFijNZqKas68bvzQfjucDrOzETtWfAbQGpG3JcQkGmhNE4Iwo
-ZcVTz9LrO+6wqt///4vZH9cdDxrfy8rHmscwKCn2epDOlKtMpKbFhksbu7D15hEb
-DeLWS4+3fyeQNp75zu4f24ZdhbQQGrs7ItyyGwIDAQABAoIBAQCYFpBSJC/1Rmdg
-s0c81iMYjDlsMgll/FmMpmWNoEoA1ZESintGW94WWdU5tWRAMNm7Oe797ISDAmYS
-CKmQXH1WFzE5IexRoJjmZ4oOGY9cEzmEE/fg3rmxYWieWxIkBr0icTwcL+9u8/9B
-7uZkDli5SmA8g8HgsBhD0Eizel/vB5DyUtm8VoVYvDkkljYO/PGT/ectclr6JK9g
-biP4jkA2a3CTb8KeyBTrYbULWCtwZ7H5fmySXIX4QpJmEcx5Af7nYITU0OEK63uV
-NKCQLDpHyOrDIj+mwjxASBQdUDU7NApCR2MrzmGDRPPCGiEWYao5bCrsNRAoDFuy
-Ux2H+jnRAoGBAM2nOcjJ7nKmOEUTyB0J9ElJRBoChBJAF3ak/aj4xDYAz/hadQL0
-OuulOgmYwHjv7Y5Tx6P5ZQgyComa6rKfNZ/mzgm1wMPsKOi5q5T2Zj/0Pt6xih3x
-+PxonLiIS7221U5xlBZUyW1LLIM4gT7NS9n2pxBuNESotmSwFnPru4OzAoGBAMA/
-vyXAnOTRi1on8TDItdPDgq13s0I+q+Fj4+KVCEifRiT9P9NRKQNfvRZI39QGmJ+x
-kGx6VY96SZo5ysm4ElkcKLJ7EcZ38XehG9rar6ZLEAgY4KnA4wDZWmJ1dUm4ZJZI
-Sj2EFmb30V1FP/qo9TFro5Je6P0m9TjFeLKwF4P5AoGAKIu0x9KQMYh2BaB9zsPc
-pupMA/jFAzghqCGlZUAOpzsHxcZH1ZpDV5xO0f+Myws6wdngvYJ5GeGL1E93wFnF
-X85Ihv+PjtEry553prnhtPA5yPwl5/uCBHm3lGZC0JeQfJPGB5UV1XeBwilMyg39
-y25mx8WChprgwv84ngg3AyMCgYEAlb2RPvCFw9xK9FAEFwFeTrELyd1gLIrwCcBq
-MYPvTdFxK0JuQkQG8+/QMdlVLaptmoUNftDSb8zKI2w8PV44PFwofsxJDhNCavF7
-5r1K7vWsaQIni1EH/xNMyT+/uUn8XumzmbKWWGFSG5niuXR8dp/mag2u3+9GNY/p
-8RQjXNECgYAnA7rQ7UVayRQUL8NKB0jhP/J0UomrJRXYx+J5UP7QIoObXlTbDVSi
-VTAiSrhPQIFa1s8ghUgCghwq6KJsZoQzrp1fLLlV/HIN+4XXhYVAmOI/k41rCj/0
-eYTkXlXyFpcaW3h9vVjT1wN9FwbU1kNpFo/PvDLM/SQB7GhFRznDDw==
------END RSA PRIVATE KEY-----
diff --git a/examples/whoami-group.json b/examples/whoami-group.json
deleted file mode 100644
index 6d036d28a..000000000
--- a/examples/whoami-group.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "id": "/foo",
- "groups": [
- {
- "id": "/foo/bar",
- "apps": [
- {
- "id": "whoami",
- "cpus": 0.1,
- "mem": 64.0,
- "instances": 3,
- "container": {
- "type": "DOCKER",
- "docker": {
- "image": "containous/whoami",
- "network": "BRIDGE",
- "portMappings": [
- {
- "containerPort": 80,
- "hostPort": 0,
- "protocol": "tcp"
- }
- ]
- }
- },
- "healthChecks": [
- {
- "protocol": "HTTP",
- "portIndex": 0,
- "path": "/",
- "gracePeriodSeconds": 5,
- "intervalSeconds": 20,
- "maxConsecutiveFailures": 3
- }
- ]
- }
- ]
- }
- ]
-}
diff --git a/examples/whoami.json b/examples/whoami.json
deleted file mode 100644
index be883aae0..000000000
--- a/examples/whoami.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "id": "whoami",
- "cpus": 0.1,
- "mem": 64.0,
- "instances": 3,
- "container": {
- "type": "DOCKER",
- "docker": {
- "image": "containous/whoami",
- "network": "BRIDGE",
- "portMappings": [
- { "containerPort": 80, "hostPort": 0, "protocol": "tcp" }
- ]
- }
- },
- "healthChecks": [
- {
- "protocol": "HTTP",
- "portIndex": 0,
- "path": "/",
- "gracePeriodSeconds": 5,
- "intervalSeconds": 20,
- "maxConsecutiveFailures": 3
- }
- ],
- "labels": {
- "traefik.weight": "1",
- "traefik.protocol": "http",
- "traefik.frontend.rule" : "Host:test.marathon.localhost",
- "traefik.frontend.priority" : "10"
- }
-}
diff --git a/generate.go b/generate.go
index 5d3c0e2c4..e3ddc5777 100644
--- a/generate.go
+++ b/generate.go
@@ -1,8 +1,5 @@
-//go:generate rm -vf autogen/gentemplates/gen.go
//go:generate rm -vf autogen/genstatic/gen.go
//go:generate mkdir -p static
-//go:generate go-bindata -pkg gentemplates -nometadata -nocompress -o autogen/gentemplates/gen.go ./templates/...
-//go:generate gofmt -s -w autogen/gentemplates/gen.go
//go:generate go-bindata -pkg genstatic -nocompress -o autogen/genstatic/gen.go ./static/...
package main
diff --git a/old/provider/consulcatalog/config_test.go b/old/provider/consulcatalog/config_test.go
index dbdd5366f..94616d60e 100644
--- a/old/provider/consulcatalog/config_test.go
+++ b/old/provider/consulcatalog/config_test.go
@@ -1,3 +1,5 @@
+// +build ignore
+
package consulcatalog
import (
diff --git a/old/provider/ecs/config_segment_test.go b/old/provider/ecs/config_segment_test.go
index 75cc0474f..efc672b37 100644
--- a/old/provider/ecs/config_segment_test.go
+++ b/old/provider/ecs/config_segment_test.go
@@ -1,3 +1,5 @@
+// +build ignore
+
package ecs
import (
diff --git a/old/provider/ecs/config_test.go b/old/provider/ecs/config_test.go
index 8bca1a7df..60962adfd 100644
--- a/old/provider/ecs/config_test.go
+++ b/old/provider/ecs/config_test.go
@@ -1,3 +1,5 @@
+// +build ignore
+
package ecs
import (
diff --git a/old/provider/mesos/config_segment_test.go b/old/provider/mesos/config_segment_test.go
index 63e82423c..3262b91ee 100644
--- a/old/provider/mesos/config_segment_test.go
+++ b/old/provider/mesos/config_segment_test.go
@@ -1,3 +1,5 @@
+// +build ignore
+
package mesos
import (
diff --git a/old/provider/mesos/config_test.go b/old/provider/mesos/config_test.go
index 9e5540091..e31f1e259 100644
--- a/old/provider/mesos/config_test.go
+++ b/old/provider/mesos/config_test.go
@@ -1,3 +1,5 @@
+// +build ignore
+
package mesos
import (
diff --git a/old/provider/provider.go b/old/provider/provider.go
index 0cf471a0d..184d1c6e9 100644
--- a/old/provider/provider.go
+++ b/old/provider/provider.go
@@ -2,14 +2,12 @@ package provider
import (
"bytes"
- "io/ioutil"
"strings"
"text/template"
"unicode"
"github.com/BurntSushi/toml"
"github.com/Masterminds/sprig"
- "github.com/containous/traefik/autogen/gentemplates"
"github.com/containous/traefik/old/log"
"github.com/containous/traefik/old/types"
"github.com/containous/traefik/safe"
@@ -107,24 +105,9 @@ func (p *BaseProvider) DecodeConfiguration(content string) (*types.Configuration
return configuration, nil
}
+// genTemplate does not do anything anymore because we removed the templates
func (p *BaseProvider) getTemplateContent(defaultTemplateFile string) (string, error) {
- if len(p.Filename) > 0 {
- buf, err := ioutil.ReadFile(p.Filename)
- if err != nil {
- return "", err
- }
- return string(buf), nil
- }
-
- if strings.HasSuffix(defaultTemplateFile, ".tmpl") {
- buf, err := gentemplates.Asset(defaultTemplateFile)
- if err != nil {
- return "", err
- }
- return string(buf), nil
- }
-
- return defaultTemplateFile, nil
+ return "", nil
}
func split(sep, s string) []string {
diff --git a/old/provider/rancher/config_test.go b/old/provider/rancher/config_test.go
index a98ee7152..b87dc6bf3 100644
--- a/old/provider/rancher/config_test.go
+++ b/old/provider/rancher/config_test.go
@@ -1,3 +1,5 @@
+// +build ignore
+
package rancher
import (
diff --git a/script/validate-autogen b/script/validate-autogen
deleted file mode 100644
index 594b031d5..000000000
--- a/script/validate-autogen
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env bash
-
-set -o errexit
-set -o pipefail
-set -o nounset
-
-SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"; export SCRIPTDIR
-source "${SCRIPTDIR}/.validate"
-
-# Iterate over all directories containing templates folders.
-IFS=$'\n' files=( $(validate_diff --diff-filter=ACMR --name-only -- templates || true) )
-
-if [[ ${#files[@]} -gt 0 ]]; then
- echo "checking autogen is up-to-date with templates..."
- go generate >/dev/null
- # Let see if the working directory is clean
- diffs="$(git status --porcelain -- autogen 2>/dev/null)"
- if [[ "$diffs" ]]; then
- {
- echo "The result of 'go generate' differs"
- echo
- echo "$diffs"
- echo
- echo 'Please do "go generate" to update the `autogen` package.'
- echo
- } >&2
- exit 2
- fi
-fi
-
-echo 'Congratulations! All autogen changes are done the right way.'
\ No newline at end of file
diff --git a/templates/consul_catalog.tmpl b/templates/consul_catalog.tmpl
deleted file mode 100644
index a670093b1..000000000
--- a/templates/consul_catalog.tmpl
+++ /dev/null
@@ -1,276 +0,0 @@
-[backends]
-{{range $service := .Services}}
- {{ $backendName := getServiceBackendName $service }}
-
- {{ $circuitBreaker := getCircuitBreaker $service.TraefikLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $service.TraefikLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
-
-
- {{ $loadBalancer := getLoadBalancer $service.TraefikLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $service.TraefikLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $service.TraefikLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $service.TraefikLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
-{{end}}
-{{range $index, $node := .Nodes}}
- {{ $server := getServer $node }}
- [backends."backend-{{ getNodeBackendName $node }}".servers."{{ getServerName $node $index }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
-
-{{end}}
-
-[frontends]
-{{range $service := .Services}}
-
- [frontends."frontend-{{ $service.ServiceName }}"]
- backend = "backend-{{ getServiceBackendName $service }}"
- priority = {{ getPriority $service.TraefikLabels }}
- passHostHeader = {{ getPassHostHeader $service.TraefikLabels }}
- passTLSCert = {{ getPassTLSCert $service.TraefikLabels }}
-
- entryPoints = [{{range getFrontEndEntryPoints $service.TraefikLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $service.TraefikLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."frontend-{{ $service.ServiceName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $service.TraefikLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $service.ServiceName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $service.ServiceName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $service.TraefikLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $service.ServiceName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $service.ServiceName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $service.TraefikLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $service.ServiceName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $service.TraefikLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $service.ServiceName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $service.ServiceName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $service.TraefikLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $service.ServiceName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $service.TraefikLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $service.ServiceName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $service.ServiceName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $service.ServiceName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $service.ServiceName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders}}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $service.ServiceName }}".routes."route-host-{{ $service.ServiceName }}"]
- rule = "{{ getFrontendRule $service }}"
-
-{{end}}
diff --git a/templates/docker.tmpl b/templates/docker.tmpl
deleted file mode 100644
index 2bf3528f1..000000000
--- a/templates/docker.tmpl
+++ /dev/null
@@ -1,277 +0,0 @@
-{{$backendServers := .Servers}}
-[backends]
-{{range $backendName, $servers := .Servers}}
-{{ $backend := index $servers 0 }}
-
- {{ $circuitBreaker := getCircuitBreaker $backend.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $backend.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $backend.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $backend.SegmentLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $backend.SegmentLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $backend.SegmentLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $servers }}
- [backends."backend-{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontendName, $containers := .Frontends }}
- {{ $container := index $containers 0 }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ getBackendName $container }}"
- priority = {{ getPriority $container.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $container.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $container.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $container.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $container.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Issuer }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $container.SegmentLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- realm = "{{ $auth.Basic.Realm }}"
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $container.SegmentLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $container.SegmentLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $container.SegmentLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $container.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $container.SegmentLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-frontend-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $container $container.SegmentLabels }}"
-
-{{end}}
diff --git a/templates/ecs.tmpl b/templates/ecs.tmpl
deleted file mode 100644
index 4eba54ec3..000000000
--- a/templates/ecs.tmpl
+++ /dev/null
@@ -1,277 +0,0 @@
-[backends]
-{{range $serviceName, $instances := .Services }}
- {{ $firstInstance := index $instances 0 }}
-
- {{ $circuitBreaker := getCircuitBreaker $firstInstance.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $serviceName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $firstInstance.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $serviceName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $firstInstance.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $serviceName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $serviceName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $firstInstance.SegmentLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $serviceName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $firstInstance.SegmentLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $serviceName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $serviceName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $firstInstance.SegmentLabels }}
- {{if $buffering }}
- [backends."backend-{{ $serviceName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $instances }}
- [backends."backend-{{ $serviceName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $serviceName, $instances := .Services }}
-{{range $instance := filterFrontends $instances }}
-
- {{ $frontendName := getFrontendName $instance }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ $serviceName }}"
- priority = {{ getPriority $instance.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $instance.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $instance.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $instance.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $instance.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Issuer }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $instance.SegmentLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $instance.SegmentLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $instance.SegmentLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $instance.SegmentLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $instance.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $instance.SegmentLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-frontend-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $instance }}"
-
-{{end}}
-{{end}}
\ No newline at end of file
diff --git a/templates/eureka.tmpl b/templates/eureka.tmpl
deleted file mode 100644
index ff42d4fd1..000000000
--- a/templates/eureka.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-[backends]
-{{range $app := .Applications }}
-
- [backends.backend-{{ $app.Name }}]
-
- {{range $instance := .Instances }}
- [backends."backend-{{ $app.Name }}".servers."server-{{ getInstanceID $instance }}"]
- url = "{{ getProtocol $instance }}://{{ .IpAddr }}:{{ getPort $instance }}"
- weight = {{ getWeight $instance }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $app := .Applications }}
-
- [frontends."frontend-{{ $app.Name }}"]
- backend = "backend-{{ $app.Name }}"
- entryPoints = ["http"]
-
- [frontends."frontend-{{ $app.Name }}".routes."route-host{{ $app.Name }}"]
- rule = "Host:{{ $app.Name | tolower }}"
-
-{{end}}
diff --git a/templates/kubernetes.tmpl b/templates/kubernetes.tmpl
deleted file mode 100644
index 3448509e6..000000000
--- a/templates/kubernetes.tmpl
+++ /dev/null
@@ -1,240 +0,0 @@
-[backends]
-{{range $backendName, $backend := .Backends }}
-
- [backends."{{ $backendName }}"]
-
- {{if $backend.CircuitBreaker }}
- [backends."{{ $backendName }}".circuitBreaker]
- expression = "{{ $backend.CircuitBreaker.Expression }}"
- {{end}}
-
- {{if $backend.ResponseForwarding }}
- [backends."{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $backend.responseForwarding.FlushInterval }}"
- {{end}}
-
- [backends."{{ $backendName }}".loadBalancer]
- method = "{{ $backend.LoadBalancer.Method }}"
- {{if $backend.LoadBalancer.Stickiness }}
- [backends."{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $backend.LoadBalancer.Stickiness.CookieName }}"
- {{end}}
-
- {{if $backend.MaxConn }}
- [backends."{{ $backendName }}".maxConn]
- amount = {{ $backend.MaxConn.Amount }}
- extractorFunc = "{{ $backend.MaxConn.ExtractorFunc }}"
- {{end}}
-
- {{if $backend.Buffering }}
- [backends."{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $backend.Buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $backend.Buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $backend.Buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $backend.Buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $backend.Buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := $backend.Servers }}
- [backends."{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontendName, $frontend := .Frontends }}
-
- [frontends."{{ $frontendName }}"]
- backend = "{{ $frontend.Backend }}"
- priority = {{ $frontend.Priority }}
- passHostHeader = {{ $frontend.PassHostHeader }}
- passTLSCert = {{ $frontend.PassTLSCert }}
-
- entryPoints = [{{range $frontend.EntryPoints }}
- "{{.}}",
- {{end}}]
-
- {{if $frontend.Auth }}
- [frontends."{{ $frontendName }}".auth]
- headerField = "X-WebAuth-User"
-
- {{if $frontend.Auth.Basic }}
- [frontends."{{ $frontendName }}".auth.basic]
- removeHeader = {{$frontend.Auth.Basic.RemoveHeader}}
- users = [{{range $frontend.Auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $frontend.Auth.Digest }}
- [frontends."{{ $frontendName }}".auth.digest]
- removeHeader = {{$frontend.Auth.Digest.RemoveHeader}}
- users = [{{range $frontend.Auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $frontend.Auth.Forward }}
- [frontends."{{ $frontendName }}".auth.forward]
- address = "{{ $frontend.Auth.Forward.Address }}"
- authResponseHeaders = [{{range $frontend.Auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- trustForwardHeader = {{ $frontend.Auth.Forward.TrustForwardHeader }}
- {{if $frontend.Auth.Forward.TLS }}
- [frontends."{{ $frontendName }}".auth.forward.tls]
- cert = """{{ $frontend.Auth.Forward.TLS.Cert }}"""
- key = """{{ $frontend.Auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $frontend.Auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{end}}
-
- {{if $frontend.WhiteList }}
- [frontends."{{ $frontendName }}".whiteList]
- sourceRange = [{{range $frontend.Whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $frontend.Whitelist.IPStrategy }}
- [frontends."{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $frontend.Whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $frontend.Whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{if $frontend.Redirect }}
- [frontends."{{ $frontendName }}".redirect]
- entryPoint = "{{ $frontend.Redirect.EntryPoint }}"
- regex = "{{ $frontend.Redirect.Regex }}"
- replacement = "{{ $frontend.Redirect.Replacement }}"
- permanent = {{ $frontend.Redirect.Permanent }}
- {{end}}
-
- {{if $frontend.Errors }}
- [frontends."{{ $frontendName }}".errors]
- {{range $pageName, $page := $frontend.Errors }}
- [frontends."{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{if $frontend.RateLimit }}
- [frontends."{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $frontend.RateLimit.ExtractorFunc }}"
- [frontends."{{ $frontendName }}".rateLimit.rateSet]
- {{range $limitName, $limit := $frontend.RateLimit.RateSet }}
- [frontends."{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{if $frontend.PassTLSClientCert }}
- [frontends."{{ $frontendName }}".passTLSClientCert]
- pem = {{ $frontend.PassTLSClientCert.PEM }}
- {{ $infos := $frontend.PassTLSClientCert.Infos }}
- {{if $infos }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{if $frontend.Headers }}
- [frontends."{{ $frontendName }}".headers]
- SSLRedirect = {{ $frontend.Headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $frontend.Headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $frontend.Headers.SSLHost }}"
- SSLForceHost = {{ $frontend.Headers.SSLForceHost }}
- STSSeconds = {{ $frontend.Headers.STSSeconds }}
- STSIncludeSubdomains = {{ $frontend.Headers.STSIncludeSubdomains }}
- STSPreload = {{ $frontend.Headers.STSPreload }}
- ForceSTSHeader = {{ $frontend.Headers.ForceSTSHeader }}
- FrameDeny = {{ $frontend.Headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $frontend.Headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $frontend.Headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $frontend.Headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $frontend.Headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $frontend.Headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $frontend.Headers.PublicKey }}"
- ReferrerPolicy = "{{ $frontend.Headers.ReferrerPolicy }}"
- IsDevelopment = {{ $frontend.Headers.IsDevelopment }}
- {{if $frontend.Headers.AllowedHosts }}
- AllowedHosts = [{{range $frontend.Headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{if $frontend.Headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $frontend.Headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{if $frontend.Headers.CustomRequestHeaders }}
- [frontends."{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $frontend.Headers.CustomRequestHeaders }}
- {{ $k }} = "{{ $v }}"
- {{end}}
- {{end}}
- {{if $frontend.Headers.CustomResponseHeaders }}
- [frontends."{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $frontend.Headers.CustomResponseHeaders }}
- {{ $k }} = "{{ $v }}"
- {{end}}
- {{end}}
- {{if $frontend.Headers.SSLProxyHeaders }}
- [frontends."{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $frontend.Headers.SSLProxyHeaders }}
- {{ $k }} = "{{ $v }}"
- {{end}}
- {{end}}
- {{end}}
-
- {{range $routeName, $route := $frontend.Routes }}
- [frontends."{{ $frontendName }}".routes."{{ $routeName }}"]
- rule = "{{ $route.Rule }}"
- {{end}}
-
-{{end}}
-
-{{range $tls := .TLS }}
-[[tls]]
- entryPoints = [{{range $tls.EntryPoints }}
- "{{.}}",
- {{end}}]
- [tls.certificate]
- certFile = """{{ $tls.Certificate.CertFile }}"""
- keyFile = """{{ $tls.Certificate.KeyFile }}"""
-{{end}}
diff --git a/templates/kv.tmpl b/templates/kv.tmpl
deleted file mode 100644
index d07b8831f..000000000
--- a/templates/kv.tmpl
+++ /dev/null
@@ -1,289 +0,0 @@
-[backends]
-{{range $backend := List .Prefix "/backends/" }}
- {{ $backendName := Last $backend }}
-
- {{ $circuitBreaker := getCircuitBreaker $backend }}
- {{if $circuitBreaker }}
- [backends."{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $backend }}
- {{if $responseForwarding }}
- [backends."{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.flushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $backend }}
- {{if $loadBalancer }}
- [backends."{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $backend }}
- {{if $maxConn }}
- [backends."{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $backend }}
- {{if $healthCheck }}
- [backends."{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $backend }}
- {{if $buffering }}
- [backends."{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $backend}}
- [backends."{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontend := List .Prefix "/frontends/" }}
- {{ $frontendName := Last $frontend }}
-
- [frontends."{{ $frontendName }}"]
- backend = "{{ getBackendName $frontend }}"
- priority = {{ getPriority $frontend }}
- passHostHeader = {{ getPassHostHeader $frontend }}
- passTLSCert = {{ getPassTLSCert $frontend }}
-
- entryPoints = [{{range getEntryPoints $frontend }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $frontend }}
- {{if $tlsClientCert }}
- [frontends."{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $frontend }}
- {{if $auth }}
- [frontends."{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $frontend }}
- {{if $whitelist }}
- [frontends."{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $frontend }}
- {{if $redirect }}
- [frontends."{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $frontend }}
- {{if $errorPages }}
- [frontends."{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."{{$frontendName}}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "{{$page.Backend}}"
- query = "{{$page.Query}}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $frontend }}
- {{if $rateLimit }}
- [frontends."{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."{{ $frontendName }}".rateLimit.rateSet]
- {{range $limitName, $rateLimit := $rateLimit.RateSet }}
- [frontends."{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $rateLimit.Period }}"
- average = {{ $rateLimit.Average }}
- burst = {{ $rateLimit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $frontend }}
- {{if $headers }}
- [frontends."{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders}}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{range $routeName, $route := getRoutes $frontend }}
- [frontends."{{ $frontendName }}".routes."{{ $routeName }}"]
- rule = "{{ $route.Rule }}"
- {{end}}
-
-{{end}}
-
-{{range $tls := getTLSSection .Prefix }}
-[[tls]]
-
- entryPoints = [{{range $tls.EntryPoints }}
- "{{.}}",
- {{end}}]
-
- [tls.certificate]
- certFile = """{{ $tls.Certificate.CertFile }}"""
- keyFile = """{{ $tls.Certificate.KeyFile }}"""
-
-{{end}}
diff --git a/templates/marathon.tmpl b/templates/marathon.tmpl
deleted file mode 100644
index cc1d20313..000000000
--- a/templates/marathon.tmpl
+++ /dev/null
@@ -1,277 +0,0 @@
-{{ $apps := .Applications }}
-
-[backends]
-{{range $backendName, $app := $apps }}
-
- [backends."{{ $backendName }}"]
-
- {{ $circuitBreaker := getCircuitBreaker $app.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $app.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $app.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $app.SegmentLabels }}
- {{if $maxConn }}
- [backends."{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $app.SegmentLabels }}
- {{if $healthCheck }}
- [backends."{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends.{{ $backendName }}.healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $app.SegmentLabels }}
- {{if $buffering }}
- [backends."{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $app }}
- [backends."{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $backendName, $app := $apps }}
- {{ $frontendName := getFrontendName $app }}
-
- [frontends."{{ $frontendName }}"]
- backend = "{{ $backendName }}"
- priority = {{ getPriority $app.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $app.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $app.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $app.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $app.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $app.SegmentLabels }}
- {{if $auth }}
- [frontends."{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $app.SegmentLabels }}
- {{if $whitelist }}
- [frontends."{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $app.SegmentLabels }}
- {{if $redirect }}
- [frontends."{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $app.SegmentLabels }}
- {{if $errorPages }}
- [frontends."{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $app.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $app.SegmentLabels }}
- {{if $headers }}
- [frontends."{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."{{ $frontendName }}".routes."route-host{{ $app.ID | replace "/" "-" }}{{ getSegmentNameSuffix $app.SegmentName }}"]
- rule = "{{ getFrontendRule $app }}"
-
-{{end}}
diff --git a/templates/mesos.tmpl b/templates/mesos.tmpl
deleted file mode 100644
index a66b987be..000000000
--- a/templates/mesos.tmpl
+++ /dev/null
@@ -1,277 +0,0 @@
-[backends]
-{{range $applicationName, $tasks := .ApplicationsTasks }}
- {{ $app := index $tasks 0 }}
- {{ $backendName := getBackendName $app }}
-
- [backends."backend-{{ $backendName }}"]
-
- {{ $circuitBreaker := getCircuitBreaker $app.TraefikLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $app.TraefikLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $app.TraefikLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $app.TraefikLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $app.TraefikLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $app.TraefikLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $tasks }}
- [backends."backend-{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-{{end}}
-
-[frontends]
-{{range $applicationName, $tasks := .ApplicationsTasks }}
- {{ $app := index $tasks 0 }}
- {{ $frontendName := getFrontEndName $app }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ getBackendName $app }}"
- priority = {{ getPriority $app.TraefikLabels }}
- passHostHeader = {{ getPassHostHeader $app.TraefikLabels }}
- passTLSCert = {{ getPassTLSCert $app.TraefikLabels }}
-
- entryPoints = [{{range getEntryPoints $app.TraefikLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $app.TraefikLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $app.TraefikLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader}}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader}}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $app.TraefikLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $app.TraefikLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $app.TraefikLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $app.TraefikLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $app.TraefikLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-host-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $app }}"
-
-{{end}}
\ No newline at end of file
diff --git a/templates/notFound.tmpl b/templates/notFound.tmpl
deleted file mode 100644
index 2e8feacff..000000000
--- a/templates/notFound.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- Traefik
-
-
- Ohhhh man, this is bad...
-
-
\ No newline at end of file
diff --git a/templates/rancher.tmpl b/templates/rancher.tmpl
deleted file mode 100644
index 578107007..000000000
--- a/templates/rancher.tmpl
+++ /dev/null
@@ -1,275 +0,0 @@
-{{ $backendServers := .Backends }}
-[backends]
-{{range $backendName, $backend := .Backends }}
-
- [backends."backend-{{ $backendName }}"]
-
- {{ $circuitBreaker := getCircuitBreaker $backend.SegmentLabels }}
- {{if $circuitBreaker }}
- [backends."backend-{{ $backendName }}".circuitBreaker]
- expression = "{{ $circuitBreaker.Expression }}"
- {{end}}
-
- {{ $responseForwarding := getResponseForwarding $backend.SegmentLabels }}
- {{if $responseForwarding }}
- [backends."backend-{{ $backendName }}".responseForwarding]
- flushInterval = "{{ $responseForwarding.FlushInterval }}"
- {{end}}
-
- {{ $loadBalancer := getLoadBalancer $backend.SegmentLabels }}
- {{if $loadBalancer }}
- [backends."backend-{{ $backendName }}".loadBalancer]
- method = "{{ $loadBalancer.Method }}"
- {{if $loadBalancer.Stickiness }}
- [backends."backend-{{ $backendName }}".loadBalancer.stickiness]
- cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
- {{end}}
- {{end}}
-
- {{ $maxConn := getMaxConn $backend.SegmentLabels }}
- {{if $maxConn }}
- [backends."backend-{{ $backendName }}".maxConn]
- extractorFunc = "{{ $maxConn.ExtractorFunc }}"
- amount = {{ $maxConn.Amount }}
- {{end}}
-
- {{ $healthCheck := getHealthCheck $backend.SegmentLabels }}
- {{if $healthCheck }}
- [backends."backend-{{ $backendName }}".healthCheck]
- scheme = "{{ $healthCheck.Scheme }}"
- path = "{{ $healthCheck.Path }}"
- port = {{ $healthCheck.Port }}
- interval = "{{ $healthCheck.Interval }}"
- timeout = "{{ $healthCheck.Timeout }}"
- hostname = "{{ $healthCheck.Hostname }}"
- {{if $healthCheck.Headers }}
- [backends."backend-{{ $backendName }}".healthCheck.headers]
- {{range $k, $v := $healthCheck.Headers }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- {{ $buffering := getBuffering $backend.SegmentLabels }}
- {{if $buffering }}
- [backends."backend-{{ $backendName }}".buffering]
- maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
- memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
- maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
- memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
- retryExpression = "{{ $buffering.RetryExpression }}"
- {{end}}
-
- {{range $serverName, $server := getServers $backend}}
- [backends."backend-{{ $backendName }}".servers."{{ $serverName }}"]
- url = "{{ $server.URL }}"
- weight = {{ $server.Weight }}
- {{end}}
-
-{{end}}
-
-[frontends]
-{{range $frontendName, $service := .Frontends }}
-
- [frontends."frontend-{{ $frontendName }}"]
- backend = "backend-{{ getBackendName $service }}"
- priority = {{ getPriority $service.SegmentLabels }}
- passHostHeader = {{ getPassHostHeader $service.SegmentLabels }}
- passTLSCert = {{ getPassTLSCert $service.SegmentLabels }}
-
- entryPoints = [{{range getEntryPoints $service.SegmentLabels }}
- "{{.}}",
- {{end}}]
-
- {{ $tlsClientCert := getPassTLSClientCert $service.SegmentLabels }}
- {{if $tlsClientCert }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert]
- pem = {{ $tlsClientCert.PEM }}
- {{ $infos := $tlsClientCert.Infos }}
- {{if $infos }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos]
- notAfter = {{ $infos.NotAfter }}
- notBefore = {{ $infos.NotBefore }}
- sans = {{ $infos.Sans }}
- {{ $subject := $infos.Subject }}
- {{if $subject }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.subject]
- country = {{ $subject.Country }}
- province = {{ $subject.Province }}
- locality = {{ $subject.Locality }}
- organization = {{ $subject.Organization }}
- commonName = {{ $subject.CommonName }}
- serialNumber = {{ $subject.SerialNumber }}
- domainComponent = {{ $subject.DomainComponent }}
- {{end}}
- {{ $issuer := $infos.Subject }}
- {{if $issuer }}
- [frontends."frontend-{{ $frontendName }}".passTLSClientCert.infos.issuer]
- country = {{ $issuer.Country }}
- province = {{ $issuer.Province }}
- locality = {{ $issuer.Locality }}
- organization = {{ $issuer.Organization }}
- commonName = {{ $issuer.CommonName }}
- serialNumber = {{ $issuer.SerialNumber }}
- domainComponent = {{ $issuer.DomainComponent }}
- {{end}}
- {{end}}
- {{end}}
-
- {{ $auth := getAuth $service.SegmentLabels }}
- {{if $auth }}
- [frontends."frontend-{{ $frontendName }}".auth]
- headerField = "{{ $auth.HeaderField }}"
-
- {{if $auth.Forward }}
- [frontends."frontend-{{ $frontendName }}".auth.forward]
- address = "{{ $auth.Forward.Address }}"
- trustForwardHeader = {{ $auth.Forward.TrustForwardHeader }}
- {{if $auth.Forward.AuthResponseHeaders }}
- authResponseHeaders = [{{range $auth.Forward.AuthResponseHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $auth.Forward.TLS }}
- [frontends."frontend-{{ $frontendName }}".auth.forward.tls]
- ca = "{{ $auth.Forward.TLS.CA }}"
- caOptional = {{ $auth.Forward.TLS.CAOptional }}
- cert = """{{ $auth.Forward.TLS.Cert }}"""
- key = """{{ $auth.Forward.TLS.Key }}"""
- insecureSkipVerify = {{ $auth.Forward.TLS.InsecureSkipVerify }}
- {{end}}
- {{end}}
-
- {{if $auth.Basic }}
- [frontends."frontend-{{ $frontendName }}".auth.basic]
- removeHeader = {{ $auth.Basic.RemoveHeader }}
- {{if $auth.Basic.Users }}
- users = [{{range $auth.Basic.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Basic.UsersFile }}"
- {{end}}
-
- {{if $auth.Digest }}
- [frontends."frontend-{{ $frontendName }}".auth.digest]
- removeHeader = {{ $auth.Digest.RemoveHeader }}
- {{if $auth.Digest.Users }}
- users = [{{range $auth.Digest.Users }}
- "{{.}}",
- {{end}}]
- {{end}}
- usersFile = "{{ $auth.Digest.UsersFile }}"
- {{end}}
- {{end}}
-
- {{ $whitelist := getWhiteList $service.SegmentLabels }}
- {{if $whitelist }}
- [frontends."frontend-{{ $frontendName }}".whiteList]
- sourceRange = [{{range $whitelist.SourceRange }}
- "{{.}}",
- {{end}}]
- {{if $whitelist.IPStrategy }}
- [frontends."frontend-{{ $frontendName }}".whiteList.IPStrategy]
- depth = {{ $whitelist.IPStrategy.Depth }}
- excludedIPs = [{{range $whitelist.IPStrategy.ExcludedIPs }}
- "{{.}}",
- {{end}}]
- {{end}}
- {{end}}
-
- {{ $redirect := getRedirect $service.SegmentLabels }}
- {{if $redirect }}
- [frontends."frontend-{{ $frontendName }}".redirect]
- entryPoint = "{{ $redirect.EntryPoint }}"
- regex = "{{ $redirect.Regex }}"
- replacement = "{{ $redirect.Replacement }}"
- permanent = {{ $redirect.Permanent }}
- {{end}}
-
- {{ $errorPages := getErrorPages $service.SegmentLabels }}
- {{if $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors]
- {{range $pageName, $page := $errorPages }}
- [frontends."frontend-{{ $frontendName }}".errors."{{ $pageName }}"]
- status = [{{range $page.Status }}
- "{{.}}",
- {{end}}]
- backend = "backend-{{ $page.Backend }}"
- query = "{{ $page.Query }}"
- {{end}}
- {{end}}
-
- {{ $rateLimit := getRateLimit $service.SegmentLabels }}
- {{if $rateLimit }}
- [frontends."frontend-{{ $frontendName }}".rateLimit]
- extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
- {{ range $limitName, $limit := $rateLimit.RateSet }}
- [frontends."frontend-{{ $frontendName }}".rateLimit.rateSet."{{ $limitName }}"]
- period = "{{ $limit.Period }}"
- average = {{ $limit.Average }}
- burst = {{ $limit.Burst }}
- {{end}}
- {{end}}
-
- {{ $headers := getHeaders $service.SegmentLabels }}
- {{if $headers }}
- [frontends."frontend-{{ $frontendName }}".headers]
- SSLRedirect = {{ $headers.SSLRedirect }}
- SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
- SSLHost = "{{ $headers.SSLHost }}"
- SSLForceHost = {{ $headers.SSLForceHost }}
- STSSeconds = {{ $headers.STSSeconds }}
- STSIncludeSubdomains = {{ $headers.STSIncludeSubdomains }}
- STSPreload = {{ $headers.STSPreload }}
- ForceSTSHeader = {{ $headers.ForceSTSHeader }}
- FrameDeny = {{ $headers.FrameDeny }}
- CustomFrameOptionsValue = "{{ $headers.CustomFrameOptionsValue }}"
- ContentTypeNosniff = {{ $headers.ContentTypeNosniff }}
- BrowserXSSFilter = {{ $headers.BrowserXSSFilter }}
- CustomBrowserXSSValue = "{{ $headers.CustomBrowserXSSValue }}"
- ContentSecurityPolicy = "{{ $headers.ContentSecurityPolicy }}"
- PublicKey = "{{ $headers.PublicKey }}"
- ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
- IsDevelopment = {{ $headers.IsDevelopment }}
-
- {{if $headers.AllowedHosts }}
- AllowedHosts = [{{range $headers.AllowedHosts }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.HostsProxyHeaders }}
- HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
- "{{.}}",
- {{end}}]
- {{end}}
-
- {{if $headers.CustomRequestHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
- {{range $k, $v := $headers.CustomRequestHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.CustomResponseHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
- {{range $k, $v := $headers.CustomResponseHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
-
- {{if $headers.SSLProxyHeaders }}
- [frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
- {{range $k, $v := $headers.SSLProxyHeaders }}
- {{$k}} = "{{$v}}"
- {{end}}
- {{end}}
- {{end}}
-
- [frontends."frontend-{{ $frontendName }}".routes."route-frontend-{{ $frontendName }}"]
- rule = "{{ getFrontendRule $service.Name $service.SegmentLabels }}"
-
-{{end}}