diff --git a/Makefile b/Makefile index 243dbdd5a9426b1cbc3802d42a06c0d1d1d28d04..2d923b4f90db784c0d7906bbd650b9520d81a4de 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ all: build -REPO=quay.io/coreos/prometheus-operator -TAG=$(shell git rev-parse --short HEAD) +REPO?=quay.io/coreos/prometheus-operator +TAG?=$(shell git rev-parse --short HEAD) build: ./scripts/check_license.sh diff --git a/pkg/alertmanager/petset.go b/pkg/alertmanager/petset.go index 9a69d4cf806c26b722ae56fd283f246c3f985ee1..cd8824cce77f22ceaf265ba43f77def9f42c2483 100644 --- a/pkg/alertmanager/petset.go +++ b/pkg/alertmanager/petset.go @@ -16,6 +16,8 @@ package alertmanager import ( "fmt" + "net/url" + "path" "github.com/coreos/prometheus-operator/pkg/spec" "k8s.io/client-go/1.5/pkg/api/resource" @@ -110,7 +112,7 @@ func makePetSetService(p *spec.Alertmanager) *v1.Service { return svc } -func makePetSetSpec(ns, name, image, version, externalUrl string, replicas int32) v1alpha1.PetSetSpec { +func makePetSetSpec(ns, name, image, version, externalURL string, replicas int32) v1alpha1.PetSetSpec { commands := []string{ "/bin/alertmanager", fmt.Sprintf("-config.file=%s", "/etc/alertmanager/config/alertmanager.yaml"), @@ -123,8 +125,23 @@ func makePetSetSpec(ns, name, image, version, externalUrl string, replicas int32 commands = append(commands, fmt.Sprintf("-mesh.peer=%s-%d.%s.%s.svc", name, i, "alertmanager", ns)) } - if externalUrl != "" { - commands = append(commands, "-web.external-url="+externalUrl) + webRoutePrefix := "" + if externalURL != "" { + commands = append(commands, "-web.external-url="+externalURL) + extUrl, err := url.Parse(externalURL) + if err == nil { + webRoutePrefix = extUrl.Path + } + } + + localReloadURL := &url.URL{ + Scheme: "http", + Host: "localhost:9093", + Path: path.Clean(webRoutePrefix + "/-/reload"), + } + + if externalURL != "" { + commands = append(commands, "-web.external-url="+externalURL) } terminationGracePeriod := int64(0) @@ -175,7 +192,7 @@ func makePetSetSpec(ns, name, image, version, externalUrl string, replicas int32 Name: "config-reloader", Image: "jimmidyson/configmap-reload", Args: []string{ - "-webhook-url=http://localhost:9093/-/reload", + fmt.Sprintf("-webhook-url=%s", localReloadURL), "-volume-dir=/etc/alertmanager/config", }, VolumeMounts: []v1.VolumeMount{ diff --git a/pkg/prometheus/petset.go b/pkg/prometheus/petset.go index 75fd888812b923ce1da7ba06c255b7e6261f29ed..40145746b758cbc3b03c644d554f43053e247507 100644 --- a/pkg/prometheus/petset.go +++ b/pkg/prometheus/petset.go @@ -155,6 +155,7 @@ func makePetSetSpec(p spec.Prometheus) v1alpha1.PetSetSpec { "-storage.local.path=/var/prometheus/data", "-config.file=/etc/prometheus/config/prometheus.yaml", } + webRoutePrefix := "" if p.Spec.ExternalURL != "" { promArgs = append(promArgs, "-web.external-url="+p.Spec.ExternalURL) @@ -164,6 +165,12 @@ func makePetSetSpec(p spec.Prometheus) v1alpha1.PetSetSpec { } } + localReloadURL := &url.URL{ + Scheme: "http", + Host: "localhost:9090", + Path: path.Clean(webRoutePrefix + "/-/reload"), + } + return v1alpha1.PetSetSpec{ ServiceName: "prometheus", Replicas: &p.Spec.Replicas, @@ -226,7 +233,7 @@ func makePetSetSpec(p spec.Prometheus) v1alpha1.PetSetSpec { Name: "config-reloader", Image: "jimmidyson/configmap-reload", Args: []string{ - "-webhook-url=http://localhost:9090/-/reload", + fmt.Sprintf("-webhook-url=%s", localReloadURL), "-volume-dir=/etc/prometheus/config", }, VolumeMounts: []v1.VolumeMount{ @@ -246,7 +253,7 @@ func makePetSetSpec(p spec.Prometheus) v1alpha1.PetSetSpec { Name: "rules-reloader", Image: "jimmidyson/configmap-reload", Args: []string{ - "-webhook-url=http://localhost:9090/-/reload", + fmt.Sprintf("-webhook-url=%s", localReloadURL), "-volume-dir=/etc/prometheus/rules/", }, VolumeMounts: []v1.VolumeMount{