fix healthcheck path
This commit is contained in:
parent
e3cac7d0e5
commit
de821fc305
4 changed files with 57 additions and 52 deletions
|
@ -24,7 +24,6 @@ import (
|
||||||
"github.com/containous/traefik/log"
|
"github.com/containous/traefik/log"
|
||||||
"github.com/containous/traefik/provider/ecs"
|
"github.com/containous/traefik/provider/ecs"
|
||||||
"github.com/containous/traefik/provider/kubernetes"
|
"github.com/containous/traefik/provider/kubernetes"
|
||||||
"github.com/containous/traefik/provider/rancher"
|
|
||||||
"github.com/containous/traefik/safe"
|
"github.com/containous/traefik/safe"
|
||||||
"github.com/containous/traefik/server"
|
"github.com/containous/traefik/server"
|
||||||
"github.com/containous/traefik/server/uuid"
|
"github.com/containous/traefik/server/uuid"
|
||||||
|
@ -121,6 +120,8 @@ Complete documentation is available at https://traefik.io`,
|
||||||
Config: traefikConfiguration,
|
Config: traefikConfiguration,
|
||||||
DefaultPointersConfig: traefikPointersConfiguration,
|
DefaultPointersConfig: traefikPointersConfiguration,
|
||||||
Run: func() error {
|
Run: func() error {
|
||||||
|
traefikConfiguration.GlobalConfiguration.SetEffectiveConfiguration()
|
||||||
|
|
||||||
if traefikConfiguration.Web == nil {
|
if traefikConfiguration.Web == nil {
|
||||||
fmt.Println("Please enable the web provider to use healtcheck.")
|
fmt.Println("Please enable the web provider to use healtcheck.")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
@ -134,7 +135,8 @@ Complete documentation is available at https://traefik.io`,
|
||||||
}
|
}
|
||||||
client.Transport = tr
|
client.Transport = tr
|
||||||
}
|
}
|
||||||
resp, err := client.Head(protocol + "://" + traefikConfiguration.Web.Address + "/ping")
|
|
||||||
|
resp, err := client.Head(protocol + "://" + traefikConfiguration.Web.Address + traefikConfiguration.Web.Path + "ping")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error calling healthcheck: %s\n", err)
|
fmt.Printf("Error calling healthcheck: %s\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
@ -238,47 +240,7 @@ func run(globalConfiguration *configuration.GlobalConfiguration) {
|
||||||
|
|
||||||
http.DefaultTransport.(*http.Transport).Proxy = http.ProxyFromEnvironment
|
http.DefaultTransport.(*http.Transport).Proxy = http.ProxyFromEnvironment
|
||||||
|
|
||||||
if len(globalConfiguration.EntryPoints) == 0 {
|
globalConfiguration.SetEffectiveConfiguration()
|
||||||
globalConfiguration.EntryPoints = map[string]*configuration.EntryPoint{"http": {
|
|
||||||
Address: ":80",
|
|
||||||
ForwardedHeaders: &configuration.ForwardedHeaders{Insecure: true},
|
|
||||||
}}
|
|
||||||
globalConfiguration.DefaultEntryPoints = []string{"http"}
|
|
||||||
}
|
|
||||||
|
|
||||||
if globalConfiguration.Rancher != nil {
|
|
||||||
// Ensure backwards compatibility for now
|
|
||||||
if len(globalConfiguration.Rancher.AccessKey) > 0 ||
|
|
||||||
len(globalConfiguration.Rancher.Endpoint) > 0 ||
|
|
||||||
len(globalConfiguration.Rancher.SecretKey) > 0 {
|
|
||||||
|
|
||||||
if globalConfiguration.Rancher.API == nil {
|
|
||||||
globalConfiguration.Rancher.API = &rancher.APIConfiguration{
|
|
||||||
AccessKey: globalConfiguration.Rancher.AccessKey,
|
|
||||||
SecretKey: globalConfiguration.Rancher.SecretKey,
|
|
||||||
Endpoint: globalConfiguration.Rancher.Endpoint,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.Warn("Deprecated configuration found: rancher.[accesskey|secretkey|endpoint]. " +
|
|
||||||
"Please use rancher.api.[accesskey|secretkey|endpoint] instead.")
|
|
||||||
}
|
|
||||||
|
|
||||||
if globalConfiguration.Rancher.Metadata != nil && len(globalConfiguration.Rancher.Metadata.Prefix) == 0 {
|
|
||||||
globalConfiguration.Rancher.Metadata.Prefix = "latest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if globalConfiguration.Debug {
|
|
||||||
globalConfiguration.LogLevel = "DEBUG"
|
|
||||||
}
|
|
||||||
|
|
||||||
// ForwardedHeaders must be remove in the next breaking version
|
|
||||||
for entryPointName := range globalConfiguration.EntryPoints {
|
|
||||||
entryPoint := globalConfiguration.EntryPoints[entryPointName]
|
|
||||||
if entryPoint.ForwardedHeaders == nil {
|
|
||||||
entryPoint.ForwardedHeaders = &configuration.ForwardedHeaders{Insecure: true}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// logging
|
// logging
|
||||||
level, err := logrus.ParseLevel(strings.ToLower(globalConfiguration.LogLevel))
|
level, err := logrus.ParseLevel(strings.ToLower(globalConfiguration.LogLevel))
|
||||||
|
@ -286,6 +248,7 @@ func run(globalConfiguration *configuration.GlobalConfiguration) {
|
||||||
log.Error("Error getting level", err)
|
log.Error("Error getting level", err)
|
||||||
}
|
}
|
||||||
log.SetLevel(level)
|
log.SetLevel(level)
|
||||||
|
|
||||||
if len(globalConfiguration.TraefikLogsFile) > 0 {
|
if len(globalConfiguration.TraefikLogsFile) > 0 {
|
||||||
dir := filepath.Dir(globalConfiguration.TraefikLogsFile)
|
dir := filepath.Dir(globalConfiguration.TraefikLogsFile)
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,56 @@ type GlobalConfiguration struct {
|
||||||
DynamoDB *dynamodb.Provider `description:"Enable DynamoDB backend with default settings" export:"true"`
|
DynamoDB *dynamodb.Provider `description:"Enable DynamoDB backend with default settings" export:"true"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetEffectiveConfiguration adds missing configuration parameters derived from existing ones.
|
||||||
|
// It also takes care of maintaining backwards compatibility.
|
||||||
|
func (gc *GlobalConfiguration) SetEffectiveConfiguration() {
|
||||||
|
if len(gc.EntryPoints) == 0 {
|
||||||
|
gc.EntryPoints = map[string]*EntryPoint{"http": {
|
||||||
|
Address: ":80",
|
||||||
|
ForwardedHeaders: &ForwardedHeaders{Insecure: true},
|
||||||
|
}}
|
||||||
|
gc.DefaultEntryPoints = []string{"http"}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ForwardedHeaders must be remove in the next breaking version
|
||||||
|
for entryPointName := range gc.EntryPoints {
|
||||||
|
entryPoint := gc.EntryPoints[entryPointName]
|
||||||
|
if entryPoint.ForwardedHeaders == nil {
|
||||||
|
entryPoint.ForwardedHeaders = &ForwardedHeaders{Insecure: true}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if gc.Rancher != nil {
|
||||||
|
// Ensure backwards compatibility for now
|
||||||
|
if len(gc.Rancher.AccessKey) > 0 ||
|
||||||
|
len(gc.Rancher.Endpoint) > 0 ||
|
||||||
|
len(gc.Rancher.SecretKey) > 0 {
|
||||||
|
|
||||||
|
if gc.Rancher.API == nil {
|
||||||
|
gc.Rancher.API = &rancher.APIConfiguration{
|
||||||
|
AccessKey: gc.Rancher.AccessKey,
|
||||||
|
SecretKey: gc.Rancher.SecretKey,
|
||||||
|
Endpoint: gc.Rancher.Endpoint,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.Warn("Deprecated configuration found: rancher.[accesskey|secretkey|endpoint]. " +
|
||||||
|
"Please use rancher.api.[accesskey|secretkey|endpoint] instead.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if gc.Rancher.Metadata != nil && len(gc.Rancher.Metadata.Prefix) == 0 {
|
||||||
|
gc.Rancher.Metadata.Prefix = "latest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if gc.Debug {
|
||||||
|
gc.LogLevel = "DEBUG"
|
||||||
|
}
|
||||||
|
|
||||||
|
if gc.Web != nil && (gc.Web.Path == "" || !strings.HasSuffix(gc.Web.Path, "/")) {
|
||||||
|
gc.Web.Path += "/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// DefaultEntryPoints holds default entry points
|
// DefaultEntryPoints holds default entry points
|
||||||
type DefaultEntryPoints []string
|
type DefaultEntryPoints []string
|
||||||
|
|
||||||
|
|
|
@ -56,17 +56,9 @@ func goroutines() interface{} {
|
||||||
// Provide allows the provider to provide configurations to traefik
|
// Provide allows the provider to provide configurations to traefik
|
||||||
// using the given configuration channel.
|
// using the given configuration channel.
|
||||||
func (provider *Provider) Provide(configurationChan chan<- types.ConfigMessage, pool *safe.Pool, _ types.Constraints) error {
|
func (provider *Provider) Provide(configurationChan chan<- types.ConfigMessage, pool *safe.Pool, _ types.Constraints) error {
|
||||||
|
|
||||||
systemRouter := mux.NewRouter()
|
systemRouter := mux.NewRouter()
|
||||||
|
|
||||||
if provider.Path == "" {
|
|
||||||
provider.Path = "/"
|
|
||||||
}
|
|
||||||
|
|
||||||
if provider.Path != "/" {
|
if provider.Path != "/" {
|
||||||
if provider.Path[len(provider.Path)-1:] != "/" {
|
|
||||||
provider.Path += "/"
|
|
||||||
}
|
|
||||||
systemRouter.Methods("GET").Path("/").HandlerFunc(func(response http.ResponseWriter, request *http.Request) {
|
systemRouter.Methods("GET").Path("/").HandlerFunc(func(response http.ResponseWriter, request *http.Request) {
|
||||||
http.Redirect(response, request, provider.Path, 302)
|
http.Redirect(response, request, provider.Path, 302)
|
||||||
})
|
})
|
||||||
|
|
|
@ -337,7 +337,7 @@ func (server *Server) listenProviders(stop chan bool) {
|
||||||
lastReceivedConfigurationValue := lastReceivedConfiguration.Get().(time.Time)
|
lastReceivedConfigurationValue := lastReceivedConfiguration.Get().(time.Time)
|
||||||
providersThrottleDuration := time.Duration(server.globalConfiguration.ProvidersThrottleDuration)
|
providersThrottleDuration := time.Duration(server.globalConfiguration.ProvidersThrottleDuration)
|
||||||
if time.Now().After(lastReceivedConfigurationValue.Add(providersThrottleDuration)) {
|
if time.Now().After(lastReceivedConfigurationValue.Add(providersThrottleDuration)) {
|
||||||
log.Debugf("Last %s config received more than %s, OK", configMsg.ProviderName, server.globalConfiguration.ProvidersThrottleDuration)
|
log.Debugf("Last %s config received more than %s, OK", configMsg.ProviderName, server.globalConfiguration.ProvidersThrottleDuration.String())
|
||||||
// last config received more than n s ago
|
// last config received more than n s ago
|
||||||
server.configurationValidatedChan <- configMsg
|
server.configurationValidatedChan <- configMsg
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue