diff --git a/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet b/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet
index f46347031c5e1e3a5591842a28039e8f27142194..db370e1d51a0054b0c3582e243e97c61a6d59cfd 100644
--- a/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet
+++ b/jsonnet/kube-prometheus/alertmanager/alertmanager.libsonnet
@@ -15,6 +15,7 @@ local alertmanagerConfig = "\nglobal:\n  resolve_timeout: 5m\nroute:\n  group_by
     },
 
     alertmanager+:: {
+      name: $._config.alertmanager.name,
       config: alertmanagerConfig,
       replicas: 3,
     },
@@ -24,13 +25,13 @@ local alertmanagerConfig = "\nglobal:\n  resolve_timeout: 5m\nroute:\n  group_by
     secret:
       local secret = k.core.v1.secret;
 
-      secret.new('alertmanager-main', { 'alertmanager.yaml': std.base64($._config.alertmanager.config) }) +
+      secret.new('alertmanager-' + $._config.alertmanager.name, { 'alertmanager.yaml': std.base64($._config.alertmanager.config) }) +
       secret.mixin.metadata.withNamespace($._config.namespace),
 
     serviceAccount:
       local serviceAccount = k.core.v1.serviceAccount;
 
-      serviceAccount.new('alertmanager-main') +
+      serviceAccount.new('alertmanager-' + $._config.alertmanager.name) +
       serviceAccount.mixin.metadata.withNamespace($._config.namespace),
 
     service:
@@ -39,9 +40,9 @@ local alertmanagerConfig = "\nglobal:\n  resolve_timeout: 5m\nroute:\n  group_by
 
       local alertmanagerPort = servicePort.newNamed('web', 9093, 'web');
 
-      service.new('alertmanager-main', { app: 'alertmanager', alertmanager: 'main' }, alertmanagerPort) +
+      service.new('alertmanager-' + $._config.alertmanager.name, { app: 'alertmanager', alertmanager: $._config.alertmanager.name }, alertmanagerPort) +
       service.mixin.metadata.withNamespace($._config.namespace) +
-      service.mixin.metadata.withLabels({ alertmanager: 'main' }),
+      service.mixin.metadata.withLabels({ alertmanager: $._config.alertmanager.name }),
 
     serviceMonitor:
       {
@@ -57,7 +58,7 @@ local alertmanagerConfig = "\nglobal:\n  resolve_timeout: 5m\nroute:\n  group_by
         spec: {
           selector: {
             matchLabels: {
-              alertmanager: 'main',
+              alertmanager: $._config.alertmanager.name,
             },
           },
           namespaceSelector: {
@@ -79,10 +80,10 @@ local alertmanagerConfig = "\nglobal:\n  resolve_timeout: 5m\nroute:\n  group_by
         apiVersion: 'monitoring.coreos.com/v1',
         kind: 'Alertmanager',
         metadata: {
-          name: 'main',
+          name: $._config.alertmanager.name,
           namespace: $._config.namespace,
           labels: {
-            alertmanager: 'main',
+            alertmanager: $._config.alertmanager.name,
           },
         },
         spec: {
@@ -90,7 +91,7 @@ local alertmanagerConfig = "\nglobal:\n  resolve_timeout: 5m\nroute:\n  group_by
           version: $._config.versions.alertmanager,
           baseImage: $._config.imageRepos.alertmanager,
           nodeSelector: { 'beta.kubernetes.io/os': 'linux' },
-          serviceAccountName: 'alertmanager-main',
+          serviceAccountName: 'alertmanager-' + $._config.alertmanager.name,
         },
       },
   },
diff --git a/jsonnet/kube-prometheus/prometheus/prometheus.libsonnet b/jsonnet/kube-prometheus/prometheus/prometheus.libsonnet
index d2ae7ae6b3519b129dd99abcca804dea7318cd9d..27888eef41188fb88b84514e91075509a5d4db62 100644
--- a/jsonnet/kube-prometheus/prometheus/prometheus.libsonnet
+++ b/jsonnet/kube-prometheus/prometheus/prometheus.libsonnet
@@ -12,7 +12,12 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
       prometheus: 'quay.io/prometheus/prometheus',
     },
 
