traefik/autogen/gentemplates/gen.go

1922 lines
62 KiB
Go
Raw Normal View History

2017-11-20 14:26:03 +00:00
// 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
}
2017-11-22 11:00:04 +00:00
var _templatesConsul_catalogTmpl = []byte(`[backends]
2018-01-02 19:02:20 +00:00
{{range $service := .Services}}
{{ $backendName := getServiceBackendName $service }}
2017-11-22 11:00:04 +00:00
2018-01-02 19:02:20 +00:00
{{ $circuitBreaker := getCircuitBreaker $service.Attributes }}
{{if $circuitBreaker }}
[backends."backend-{{ $backendName }}".circuitBreaker]
2018-01-02 19:02:20 +00:00
expression = "{{ $circuitBreaker.Expression }}"
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-02 19:02:20 +00:00
{{ $loadBalancer := getLoadBalancer $service.Attributes }}
{{if $loadBalancer }}
[backends."backend-{{ $backendName }}".loadBalancer]
2018-01-02 19:02:20 +00:00
method = "{{ $loadBalancer.Method }}"
sticky = {{ $loadBalancer.Sticky }}
{{if $loadBalancer.Stickiness }}
[backends."backend-{{ $backendName }}".loadBalancer.stickiness]
2018-01-02 19:02:20 +00:00
cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-02 19:02:20 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
2018-01-02 19:02:20 +00:00
{{ $maxConn := getMaxConn $service.Attributes }}
{{if $maxConn }}
[backends."backend-{{ $backendName }}".maxConn]
2018-01-02 19:02:20 +00:00
extractorFunc = "{{ $maxConn.ExtractorFunc }}"
amount = {{ $maxConn.Amount }}
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-02 19:02:20 +00:00
{{ $healthCheck := getHealthCheck $service.Attributes }}
{{if $healthCheck }}
[backends.backend-{{ $backendName }}.healthCheck]
2018-01-02 19:02:20 +00:00
path = "{{ $healthCheck.Path }}"
port = {{ $healthCheck.Port }}
interval = "{{ $healthCheck.Interval }}"
{{end}}
2018-01-31 14:32:04 +00:00
{{ $buffering := getBuffering $service.Attributes }}
{{if $buffering }}
[backends.backend-{{ $backendName }}.buffering]
maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
retryExpression = "{{ $buffering.RetryExpression }}"
{{end}}
2018-01-02 19:02:20 +00:00
{{end}}
{{range $index, $node := .Nodes}}
[backends."backend-{{ getNodeBackendName $node }}".servers."{{ getServerName $node $index }}"]
url = "{{ getProtocol $node.Service.Tags }}://{{ getBackendAddress $node }}:{{ $node.Service.Port }}"
weight = {{ getWeight $node.Service.Tags }}
2017-11-22 11:00:04 +00:00
{{end}}
[frontends]
2018-01-02 19:02:20 +00:00
{{range $service := .Services}}
[frontends."frontend-{{ $service.ServiceName }}"]
backend = "backend-{{ getServiceBackendName $service }}"
priority = {{ getPriority $service.Attributes }}
passHostHeader = {{ getPassHostHeader $service.Attributes }}
passTLSCert = {{ getPassTLSCert $service.Attributes }}
entryPoints = [{{range getFrontEndEntryPoints $service.Attributes }}
2017-11-22 11:00:04 +00:00
"{{.}}",
2018-01-02 19:02:20 +00:00
{{end}}]
{{ $whitelistSourceRange := getWhitelistSourceRange $service.Attributes }}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
2018-01-02 19:02:20 +00:00
"{{.}}",
{{end}}]
{{end}}
basicAuth = [{{range getBasicAuth $service.Attributes }}
"{{.}}",
{{end}}]
{{ $redirect := getRedirect $service.Attributes }}
{{if $redirect }}
[frontends."frontend-{{ $service.ServiceName }}".redirect]
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
{{end}}
{{if hasErrorPages $service.Attributes }}
2018-01-02 19:02:20 +00:00
[frontends."frontend-{{ $service.ServiceName }}".errors]
{{range $pageName, $page := getErrorPages $service.Attributes }}
2018-01-02 19:02:20 +00:00
[frontends."frontend-{{ $service.ServiceName }}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
"{{.}}",
{{end}}]
2018-01-02 19:02:20 +00:00
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
{{end}}
{{end}}
{{if hasRateLimit $service.Attributes }}
2018-01-02 19:02:20 +00:00
{{ $rateLimit := getRateLimit $service.Attributes }}
[frontends."frontend-{{ $service.ServiceName }}".rateLimit]
extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
[frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet]
{{range $limitName, $limit := $rateLimit.RateSet }}
2018-01-02 19:02:20 +00:00
[frontends."frontend-{{ $service.ServiceName }}".rateLimit.rateSet.{{ $limitName }}]
period = "{{ $limit.Period }}"
average = {{ $limit.Average }}
burst = {{ $limit.Burst }}
{{end}}
{{end}}
{{ $headers := getHeaders $service.Attributes }}
{{if $headers }}
2018-01-02 19:02:20 +00:00
[frontends."frontend-{{ $service.ServiceName }}".headers]
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
PublicKey = "{{ $headers.PublicKey }}"
ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
IsDevelopment = {{ $headers.IsDevelopment }}
{{if $headers.AllowedHosts }}
AllowedHosts = [{{range $headers.AllowedHosts }}
2018-01-02 19:02:20 +00:00
"{{.}}",
{{end}}]
{{end}}
{{if $headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
2018-01-02 19:02:20 +00:00
"{{.}}",
{{end}}]
{{end}}
{{if $headers.CustomRequestHeaders }}
2018-01-02 19:02:20 +00:00
[frontends."frontend-{{ $service.ServiceName }}".headers.customRequestHeaders]
{{range $k, $v := $headers.CustomRequestHeaders }}
2018-01-02 19:02:20 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
{{if $headers.CustomResponseHeaders }}
2018-01-02 19:02:20 +00:00
[frontends."frontend-{{ $service.ServiceName }}".headers.customResponseHeaders]
{{range $k, $v := $headers.CustomResponseHeaders }}
2018-01-02 19:02:20 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
{{if $headers.SSLProxyHeaders }}
2018-01-02 19:02:20 +00:00
[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 }}"
2017-11-22 11:00:04 +00:00
{{end}}
`)
2017-11-20 14:26:03 +00:00
func templatesConsul_catalogTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesConsul_catalogTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesConsul_catalogTmpl() (*asset, error) {
bytes, err := templatesConsul_catalogTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/consul_catalog.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2017-11-22 11:00:04 +00:00
var _templatesDockerTmpl = []byte(`{{$backendServers := .Servers}}
2017-12-19 23:52:56 +00:00
[backends]
{{range $backendName, $backend := .Backends}}
2017-11-22 11:00:04 +00:00
2018-01-09 15:26:03 +00:00
{{ $circuitBreaker := getCircuitBreaker $backend }}
{{if $circuitBreaker }}
[backends."backend-{{ $backendName }}".circuitBreaker]
expression = "{{ $circuitBreaker.Expression }}"
2017-12-19 23:52:56 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
2018-01-09 15:26:03 +00:00
{{ $loadBalancer := getLoadBalancer $backend }}
{{if $loadBalancer }}
[backends."backend-{{ $backendName }}".loadBalancer]
method = "{{ $loadBalancer.Method }}"
sticky = {{ $loadBalancer.Sticky }}
{{if $loadBalancer.Stickiness }}
[backends."backend-{{ $backendName }}".loadBalancer.stickiness]
cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
{{end}}
2017-12-19 23:52:56 +00:00
{{end}}
2018-01-09 15:26:03 +00:00
{{ $maxConn := getMaxConn $backend }}
{{if $maxConn }}
[backends."backend-{{ $backendName }}".maxConn]
extractorFunc = "{{ $maxConn.ExtractorFunc }}"
amount = {{ $maxConn.Amount }}
2017-12-19 23:52:56 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
2018-01-09 15:26:03 +00:00
{{ $healthCheck := getHealthCheck $backend }}
{{if $healthCheck }}
[backends.backend-{{ $backendName }}.healthCheck]
path = "{{ $healthCheck.Path }}"
port = {{ $healthCheck.Port }}
interval = "{{ $healthCheck.Interval }}"
2017-12-19 23:52:56 +00:00
{{end}}
2018-01-31 14:32:04 +00:00
{{ $buffering := getBuffering $backend }}
{{if $buffering }}
[backends.backend-{{ $backendName }}.buffering]
maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
retryExpression = "{{ $buffering.RetryExpression }}"
{{end}}
2018-01-09 15:26:03 +00:00
{{ $servers := index $backendServers $backendName }}
{{range $serverName, $server := $servers }}
{{if hasServices $server }}
{{ $services := getServiceNames $server }}
{{range $serviceIndex, $serviceName := $services }}
[backends.backend-{{ getServiceBackendName $server $serviceName }}.servers.service-{{ $serverName }}]
url = "{{ getServiceProtocol $server $serviceName }}://{{ getIPAddress $server }}:{{ getServicePort $server $serviceName }}"
weight = {{ getServiceWeight $server $serviceName }}
2017-11-22 11:00:04 +00:00
{{end}}
{{else}}
2018-01-09 15:26:03 +00:00
[backends.backend-{{ $backendName }}.servers.server-{{ $server.Name | replace "/" "" | replace "." "-" }}]
url = "{{ getProtocol $server }}://{{ getIPAddress $server }}:{{ getPort $server }}"
weight = {{ getWeight $server }}
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-19 23:52:56 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-19 23:52:56 +00:00
[frontends]
2018-01-09 15:26:03 +00:00
{{range $frontendName, $containers := .Frontends }}
2017-11-22 11:00:04 +00:00
{{$container := index $containers 0}}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
{{if hasServices $container }}
{{ $services := getServiceNames $container }}
{{range $serviceIndex, $serviceName := $services }}
{{ $ServiceFrontendName := getServiceBackendName $container $serviceName }}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
[frontends."frontend-{{ $ServiceFrontendName }}"]
backend = "backend-{{ $ServiceFrontendName }}"
priority = {{ getServicePriority $container $serviceName }}
passHostHeader = {{ getServicePassHostHeader $container $serviceName }}
passTLSCert = {{ getServicePassTLSCert $container $serviceName }}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
entryPoints = [{{range getServiceEntryPoints $container $serviceName }}
2017-11-22 11:00:04 +00:00
"{{.}}",
2017-12-19 23:52:56 +00:00
{{end}}]
2017-12-15 10:48:03 +00:00
2018-01-09 15:26:03 +00:00
{{ $whitelistSourceRange := getServiceWhitelistSourceRange $container $serviceName }}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
2017-12-19 23:52:56 +00:00
"{{.}}",
{{end}}]
{{end}}
2018-01-09 15:26:03 +00:00
basicAuth = [{{range getServiceBasicAuth $container $serviceName }}
2017-12-19 23:52:56 +00:00
"{{.}}",
{{end}}]
2018-01-09 15:26:03 +00:00
{{ $redirect := getServiceRedirect $container $serviceName }}
{{if $redirect }}
[frontends."frontend-{{ $ServiceFrontendName }}".redirect]
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
2017-12-19 23:52:56 +00:00
{{end}}
2018-01-09 15:26:03 +00:00
{{ $errorPages := getServiceErrorPages $container $serviceName }}
{{if $errorPages }}
[frontends."frontend-{{ $ServiceFrontendName }}".errors]
{{ range $pageName, $page := $errorPages }}
[frontends."frontend-{{ $ServiceFrontendName }}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
2017-12-19 23:52:56 +00:00
"{{.}}",
{{end}}]
2018-01-09 15:26:03 +00:00
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
2017-12-19 23:52:56 +00:00
{{end}}
{{end}}
2018-01-09 15:26:03 +00:00
{{ $rateLimit := getServiceRateLimit $container $serviceName }}
{{if $rateLimit }}
[frontends."frontend-{{ $ServiceFrontendName }}".rateLimit]
extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
[frontends."frontend-{{ $ServiceFrontendName }}".rateLimit.rateSet]
{{range $limitName, $limit := $rateLimit.RateSet }}
[frontends."frontend-{{ $ServiceFrontendName }}".rateLimit.rateSet.{{ $limitName }}]
period = "{{ $limit.Period }}"
average = {{ $limit.Average }}
burst = {{ $limit.Burst }}
2017-12-19 23:52:56 +00:00
{{end}}
{{end}}
2017-12-15 10:48:03 +00:00
2018-01-09 15:26:03 +00:00
{{ $headers := getServiceHeaders $container $serviceName }}
{{if $headers }}
[frontends."frontend-{{ $ServiceFrontendName }}".headers]
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
PublicKey = "{{ $headers.PublicKey }}"
ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
IsDevelopment = {{ $headers.IsDevelopment }}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
{{if $headers.AllowedHosts }}
AllowedHosts = [{{range $headers.AllowedHosts }}
"{{.}}",
{{end}}]
{{end}}
{{if $headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
"{{.}}",
{{end}}]
2017-12-19 23:52:56 +00:00
{{end}}
2018-01-09 15:26:03 +00:00
{{if $headers.CustomRequestHeaders }}
[frontends."frontend-{{ $ServiceFrontendName }}".headers.customRequestHeaders]
{{range $k, $v := $headers.CustomRequestHeaders }}
{{$k}} = "{{$v}}"
{{end}}
{{end}}
{{if $headers.CustomResponseHeaders }}
[frontends."frontend-{{ $ServiceFrontendName }}".headers.customResponseHeaders]
{{range $k, $v := $headers.CustomResponseHeaders }}
{{$k}} = "{{$v}}"
{{end}}
{{end}}
{{if $headers.SSLProxyHeaders }}
[frontends."frontend-{{ $ServiceFrontendName }}".headers.SSLProxyHeaders]
{{range $k, $v := $headers.SSLProxyHeaders }}
{{$k}} = "{{$v}}"
{{end}}
2017-12-19 23:52:56 +00:00
{{end}}
{{end}}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
[frontends."frontend-{{ $ServiceFrontendName }}".routes."service-{{ $serviceName | replace "/" "" | replace "." "-" }}"]
rule = "{{ getServiceFrontendRule $container $serviceName }}"
2017-12-19 23:52:56 +00:00
{{end}} ## end range services
2017-11-22 11:00:04 +00:00
{{else}}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
[frontends."frontend-{{ $frontendName }}"]
backend = "backend-{{ getBackendName $container }}"
priority = {{ getPriority $container }}
passHostHeader = {{ getPassHostHeader $container }}
passTLSCert = {{ getPassTLSCert $container }}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
entryPoints = [{{range getEntryPoints $container }}
2017-12-19 23:52:56 +00:00
"{{.}}",
{{end}}]
2018-01-09 15:26:03 +00:00
{{ $whitelistSourceRange := getWhitelistSourceRange $container}}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
2017-11-22 11:00:04 +00:00
"{{.}}",
2017-12-19 23:52:56 +00:00
{{end}}]
{{end}}
2017-12-15 10:48:03 +00:00
2018-01-09 15:26:03 +00:00
basicAuth = [{{range getBasicAuth $container }}
2017-12-19 23:52:56 +00:00
"{{.}}",
{{end}}]
2017-12-15 10:48:03 +00:00
2018-01-09 15:26:03 +00:00
{{ $redirect := getRedirect $container }}
{{if $redirect }}
[frontends."frontend-{{ $frontendName }}".redirect]
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
2017-11-22 18:40:04 +00:00
{{end}}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
{{ $errorPages := getErrorPages $container }}
{{if $errorPages }}
[frontends."frontend-{{ $frontendName }}".errors]
{{range $pageName, $page := $errorPages }}
[frontends."frontend-{{ $frontendName }}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
2017-12-19 23:52:56 +00:00
"{{.}}",
{{end}}]
2018-01-09 15:26:03 +00:00
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
2017-12-19 23:52:56 +00:00
{{end}}
2017-11-22 18:40:04 +00:00
{{end}}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
{{ $rateLimit := getRateLimit $container }}
{{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 }}
2017-12-19 23:52:56 +00:00
{{end}}
2017-11-22 18:40:04 +00:00
{{end}}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
{{ $headers := getHeaders $container }}
{{if $headers }}
[frontends."frontend-{{ $frontendName }}".headers]
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
PublicKey = "{{ $headers.PublicKey }}"
ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
IsDevelopment = {{ $headers.IsDevelopment }}
2018-01-02 08:42:03 +00:00
2018-01-09 15:26:03 +00:00
{{if $headers.AllowedHosts }}
AllowedHosts = [{{range $headers.AllowedHosts }}
2018-01-02 08:42:03 +00:00
"{{.}}",
{{end}}]
{{end}}
2018-01-09 15:26:03 +00:00
{{if $headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
2018-01-02 08:42:03 +00:00
"{{.}}",
{{end}}]
{{end}}
2018-01-09 15:26:03 +00:00
{{if $headers.CustomRequestHeaders }}
[frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
{{range $k, $v := $headers.CustomRequestHeaders }}
2017-12-19 23:52:56 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
2018-01-02 08:42:03 +00:00
2018-01-09 15:26:03 +00:00
{{if $headers.CustomResponseHeaders }}
[frontends."frontend-{{ $frontendName }}".headers.customResponseHeaders]
{{range $k, $v := $headers.CustomResponseHeaders }}
2017-12-19 23:52:56 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
2018-01-02 08:42:03 +00:00
2018-01-09 15:26:03 +00:00
{{if $headers.SSLProxyHeaders }}
[frontends."frontend-{{ $frontendName }}".headers.SSLProxyHeaders]
{{range $k, $v := $headers.SSLProxyHeaders }}
2017-12-19 23:52:56 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
2017-11-22 18:40:04 +00:00
{{end}}
2017-12-19 23:52:56 +00:00
2018-01-09 15:26:03 +00:00
[frontends."frontend-{{ $frontendName }}".routes."route-frontend-{{ $frontendName }}"]
rule = "{{ getFrontendRule $container }}"
2017-12-19 23:52:56 +00:00
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-19 23:52:56 +00:00
2017-11-22 11:00:04 +00:00
{{end}}
`)
2017-11-20 14:26:03 +00:00
func templatesDockerTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesDockerTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesDockerTmpl() (*asset, error) {
bytes, err := templatesDockerTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/docker.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2017-12-20 22:00:52 +00:00
var _templatesEcsTmpl = []byte(`[backends]
2018-01-10 17:28:03 +00:00
{{range $serviceName, $instances := .Services }}
{{ $firstInstance := index $instances 0 }}
2017-12-20 22:00:52 +00:00
2018-01-10 17:28:03 +00:00
{{ $circuitBreaker := getCircuitBreaker $firstInstance }}
{{if $circuitBreaker }}
[backends."backend-{{ $serviceName }}".circuitBreaker]
expression = "{{ $circuitBreaker.Expression }}"
2017-12-20 22:00:52 +00:00
{{end}}
2018-01-10 17:28:03 +00:00
{{ $loadBalancer := getLoadBalancer $firstInstance }}
{{if $loadBalancer }}
[backends."backend-{{ $serviceName }}".loadBalancer]
method = "{{ $loadBalancer.Method }}"
sticky = {{ $loadBalancer.Sticky }}
{{if $loadBalancer.Stickiness }}
[backends."backend-{{ $serviceName }}".loadBalancer.stickiness]
cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-20 22:00:52 +00:00
{{end}}
2018-01-10 17:28:03 +00:00
{{ $maxConn := getMaxConn $firstInstance }}
{{if $maxConn }}
[backends."backend-{{ $serviceName }}".maxConn]
extractorFunc = "{{ $maxConn.ExtractorFunc }}"
amount = {{ $maxConn.Amount }}
2017-12-20 22:00:52 +00:00
{{end}}
2018-01-10 17:28:03 +00:00
{{ $healthCheck := getHealthCheck $firstInstance }}
{{if $healthCheck }}
2017-12-20 22:00:52 +00:00
[backends.backend-{{ $serviceName }}.healthCheck]
2018-01-10 17:28:03 +00:00
path = "{{ $healthCheck.Path }}"
port = {{ $healthCheck.Port }}
interval = "{{ $healthCheck.Interval }}"
2017-12-20 22:00:52 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
2018-01-31 14:32:04 +00:00
{{ $buffering := getBuffering $firstInstance }}
{{if $buffering }}
[backends.backend-{{ $serviceName }}.buffering]
maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
retryExpression = "{{ $buffering.RetryExpression }}"
{{end}}
2018-01-10 17:28:03 +00:00
{{range $serverName, $server := getServers $instances }}
[backends.backend-{{ $serviceName }}.servers.{{ $serverName }}]
url = "{{ $server.URL }}"
weight = {{ $server.Weight }}
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-20 22:00:52 +00:00
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-20 22:00:52 +00:00
[frontends]
2018-01-10 17:28:03 +00:00
{{range $serviceName, $instances := .Services }}
{{range $instance := filterFrontends $instances }}
2017-12-20 22:00:52 +00:00
[frontends.frontend-{{ $serviceName }}]
backend = "backend-{{ $serviceName }}"
2018-01-10 17:28:03 +00:00
priority = {{ getPriority $instance }}
passHostHeader = {{ getPassHostHeader $instance }}
passTLSCert = {{ getPassTLSCert $instance }}
2017-12-20 22:00:52 +00:00
2018-01-10 17:28:03 +00:00
entryPoints = [{{range getEntryPoints $instance }}
2017-11-22 11:00:04 +00:00
"{{.}}",
2017-12-20 22:00:52 +00:00
{{end}}]
2018-01-10 17:28:03 +00:00
{{ $whitelistSourceRange := getWhitelistSourceRange $instance }}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
2017-11-22 11:00:04 +00:00
"{{.}}",
2017-12-20 22:00:52 +00:00
{{end}}]
{{end}}
2018-01-10 17:28:03 +00:00
basicAuth = [{{range getBasicAuth $instance }}
2017-12-20 22:00:52 +00:00
"{{.}}",
{{end}}]
2018-01-10 17:28:03 +00:00
{{ $redirect := getRedirect $instance }}
{{if $redirect }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".redirect]
2018-01-10 17:28:03 +00:00
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
2017-12-20 22:00:52 +00:00
{{end}}
2018-01-10 17:28:03 +00:00
{{ $errorPages := getErrorPages $instance }}
{{if $errorPages }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".errors]
2018-01-10 17:28:03 +00:00
{{range $pageName, $page := $errorPages }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".errors.{{ $pageName }}]
2018-01-10 17:28:03 +00:00
status = [{{range $page.Status }}
2017-12-20 22:00:52 +00:00
"{{.}}",
{{end}}]
2018-01-10 17:28:03 +00:00
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
2017-12-20 22:00:52 +00:00
{{end}}
{{end}}
2018-01-10 17:28:03 +00:00
{{ $rateLimit := getRateLimit $instance }}
{{if $rateLimit }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".rateLimit]
2018-01-10 17:28:03 +00:00
extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".rateLimit.rateSet]
2018-01-10 17:28:03 +00:00
{{ range $limitName, $limit := $rateLimit.RateSet }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".rateLimit.rateSet.{{ $limitName }}]
2018-01-10 17:28:03 +00:00
period = "{{ $limit.Period }}"
average = {{ $limit.Average }}
burst = {{ $limit.Burst }}
2017-12-20 22:00:52 +00:00
{{end}}
{{end}}
2018-01-10 17:28:03 +00:00
{{ $headers := getHeaders $instance }}
{{if $headers }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".headers]
2018-01-10 17:28:03 +00:00
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
PublicKey = "{{ $headers.PublicKey }}"
ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
IsDevelopment = {{ $headers.IsDevelopment }}
{{if $headers.AllowedHosts }}
AllowedHosts = [{{range $headers.AllowedHosts }}
"{{.}}",
{{end}}]
2017-12-20 22:00:52 +00:00
{{end}}
2018-01-10 17:28:03 +00:00
{{if $headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
"{{.}}",
{{end}}]
2017-12-20 22:00:52 +00:00
{{end}}
2018-01-10 17:28:03 +00:00
{{if $headers.CustomRequestHeaders }}
[frontends."frontend-{{ $serviceName }}".headers.customRequestHeaders]
{{range $k, $v := $headers.CustomRequestHeaders }}
2017-12-20 22:00:52 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
2018-01-10 17:28:03 +00:00
{{if $headers.CustomResponseHeaders }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".headers.customResponseHeaders]
2018-01-10 17:28:03 +00:00
{{range $k, $v := $headers.CustomResponseHeaders }}
2017-12-20 22:00:52 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
2018-01-10 17:28:03 +00:00
{{if $headers.SSLProxyHeaders }}
2017-12-20 22:00:52 +00:00
[frontends."frontend-{{ $serviceName }}".headers.SSLProxyHeaders]
2018-01-10 17:28:03 +00:00
{{range $k, $v := $headers.SSLProxyHeaders }}
2017-12-20 22:00:52 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
{{end}}
2017-11-22 11:00:04 +00:00
[frontends.frontend-{{ $serviceName }}.routes.route-frontend-{{ $serviceName }}]
2017-12-20 22:00:52 +00:00
rule = "{{getFrontendRule $instance}}"
{{end}}
2017-11-22 11:00:04 +00:00
{{end}}`)
2017-11-20 14:26:03 +00:00
func templatesEcsTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesEcsTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesEcsTmpl() (*asset, error) {
bytes, err := templatesEcsTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/ecs.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2017-11-22 11:00:04 +00:00
var _templatesEurekaTmpl = []byte(`[backends]{{range .Applications}}
{{ $app := .}}
{{range .Instances}}
[backends.backend{{$app.Name}}.servers.server-{{ getInstanceID . }}]
url = "{{ getProtocol . }}://{{ .IpAddr }}:{{ getPort . }}"
weight = {{ getWeight . }}
{{end}}{{end}}
[frontends]{{range .Applications}}
[frontends.frontend{{.Name}}]
backend = "backend{{.Name}}"
entryPoints = ["http"]
[frontends.frontend{{.Name }}.routes.route-host{{.Name}}]
rule = "Host:{{ .Name | tolower }}"
{{end}}
`)
2017-11-20 14:26:03 +00:00
func templatesEurekaTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesEurekaTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesEurekaTmpl() (*asset, error) {
bytes, err := templatesEurekaTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/eureka.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2018-01-31 15:28:27 +00:00
var _templatesKubernetesTmpl = []byte(`[backends]
{{range $backendName, $backend := .Backends }}
[backends."{{ $backendName }}"]
{{if $backend.CircuitBreaker }}
[backends."{{ $backendName }} ".circuitBreaker]
expression = "{{ $backend.CircuitBreaker.Expression }}"
{{end}}
[backends."{{ $backendName }}".loadBalancer]
method = "{{ $backend.LoadBalancer.Method }}"
sticky = {{ $backend.LoadBalancer.Sticky }}
{{if $backend.LoadBalancer.Stickiness }}
[backends."{{ $backendName }}".loadBalancer.stickiness]
cookieName = "{{ $backend.LoadBalancer.Stickiness.CookieName }}"
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-31 14:32:04 +00:00
2018-01-31 15:28:27 +00:00
{{if $backend.MaxConn }}
[backends.backend-{{ $backendName }}.maxConn]
amount = {{ $backend.MaxConn.Amount }}
extractorFunc = "{{ $backend.MaxConn.ExtractorFunc }}"
{{end}}
2018-01-31 14:32:04 +00:00
{{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}}
2018-01-31 15:28:27 +00:00
{{range $serverName, $server := $backend.Servers }}
[backends."{{ $backendName }}".servers."{{ $serverName }}"]
url = "{{ $server.URL }}"
weight = {{ $server.Weight }}
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-31 15:28:27 +00:00
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-31 15:28:27 +00:00
[frontends]
{{range $frontendName, $frontend := .Frontends }}
[frontends."{{ $frontendName }}"]
backend = "{{ $frontend.Backend }}"
priority = {{ $frontend.Priority }}
passHostHeader = {{ $frontend.PassHostHeader }}
passTLSCert = {{ $frontend.PassTLSCert }}
entryPoints = [{{range $frontend.EntryPoints }}
2017-11-22 11:00:04 +00:00
"{{.}}",
2018-01-31 15:28:27 +00:00
{{end}}]
2017-12-15 10:48:03 +00:00
2018-01-31 15:28:27 +00:00
basicAuth = [{{range $frontend.BasicAuth }}
"{{.}}",
{{end}}]
whitelistSourceRange = [{{range $frontend.WhitelistSourceRange }}
"{{.}}",
{{end}}]
{{if $frontend.Redirect }}
[frontends."{{ $frontendName }}".redirect]
entryPoint = "{{ $frontend.Redirect.EntryPoint }}"
regex = "{{ $frontend.Redirect.Regex }}"
replacement = "{{ $frontend.Redirect.Replacement }}"
{{end}}
{{if $frontend.Errors }}
[frontends."frontend-{{ $frontendName }}".errors]
{{range $pageName, $page := $frontend.Errors }}
[frontends."frontend-{{ $frontendName }}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
"{{.}}",
{{end}}]
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
{{end}}
{{end}}
{{if $frontend.RateLimit }}
[frontends."frontend-{{ $frontendName }}".rateLimit]
extractorFunc = "{{ $frontend.RateLimit.ExtractorFunc }}"
[frontends."frontend-{{ $frontendName }}".rateLimit.rateSet]
{{range $limitName, $limit := $frontend.RateLimit.RateSet }}
[frontends."frontend-{{ $frontendName }}".rateLimit.rateSet.{{ $limitName }}]
period = "{{ $limit.Period }}"
average = {{ $limit.Average }}
burst = {{ $limit.Burst }}
{{end}}
{{end}}
2017-12-15 10:48:03 +00:00
2018-01-02 13:49:11 +00:00
{{if $frontend.Headers }}
2018-01-31 15:28:27 +00:00
[frontends."{{ $frontendName }}".headers]
SSLRedirect = {{ $frontend.Headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $frontend.Headers.SSLTemporaryRedirect }}
SSLHost = "{{ $frontend.Headers.SSLHost }}"
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 }}
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}}]
2017-11-28 12:36:03 +00:00
{{end}}
2018-01-31 15:28:27 +00:00
{{if $frontend.Headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $frontend.Headers.HostsProxyHeaders }}
"{{.}}",
{{end}}]
2017-11-28 12:36:03 +00:00
{{end}}
2018-01-31 15:28:27 +00:00
{{if $frontend.Headers.CustomRequestHeaders }}
[frontends."{{ $frontendName }}".headers.customRequestHeaders]
{{range $k, $v := $frontend.Headers.CustomRequestHeaders }}
{{ $k }} = "{{ $v }}"
{{end}}
2017-11-28 12:36:03 +00:00
{{end}}
2018-01-31 15:28:27 +00:00
{{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 }}"
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-31 15:28:27 +00:00
{{end}}
2018-01-31 15:28:27 +00:00
{{range $tls := .TLS }}
2018-01-24 10:57:06 +00:00
[[tls]]
2018-01-31 15:28:27 +00:00
entryPoints = [{{range $tls.EntryPoints }}
"{{.}}",
2018-01-31 15:28:27 +00:00
{{end}}]
2018-01-24 10:57:06 +00:00
[tls.certificate]
2018-01-31 15:28:27 +00:00
certFile = """{{ $tls.Certificate.CertFile }}"""
keyFile = """{{ $tls.Certificate.KeyFile }}"""
{{end}}
`)
2017-11-20 14:26:03 +00:00
func templatesKubernetesTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesKubernetesTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesKubernetesTmpl() (*asset, error) {
bytes, err := templatesKubernetesTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/kubernetes.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2017-12-23 17:15:39 +00:00
var _templatesKvTmpl = []byte(`[backends]
{{range $backend := List .Prefix "/backends/" }}
{{ $backendName := Last $backend }}
2017-12-23 17:15:39 +00:00
{{ $circuitBreaker := getCircuitBreaker $backend }}
{{if $circuitBreaker }}
[backends."{{ $backendName }}".circuitBreaker]
expression = "{{ $circuitBreaker.Expression }}"
2017-12-23 17:15:39 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
{{ $loadBalancer := getLoadBalancer $backend }}
{{if $loadBalancer }}
[backends."{{ $backendName }}".loadBalancer]
method = "{{ $loadBalancer.Method }}"
sticky = {{ $loadBalancer.Sticky }}
{{if $loadBalancer.Stickiness }}
[backends."{{ $backendName }}".loadBalancer.stickiness]
cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
{{end}}
2017-12-23 17:15:39 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
{{ $maxConn := getMaxConn $backend }}
{{if $maxConn }}
[backends."{{ $backendName }}".maxConn]
extractorFunc = "{{ $maxConn.ExtractorFunc }}"
amount = {{ $maxConn.Amount }}
2017-12-23 17:15:39 +00:00
{{end}}
{{ $healthCheck := getHealthCheck $backend }}
{{if $healthCheck }}
[backends.{{ $backendName }}.healthCheck]
path = "{{ $healthCheck.Path }}"
port = {{ $healthCheck.Port }}
interval = "{{ $healthCheck.Interval }}"
2017-12-23 17:15:39 +00:00
{{end}}
2018-01-31 14:32:04 +00:00
{{ $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 }}
2017-12-23 17:15:39 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-23 17:15:39 +00:00
[frontends]
{{range $frontend := List .Prefix "/frontends/" }}
{{ $frontendName := Last $frontend }}
2017-12-23 17:15:39 +00:00
[frontends."{{ $frontendName }}"]
backend = "{{ getBackendName $frontend }}"
priority = {{ getPriority $frontend }}
passHostHeader = {{ getPassHostHeader $frontend }}
passTLSCert = {{ getPassTLSCert $frontend }}
2017-12-23 17:15:39 +00:00
entryPoints = [{{range getEntryPoints $frontend }}
2017-11-22 11:00:04 +00:00
"{{.}}",
2017-12-23 17:15:39 +00:00
{{end}}]
{{ $whitelistSourceRange := getWhitelistSourceRange $frontend }}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
2018-01-03 15:57:34 +00:00
"{{.}}",
{{end}}]
{{end}}
2018-01-03 15:57:34 +00:00
basicAuth = [{{range getBasicAuth $frontend }}
2018-01-03 15:57:34 +00:00
"{{.}}",
{{end}}]
{{ $redirect := getRedirect $frontend }}
{{if $redirect }}
[frontends."{{ $frontendName }}".redirect]
2018-01-03 15:57:34 +00:00
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
{{end}}
{{ $errorPages := getErrorPages $frontend }}
{{if $errorPages }}
[frontends."{{ $frontendName }}".errors]
{{range $pageName, $page := $errorPages }}
2018-01-03 15:57:34 +00:00
[frontends."{{$frontendName}}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
2018-01-03 15:57:34 +00:00
"{{.}}",
{{end}}]
backend = "{{$page.Backend}}"
query = "{{$page.Query}}"
{{end}}
{{end}}
{{ $rateLimit := getRateLimit $frontend }}
{{if $rateLimit }}
[frontends."{{ $frontendName }}".rateLimit]
2018-01-03 15:57:34 +00:00
extractorFunc = "{{ $rateLimit.ExtractorFunc }}"
[frontends."{{ $frontendName }}".rateLimit.rateSet]
{{range $limitName, $rateLimit := $rateLimit.RateSet }}
[frontends."{{ $frontendName }}".rateLimit.rateSet.{{ $limitName }}]
2018-01-03 15:57:34 +00:00
period = "{{ $rateLimit.Period }}"
average = {{ $rateLimit.Average }}
burst = {{ $rateLimit.Burst }}
{{end}}
{{end}}
{{ $headers := getHeaders $frontend }}
{{if $headers }}
2018-01-03 15:57:34 +00:00
[frontends."{{ $frontendName }}".headers]
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
PublicKey = "{{ $headers.PublicKey }}"
ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
IsDevelopment = {{ $headers.IsDevelopment }}
{{if $headers.AllowedHosts }}
AllowedHosts = [{{range $headers.AllowedHosts }}
2018-01-03 15:57:34 +00:00
"{{.}}",
{{end}}]
{{end}}
{{if $headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
2018-01-03 15:57:34 +00:00
"{{.}}",
{{end}}]
{{end}}
{{if $headers.CustomRequestHeaders }}
2018-01-03 15:57:34 +00:00
[frontends."{{ $frontendName }}".headers.customRequestHeaders]
{{range $k, $v := $headers.CustomRequestHeaders }}
2018-01-03 15:57:34 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
{{if $headers.CustomResponseHeaders }}
2018-01-03 15:57:34 +00:00
[frontends."{{ $frontendName }}".headers.customResponseHeaders]
{{range $k, $v := $headers.CustomResponseHeaders }}
2018-01-03 15:57:34 +00:00
{{$k}} = "{{$v}}"
{{end}}
{{end}}
{{if $headers.SSLProxyHeaders }}
2018-01-03 15:57:34 +00:00
[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 }}"
2017-12-23 17:15:39 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-24 10:57:06 +00:00
{{range $tls := getTLSSection .Prefix }}
2018-01-23 15:30:07 +00:00
[[tls]]
2017-12-23 17:15:39 +00:00
2018-01-24 10:57:06 +00:00
entryPoints = [{{range $tls.EntryPoints }}
2017-12-23 17:15:39 +00:00
"{{.}}",
{{end}}]
2018-01-24 10:57:06 +00:00
[tls.certificate]
certFile = """{{ $tls.Certificate.CertFile }}"""
keyFile = """{{ $tls.Certificate.KeyFile }}"""
2017-12-23 17:15:39 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
`)
2017-11-20 14:26:03 +00:00
func templatesKvTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesKvTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesKvTmpl() (*asset, error) {
bytes, err := templatesKvTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/kv.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2018-01-10 10:58:03 +00:00
var _templatesMarathonTmpl = []byte(`{{ $apps := .Applications }}
2017-11-22 11:00:04 +00:00
2017-12-20 16:27:54 +00:00
[backends]
2018-01-10 10:58:03 +00:00
{{range $app := $apps }}
{{range $serviceIndex, $serviceName := getServiceNames $app }}
{{ $backendName := getBackend $app $serviceName}}
2017-12-20 16:27:54 +00:00
2018-01-10 10:58:03 +00:00
[backends."{{ $backendName }}"]
2017-12-20 16:27:54 +00:00
2018-01-10 10:58:03 +00:00
{{ $circuitBreaker := getCircuitBreaker $app }}
{{if $circuitBreaker }}
[backends."{{ $backendName }}".circuitBreaker]
expression = "{{ $circuitBreaker.Expression }}"
2017-12-20 16:27:54 +00:00
{{end}}
2018-01-10 10:58:03 +00:00
{{ $loadBalancer := getLoadBalancer $app }}
{{if $loadBalancer }}
[backends."{{ $backendName }}".loadBalancer]
method = "{{ $loadBalancer.Method }}"
sticky = {{ $loadBalancer.Sticky }}
{{if $loadBalancer.Stickiness }}
[backends."{{ $backendName }}".loadBalancer.stickiness]
cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
2017-12-20 16:27:54 +00:00
{{end}}
{{end}}
2018-01-10 10:58:03 +00:00
{{ $maxConn := getMaxConn $app }}
{{if $maxConn }}
[backends."{{ $backendName }}".maxConn]
extractorFunc = "{{ $maxConn.ExtractorFunc }}"
amount = {{ $maxConn.Amount }}
2017-12-20 16:27:54 +00:00
{{end}}
2018-01-10 10:58:03 +00:00
{{ $healthCheck := getHealthCheck $app }}
{{if $healthCheck }}
[backends."{{ $backendName }}".healthCheck]
path = "{{ $healthCheck.Path }}"
port = {{ $healthCheck.Port }}
interval = "{{ $healthCheck.Interval }}"
2017-12-20 16:27:54 +00:00
{{end}}
2018-01-31 14:32:04 +00:00
{{ $buffering := getBuffering $app }}
{{if $buffering }}
[backends."{{ $backendName }}".buffering]
maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
retryExpression = "{{ $buffering.RetryExpression }}"
{{end}}
2018-01-10 10:58:03 +00:00
{{range $serverName, $server := getServers $app $serviceName }}
[backends."{{ $backendName }}".servers."{{ $serverName }}"]
url = "{{ $server.URL }}"
weight = {{ $server.Weight }}
2017-12-20 16:27:54 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-10 10:58:03 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
2017-12-20 16:27:54 +00:00
[frontends]
2018-01-10 10:58:03 +00:00
{{range $app := $apps }}
{{range $serviceIndex, $serviceName := getServiceNames $app }}
{{ $frontendName := getFrontendName $app $serviceName }}
2017-11-22 11:00:04 +00:00
2018-01-10 10:58:03 +00:00
[frontends."{{ $frontendName }}"]
backend = "{{ getBackend $app $serviceName }}"
priority = {{ getPriority $app $serviceName }}
passHostHeader = {{ getPassHostHeader $app $serviceName }}
passTLSCert = {{ getPassTLSCert $app $serviceName }}
2017-12-20 16:27:54 +00:00
2018-01-10 10:58:03 +00:00
entryPoints = [{{range getEntryPoints $app $serviceName }}
2017-12-20 16:27:54 +00:00
"{{.}}",
{{end}}]
2018-01-10 10:58:03 +00:00
{{ $whitelistSourceRange := getWhitelistSourceRange $app $serviceName }}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
2017-12-20 16:27:54 +00:00
"{{.}}",
{{end}}]
{{end}}
2018-01-10 10:58:03 +00:00
basicAuth = [{{range getBasicAuth $app $serviceName }}
2017-12-20 16:27:54 +00:00
"{{.}}",
{{end}}]
2018-01-10 10:58:03 +00:00
{{ $redirect := getRedirect $app $serviceName }}
{{if $redirect }}
[frontends."{{ $frontendName }}".redirect]
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
2017-12-20 16:27:54 +00:00
{{end}}
2018-01-10 10:58:03 +00:00
{{ $errorPages := getErrorPages $app $serviceName }}
{{if $errorPages }}
[frontends."{{ $frontendName }}".errors]
{{range $pageName, $page := $errorPages }}
[frontends."{{ $frontendName }}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
"{{.}}",
{{end}}]
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
2017-12-20 16:27:54 +00:00
{{end}}
{{end}}
2018-01-10 10:58:03 +00:00
{{ $rateLimit := getRateLimit $app $serviceName }}
{{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 }}
2017-12-20 16:27:54 +00:00
{{end}}
{{end}}
2018-01-10 10:58:03 +00:00
{{ $headers := getHeaders $app $serviceName }}
{{if $headers }}
[frontends."{{ $frontendName }}".headers]
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
PublicKey = "{{ $headers.PublicKey }}"
ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
IsDevelopment = {{ $headers.IsDevelopment }}
2018-01-02 08:42:03 +00:00
2018-01-10 10:58:03 +00:00
{{if $headers.AllowedHosts }}
AllowedHosts = [{{range $headers.AllowedHosts }}
"{{.}}",
{{end}}]
{{end}}
2018-01-02 08:42:03 +00:00
2018-01-10 10:58:03 +00:00
{{if $headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
"{{.}}",
{{end}}]
{{end}}
2018-01-02 08:42:03 +00:00
2018-01-10 10:58:03 +00:00
{{if $headers.CustomRequestHeaders }}
[frontends."{{ $frontendName }}".headers.customRequestHeaders]
{{range $k, $v := $headers.CustomRequestHeaders }}
{{$k}} = "{{$v}}"
{{end}}
2017-12-20 16:27:54 +00:00
{{end}}
2018-01-02 08:42:03 +00:00
2018-01-10 10:58:03 +00:00
{{if $headers.CustomResponseHeaders }}
[frontends."{{ $frontendName }}".headers.customResponseHeaders]
{{range $k, $v := $headers.CustomResponseHeaders }}
{{$k}} = "{{$v}}"
{{end}}
2017-12-20 16:27:54 +00:00
{{end}}
2018-01-02 08:42:03 +00:00
2018-01-10 10:58:03 +00:00
{{if $headers.SSLProxyHeaders }}
[frontends."{{ $frontendName }}".headers.SSLProxyHeaders]
{{range $k, $v := $headers.SSLProxyHeaders }}
{{$k}} = "{{$v}}"
{{end}}
2017-12-20 16:27:54 +00:00
{{end}}
2018-01-02 08:42:03 +00:00
{{end}}
2017-12-20 16:27:54 +00:00
2018-01-10 10:58:03 +00:00
[frontends."{{ $frontendName }}".routes."route-host{{ $app.ID | replace "/" "-" }}{{ getServiceNameSuffix $serviceName }}"]
rule = "{{ getFrontendRule $app $serviceName }}"
2017-12-20 16:27:54 +00:00
{{end}}
{{end}}
2017-11-22 11:00:04 +00:00
`)
2017-11-20 14:26:03 +00:00
func templatesMarathonTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesMarathonTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesMarathonTmpl() (*asset, error) {
bytes, err := templatesMarathonTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/marathon.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2018-01-10 20:57:05 +00:00
var _templatesMesosTmpl = []byte(`[backends]
{{range $applicationName, $tasks := .ApplicationsTasks }}
{{ $app := index $tasks 0 }}
{{ $backendName := getBackendName $app }}
2017-11-22 11:00:04 +00:00
2018-01-10 20:57:05 +00:00
[backends.backend-{{ $backendName }}]
{{ $circuitBreaker := getCircuitBreaker $app }}
{{if $circuitBreaker }}
[backends."backend-{{ $backendName }}".circuitBreaker]
expression = "{{ $circuitBreaker.Expression }}"
{{end}}
{{ $loadBalancer := getLoadBalancer $app }}
{{if $loadBalancer }}
[backends."backend-{{ $backendName }}".loadBalancer]
method = "{{ $loadBalancer.Method }}"
sticky = {{ $loadBalancer.Sticky }}
{{if $loadBalancer.Stickiness }}
[backends."backend-{{ $backendName }}".loadBalancer.stickiness]
cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
{{end}}
{{end}}
{{ $maxConn := getMaxConn $app }}
{{if $maxConn }}
[backends."backend-{{ $backendName }}".maxConn]
extractorFunc = "{{ $maxConn.ExtractorFunc }}"
amount = {{ $maxConn.Amount }}
{{end}}
{{ $healthCheck := getHealthCheck $app }}
{{if $healthCheck }}
[backends.backend-{{ $backendName }}.healthCheck]
path = "{{ $healthCheck.Path }}"
port = {{ $healthCheck.Port }}
interval = "{{ $healthCheck.Interval }}"
{{end}}
2018-01-31 14:32:04 +00:00
{{ $buffering := getBuffering $app }}
{{if $buffering }}
[backends.backend-{{ $backendName }}.buffering]
maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
retryExpression = "{{ $buffering.RetryExpression }}"
{{end}}
2018-01-10 20:57:05 +00:00
{{range $serverName, $server := getServers $tasks }}
[backends.backend-{{ $backendName }}.servers.{{ $serverName }}]
url = "{{ $server.URL }}"
weight = {{ $server.Weight }}
{{end}}
2017-11-22 11:00:04 +00:00
{{end}}
2018-01-10 20:57:05 +00:00
[frontends]
{{range $applicationName, $tasks := .ApplicationsTasks }}
{{ $app := index $tasks 0 }}
{{ $frontendName := getFrontEndName $app }}
[frontends.frontend-{{ $frontendName }}]
backend = "backend-{{ getBackendName $app }}"
priority = {{ getPriority $app }}
passHostHeader = {{ getPassHostHeader $app }}
passTLSCert = {{ getPassTLSCert $app }}
entryPoints = [{{range getEntryPoints $app }}
"{{.}}",
{{end}}]
{{ $whitelistSourceRange := getWhitelistSourceRange $app }}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
"{{.}}",
{{end}}]
{{end}}
basicAuth = [{{range getBasicAuth $app }}
"{{.}}",
{{end}}]
{{ $redirect := getRedirect $app }}
{{if $redirect }}
[frontends."frontend-{{ $frontendName }}".redirect]
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
{{end}}
{{ $errorPages := getErrorPages $app }}
{{if $errorPages }}
[frontends."frontend-{{ $frontendName }}".errors]
{{range $pageName, $page := $errorPages }}
[frontends."frontend-{{ $frontendName }}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
"{{.}}",
{{end}}]
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
{{end}}
{{end}}
{{ $rateLimit := getRateLimit $app }}
{{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 }}
{{if $headers }}
[frontends."frontend-{{ $frontendName }}".headers]
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
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}}`)
2017-11-20 14:26:03 +00:00
func templatesMesosTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesMesosTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesMesosTmpl() (*asset, error) {
bytes, err := templatesMesosTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/mesos.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2017-11-22 11:00:04 +00:00
var _templatesNotfoundTmpl = []byte(`<!DOCTYPE html>
<html>
<head>
<title>Traefik</title>
</head>
<body>
Ohhhh man, this is bad...
</body>
</html>`)
2017-11-20 14:26:03 +00:00
func templatesNotfoundTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesNotfoundTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesNotfoundTmpl() (*asset, error) {
bytes, err := templatesNotfoundTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/notFound.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
2018-01-10 17:08:03 +00:00
var _templatesRancherTmpl = []byte(`{{ $backendServers := .Backends }}
2017-12-20 15:48:30 +00:00
[backends]
2018-01-10 17:08:03 +00:00
{{range $backendName, $backend := .Backends }}
2017-11-22 11:00:04 +00:00
2018-01-10 17:08:03 +00:00
[backends.backend-{{ $backendName }}]
2017-11-22 11:00:04 +00:00
2018-01-10 17:08:03 +00:00
{{ $circuitBreaker := getCircuitBreaker $backend }}
{{if $circuitBreaker }}
[backends."backend-{{ $backendName }}".circuitBreaker]
expression = "{{ $circuitBreaker.Expression }}"
2017-12-20 15:48:30 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
2018-01-10 17:08:03 +00:00
{{ $loadBalancer := getLoadBalancer $backend }}
{{if $loadBalancer }}
[backends."backend-{{ $backendName }}".loadBalancer]
method = "{{ $loadBalancer.Method }}"
sticky = {{ $loadBalancer.Sticky }}
{{if $loadBalancer.Stickiness }}
[backends."backend-{{ $backendName }}".loadBalancer.stickiness]
cookieName = "{{ $loadBalancer.Stickiness.CookieName }}"
{{end}}
2017-12-20 15:48:30 +00:00
{{end}}
2018-01-10 17:08:03 +00:00
{{ $maxConn := getMaxConn $backend }}
{{if $maxConn }}
[backends."backend-{{ $backendName }}".maxConn]
extractorFunc = "{{ $maxConn.ExtractorFunc }}"
amount = {{ $maxConn.Amount }}
2017-12-20 15:48:30 +00:00
{{end}}
2018-01-10 17:08:03 +00:00
{{ $healthCheck := getHealthCheck $backend }}
{{if $healthCheck }}
[backends.backend-{{ $backendName }}.healthCheck]
path = "{{ $healthCheck.Path }}"
port = {{ $healthCheck.Port }}
interval = "{{ $healthCheck.Interval }}"
2017-12-20 15:48:30 +00:00
{{end}}
2018-01-31 14:32:04 +00:00
{{ $buffering := getBuffering $backend }}
{{if $buffering }}
[backends."backend-{{ $backendName }}".buffering]
maxRequestBodyBytes = {{ $buffering.MaxRequestBodyBytes }}
memRequestBodyBytes = {{ $buffering.MemRequestBodyBytes }}
maxResponseBodyBytes = {{ $buffering.MaxResponseBodyBytes }}
memResponseBodyBytes = {{ $buffering.MemResponseBodyBytes }}
retryExpression = "{{ $buffering.RetryExpression }}"
{{end}}
2018-01-10 17:08:03 +00:00
{{range $serverName, $server := getServers $backend}}
[backends.backend-{{ $backendName }}.servers.{{ $serverName }}]
url = "{{ $server.URL }}"
weight = {{ $server.Weight }}
2017-12-20 15:48:30 +00:00
{{end}}
2017-11-22 11:00:04 +00:00
{{end}}
2017-12-20 15:48:30 +00:00
[frontends]
2018-01-10 17:08:03 +00:00
{{range $frontendName, $service := .Frontends }}
2017-12-20 15:48:30 +00:00
2018-01-10 17:08:03 +00:00
[frontends."frontend-{{ $frontendName }}"]
backend = "backend-{{ getBackendName $service }}"
priority = {{ getPriority $service }}
passHostHeader = {{ getPassHostHeader $service }}
passTLSCert = {{ getPassTLSCert $service }}
2017-12-20 15:48:30 +00:00
2018-01-10 17:08:03 +00:00
entryPoints = [{{range getEntryPoints $service }}
2017-12-20 15:48:30 +00:00
"{{.}}",
{{end}}]
2018-01-10 17:08:03 +00:00
{{ $whitelistSourceRange := getWhitelistSourceRange $service }}
{{if $whitelistSourceRange }}
whitelistSourceRange = [{{range $whitelistSourceRange }}
2017-12-20 15:48:30 +00:00
"{{.}}",
{{end}}]
{{end}}
2018-01-10 17:08:03 +00:00
basicAuth = [{{range getBasicAuth $service }}
2017-12-20 15:48:30 +00:00
"{{.}}",
{{end}}]
2017-12-15 10:48:03 +00:00
2018-01-10 17:08:03 +00:00
{{ $redirect := getRedirect $service }}
{{if $redirect }}
[frontends."frontend-{{ $frontendName }}".redirect]
entryPoint = "{{ $redirect.EntryPoint }}"
regex = "{{ $redirect.Regex }}"
replacement = "{{ $redirect.Replacement }}"
2017-12-15 10:48:03 +00:00
{{end}}
2018-01-10 17:08:03 +00:00
{{ $errorPages := getErrorPages $service }}
{{if $errorPages }}
[frontends."frontend-{{ $frontendName }}".errors]
{{range $pageName, $page := $errorPages }}
[frontends."frontend-{{ $frontendName }}".errors.{{ $pageName }}]
status = [{{range $page.Status }}
2017-12-20 15:48:30 +00:00
"{{.}}",
{{end}}]
2018-01-10 17:08:03 +00:00
backend = "{{ $page.Backend }}"
query = "{{ $page.Query }}"
2017-12-20 15:48:30 +00:00
{{end}}
{{end}}
2018-01-10 17:08:03 +00:00
{{ $rateLimit := getRateLimit $service }}
{{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}}
2017-12-20 15:48:30 +00:00
{{end}}
2018-01-10 17:08:03 +00:00
{{ $headers := getHeaders $service }}
{{if $headers }}
[frontends."frontend-{{ $frontendName }}".headers]
SSLRedirect = {{ $headers.SSLRedirect }}
SSLTemporaryRedirect = {{ $headers.SSLTemporaryRedirect }}
SSLHost = "{{ $headers.SSLHost }}"
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 }}"
PublicKey = "{{ $headers.PublicKey }}"
ReferrerPolicy = "{{ $headers.ReferrerPolicy }}"
IsDevelopment = {{ $headers.IsDevelopment }}
2017-12-20 15:48:30 +00:00
2018-01-10 17:08:03 +00:00
{{if $headers.AllowedHosts }}
AllowedHosts = [{{range $headers.AllowedHosts }}
"{{.}}",
{{end}}]
{{end}}
2017-12-20 15:48:30 +00:00
2018-01-10 17:08:03 +00:00
{{if $headers.HostsProxyHeaders }}
HostsProxyHeaders = [{{range $headers.HostsProxyHeaders }}
"{{.}}",
{{end}}]
2017-12-20 15:48:30 +00:00
{{end}}
2018-01-10 17:08:03 +00:00
{{if $headers.CustomRequestHeaders }}
[frontends."frontend-{{ $frontendName }}".headers.customRequestHeaders]
{{range $k, $v := $headers.CustomRequestHeaders }}
{{$k}} = "{{$v}}"
{{end}}
2017-12-20 15:48:30 +00:00
{{end}}
2018-01-10 17:08:03 +00:00
{{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}}
2017-12-20 15:48:30 +00:00
{{end}}
{{end}}
2017-11-22 11:00:04 +00:00
[frontends."frontend-{{$frontendName}}".routes."route-frontend-{{$frontendName}}"]
2017-12-20 15:48:30 +00:00
rule = "{{getFrontendRule $service}}"
2017-11-22 11:00:04 +00:00
{{end}}
`)
2017-11-20 14:26:03 +00:00
func templatesRancherTmplBytes() ([]byte, error) {
2017-11-22 11:00:04 +00:00
return _templatesRancherTmpl, nil
2017-11-20 14:26:03 +00:00
}
func templatesRancherTmpl() (*asset, error) {
bytes, err := templatesRancherTmplBytes()
if err != nil {
return nil, err
}
2017-11-22 11:00:04 +00:00
info := bindataFileInfo{name: "templates/rancher.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2017-11-20 14:26:03 +00:00
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,
2017-11-21 20:30:03 +00:00
"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,
2017-11-20 14:26:03 +00:00
}
// 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
}
2017-11-21 20:30:03 +00:00
2017-11-20 14:26:03 +00:00
var _bintree = &bintree{nil, map[string]*bintree{
2017-11-30 07:52:03 +00:00
"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{}},
2017-11-20 14:26:03 +00:00
}},
}}
// 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, "/")...)...)
}