diff --git a/examples/ingress.jsonnet b/examples/ingress.jsonnet index 48bc9adad4490058264e333295473d10500eb6e6..8d98a10c520a8e2d2162e930f7f6b8b854604767 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) }