+    alertmanager+:: {
+      name: 'main',
+    },
+
     prometheus+:: {
+      name: 'k8s',
       replicas: 2,
       rules: {},
       renderedRules: {},
@@ -23,7 +28,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
     serviceAccount:
       local serviceAccount = k.core.v1.serviceAccount;
 
-      serviceAccount.new('prometheus-k8s') +
+      serviceAccount.new('prometheus-' + $._config.prometheus.name) +
       serviceAccount.mixin.metadata.withNamespace($._config.namespace),
     service:
       local service = k.core.v1.service;
@@ -31,25 +36,25 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
 
       local prometheusPort = servicePort.newNamed('web', 9090, 'web');
 
-      service.new('prometheus-k8s', { app: 'prometheus', prometheus: 'k8s' }, prometheusPort) +
+      service.new('prometheus-' + $._config.prometheus.name, { app: 'prometheus', prometheus: $._config.prometheus.name }, prometheusPort) +
       service.mixin.metadata.withNamespace($._config.namespace) +
-      service.mixin.metadata.withLabels({ prometheus: 'k8s' }),
+      service.mixin.metadata.withLabels({ prometheus: $._config.prometheus.name }),
     rules:
       local configMap = k.core.v1.configMap;
 
       configMap.new('prometheus-k8s-rules', ({ 'all.rules.yaml': std.manifestYamlDoc($._config.prometheus.rules) } + $._config.prometheus.renderedRules)) +
-      configMap.mixin.metadata.withLabels({ role: 'alert-rules', prometheus: 'k8s' }) +
+      configMap.mixin.metadata.withLabels({ role: 'alert-rules', prometheus: $._config.prometheus.name }) +
       configMap.mixin.metadata.withNamespace($._config.namespace),
     roleBindingDefault:
       local roleBinding = k.rbac.v1.roleBinding;
 
       roleBinding.new() +
-      roleBinding.mixin.metadata.withName('prometheus-k8s') +
+      roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       roleBinding.mixin.metadata.withNamespace('default') +
       roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
-      roleBinding.mixin.roleRef.withName('prometheus-k8s') +
+      roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
       roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
-      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
+      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
     clusterRole:
       local clusterRole = k.rbac.v1.clusterRole;
       local policyRule = clusterRole.rulesType;
@@ -66,7 +71,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
       local rules = [nodeMetricsRule, metricsRule];
 
       clusterRole.new() +
-      clusterRole.mixin.metadata.withName('prometheus-k8s') +
+      clusterRole.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       clusterRole.withRules(rules),
     roleConfig:
       local role = k.rbac.v1.role;
@@ -92,26 +97,26 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
       roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
       roleBinding.mixin.roleRef.withName('prometheus-k8s-config') +
       roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
-      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
+      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
     roleBindingNamespace:
       local roleBinding = k.rbac.v1.roleBinding;
 
       roleBinding.new() +
-      roleBinding.mixin.metadata.withName('prometheus-k8s') +
+      roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       roleBinding.mixin.metadata.withNamespace($._config.namespace) +
       roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
-      roleBinding.mixin.roleRef.withName('prometheus-k8s') +
+      roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
       roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
-      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
+      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
     clusterRoleBinding:
       local clusterRoleBinding = k.rbac.v1.clusterRoleBinding;
 
       clusterRoleBinding.new() +
-      clusterRoleBinding.mixin.metadata.withName('prometheus-k8s') +
+      clusterRoleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
-      clusterRoleBinding.mixin.roleRef.withName('prometheus-k8s') +
+      clusterRoleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
       clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) +
-      clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
+      clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
     roleKubeSystem:
       local role = k.rbac.v1.role;
       local policyRule = role.rulesType;
@@ -127,7 +132,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
                        policyRule.withVerbs(['get', 'list', 'watch']);
 
       role.new() +
-      role.mixin.metadata.withName('prometheus-k8s') +
+      role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       role.mixin.metadata.withNamespace('kube-system') +
       role.withRules(coreRule),
     roleDefault:
@@ -145,19 +150,19 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
                        policyRule.withVerbs(['get', 'list', 'watch']);
 
       role.new() +
-      role.mixin.metadata.withName('prometheus-k8s') +
+      role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       role.mixin.metadata.withNamespace('default') +
       role.withRules(coreRule),
     roleBindingKubeSystem:
       local roleBinding = k.rbac.v1.roleBinding;
 
       roleBinding.new() +
-      roleBinding.mixin.metadata.withName('prometheus-k8s') +
+      roleBinding.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       roleBinding.mixin.metadata.withNamespace('kube-system') +
       roleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') +
-      roleBinding.mixin.roleRef.withName('prometheus-k8s') +
+      roleBinding.mixin.roleRef.withName('prometheus-' + $._config.prometheus.name) +
       roleBinding.mixin.roleRef.mixinInstance({ kind: 'Role' }) +
-      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-k8s', namespace: $._config.namespace }]),
+      roleBinding.withSubjects([{ kind: 'ServiceAccount', name: 'prometheus-' + $._config.prometheus.name, namespace: $._config.namespace }]),
     roleNamespace:
       local role = k.rbac.v1.role;
       local policyRule = role.rulesType;
@@ -173,7 +178,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
                        policyRule.withVerbs(['get', 'list', 'watch']);
 
       role.new() +
-      role.mixin.metadata.withName('prometheus-k8s') +
+      role.mixin.metadata.withName('prometheus-' + $._config.prometheus.name) +
       role.mixin.metadata.withNamespace($._config.namespace) +
       role.withRules(coreRule),
     prometheus:
@@ -188,29 +193,29 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
         apiVersion: 'monitoring.coreos.com/v1',
         kind: 'Prometheus',
         metadata: {
-          name: 'k8s',
+          name: $._config.prometheus.name,
           namespace: $._config.namespace,
           labels: {
-            prometheus: 'k8s',
+            prometheus: $._config.prometheus.name,
           },
         },
         spec: {
           replicas: $._config.prometheus.replicas,
           version: $._config.versions.prometheus,
           baseImage: $._config.imageRepos.prometheus,
-          serviceAccountName: 'prometheus-k8s',
+          serviceAccountName: 'prometheus-' + $._config.prometheus.name,
           serviceMonitorSelector: selector.withMatchExpressions({ key: 'k8s-app', operator: 'Exists' }),
           nodeSelector: { 'beta.kubernetes.io/os': 'linux' },
           ruleSelector: selector.withMatchLabels({
             role: 'alert-rules',
-            prometheus: 'k8s',
+            prometheus: $._config.prometheus.name,
           }),
           resources: resources,
           alerting: {
             alertmanagers: [
               {
                 namespace: $._config.namespace,
-                name: 'alertmanager-main',
+                name: 'alertmanager-' + $._config.alertmanager.name,
                 port: 'web',
               },
             ],
@@ -231,7 +236,7 @@ local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
         spec: {
           selector: {
             matchLabels: {
-              prometheus: 'k8s',
+              prometheus: $._config.prometheus.name,
             },
           },
           namespaceSelector: {