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{