From 352c9171cf69e0c9b2ef9eba14e77e9b72ba5ec5 Mon Sep 17 00:00:00 2001 From: Karl Skewes <karl.skewes@gmail.com> Date: Sat, 20 Oct 2018 15:54:04 +1300 Subject: [PATCH] kube-prometheus: Example jsonnet ingress, add alertmanager and grafana --- examples/ingress.jsonnet | 64 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 6 deletions(-) diff --git a/examples/ingress.jsonnet b/examples/ingress.jsonnet index 48bc9ada..8d98a10c 100644 --- a/examples/ingress.jsonnet +++ b/examples/ingress.jsonnet @@ -11,6 +11,23 @@ local kp = _config+:: { namespace: 'monitoring', }, + // Configure External URL's per application + alertmanager+:: { + alertmanager+: { + spec+: { + externalURL: 'http://alertmanager.example.com', + }, + }, + }, + grafana+:: { + config: { + sections: { + server: { + root_url: 'http://grafana.example.com/', + }, + }, + }, + }, prometheus+:: { prometheus+: { spec+: { @@ -18,10 +35,47 @@ local kp = }, }, }, + // Create ingress objects per application ingress+:: { - 'prometheus-k8s': + alertmanager: + ingress.new() + + ingress.mixin.metadata.withName('alertmanager-main') + + ingress.mixin.metadata.withNamespace($._config.namespace) + + ingress.mixin.metadata.withAnnotations({ + 'nginx.ingress.kubernetes.io/auth-type': 'basic', + 'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth', + 'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required', + }) + + ingress.mixin.spec.withRules( + ingressRule.new() + + ingressRule.withHost('alertmanager.example.com') + + ingressRule.mixin.http.withPaths( + httpIngressPath.new() + + httpIngressPath.mixin.backend.withServiceName('alertmanager-main') + + httpIngressPath.mixin.backend.withServicePort('web') + ), + ), + grafana: + ingress.new() + + ingress.mixin.metadata.withName('grafana') + + ingress.mixin.metadata.withNamespace($._config.namespace) + + ingress.mixin.metadata.withAnnotations({ + 'nginx.ingress.kubernetes.io/auth-type': 'basic', + 'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth', + 'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required', + }) + + ingress.mixin.spec.withRules( + ingressRule.new() + + ingressRule.withHost('grafana.example.com') + + ingressRule.mixin.http.withPaths( + httpIngressPath.new() + + httpIngressPath.mixin.backend.withServiceName('grafana') + + httpIngressPath.mixin.backend.withServicePort('http') + ), + ), + prometheus: ingress.new() + - ingress.mixin.metadata.withName('prometheus-k8s') + + ingress.mixin.metadata.withName('prometheus') + ingress.mixin.metadata.withNamespace($._config.namespace) + ingress.mixin.metadata.withAnnotations({ 'nginx.ingress.kubernetes.io/auth-type': 'basic', @@ -39,6 +93,7 @@ local kp = ), }, } + { + // Create basic auth secret - replace 'auth' file with your own ingress+:: { 'basic-auth-secret': secret.new('basic-auth', { auth: std.base64(importstr 'auth') }) + @@ -46,7 +101,4 @@ local kp = }, }; -k.core.v1.list.new([ - kp.ingress['prometheus-k8s'], - kp.ingress['basic-auth-secret'], -]) +{ [name + '-ingress']: kp.ingress[name] for name in std.objectFields(kp.ingress) } -- GitLab