From 4b9f8bb107df621f7a334146183a02ab1d72954f Mon Sep 17 00:00:00 2001 From: Kemal Akkoyun Date: Fri, 6 Nov 2020 12:20:32 +0100 Subject: [PATCH 1/3] Remove ksonnet from ingress.jsonnet Signed-off-by: Kemal Akkoyun --- examples/ingress.jsonnet | 132 ++++++++++++++++++++------------------- 1 file changed, 69 insertions(+), 63 deletions(-) diff --git a/examples/ingress.jsonnet b/examples/ingress.jsonnet index 6eb6e3eb..32dd2f1c 100644 --- a/examples/ingress.jsonnet +++ b/examples/ingress.jsonnet @@ -1,9 +1,17 @@ -local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet'; -local secret = k.core.v1.secret; -local ingress = k.extensions.v1beta1.ingress; -local ingressTls = ingress.mixin.spec.tlsType; -local ingressRule = ingress.mixin.spec.rulesType; -local httpIngressPath = ingressRule.mixin.http.pathsType; +local ingress(name, namespace, rules) = { + apiVersion: 'extensions/v1beta1', + kind: 'Ingress', + metadata: { + name: name, + namespace: namespace, + annotations: { + 'nginx.ingress.kubernetes.io/auth-type': 'basic', + 'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth', + 'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required', + }, + }, + spec: { rules: rules }, +}; local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') + @@ -37,67 +45,65 @@ local kp = }, // Create ingress objects per application ingress+:: { - 'alertmanager-main': - 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-k8s': - ingress.new() + - ingress.mixin.metadata.withName('prometheus-k8s') + - 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('prometheus.example.com') + - ingressRule.mixin.http.withPaths( - httpIngressPath.new() + - httpIngressPath.mixin.backend.withServiceName('prometheus-k8s') + - httpIngressPath.mixin.backend.withServicePort('web') - ), - ), + 'alertmanager-main': ingress( + 'alertmanager-main', + $._config.namespace, + [{ + host: 'alertmanager.example.com', + http: { + paths: [{ + backend: { + serviceName: 'alertmanager-main', + servicePort: 'web', + }, + }], + }, + }] + ), + grafana: ingress( + 'grafana', + $._config.namespace, + [{ + host: 'grafana.example.com', + http: { + paths: [{ + backend: { + serviceName: 'grafana', + servicePort: 'http', + }, + }], + }, + }], + ), + 'prometheus-k8s': ingress( + 'prometheus-k8s', + $._config.namespace, + [{ + host: 'prometheus.example.com', + http: { + paths: [{ + backend: { + serviceName: 'prometheus-k8s', + servicePort: 'web', + }, + }], + }, + }], + ), }, } + { // Create basic auth secret - replace 'auth' file with your own ingress+:: { - 'basic-auth-secret': - secret.new('basic-auth', { auth: std.base64(importstr 'auth') }) + - secret.mixin.metadata.withNamespace($._config.namespace), + 'basic-auth-secret': { + apiVersion: 'v1', + kind: 'Secret', + metadata: { + name: 'basic-auth', + namespace: $._config.namespace, + }, + data: { auth: std.base64(importstr 'auth') }, + type: 'Opaque', + }, }, }; From b84bd5c72f4d5660538945f3ff0f2eed34941405 Mon Sep 17 00:00:00 2001 From: Kemal Akkoyun Date: Fri, 6 Nov 2020 12:27:20 +0100 Subject: [PATCH 2/3] Update docs Signed-off-by: Kemal Akkoyun --- ...prometheus-alertmanager-grafana-ingress.md | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/docs/exposing-prometheus-alertmanager-grafana-ingress.md b/docs/exposing-prometheus-alertmanager-grafana-ingress.md index 7d3f246d..4e8615ca 100644 --- a/docs/exposing-prometheus-alertmanager-grafana-ingress.md +++ b/docs/exposing-prometheus-alertmanager-grafana-ingress.md @@ -27,13 +27,6 @@ In order to use this a secret needs to be created containing the name of the `ht Also, the applications provide external links to themselves in alerts and various places. When an ingress is used in front of the applications these links need to be based on the external URL's. This can be configured for each application in jsonnet. ```jsonnet -local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet'; -local secret = k.core.v1.secret; -local ingress = k.extensions.v1beta1.ingress; -local ingressTls = ingress.mixin.spec.tlsType; -local ingressRule = ingress.mixin.spec.rulesType; -local httpIngressPath = ingressRule.mixin.http.pathsType; - local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') + { @@ -48,30 +41,44 @@ local kp = }, }, ingress+:: { - 'prometheus-k8s': - ingress.new() + - ingress.mixin.metadata.withName($.prometheus.prometheus.metadata.name) + - ingress.mixin.metadata.withNamespace($.prometheus.prometheus.metadata.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('prometheus.example.com') + - ingressRule.mixin.http.withPaths( - httpIngressPath.new() + - httpIngressPath.mixin.backend.withServiceName($.prometheus.service.metadata.name) + - httpIngressPath.mixin.backend.withServicePort('web') - ), - ), + 'prometheus-k8s': { + apiVersion: 'extensions/v1beta1', + kind: 'Ingress', + metadata: { + name: $.prometheus.prometheus.metadata.name, + namespace: $.prometheus.prometheus.metadata.namespace, + annotations: { + 'nginx.ingress.kubernetes.io/auth-type': 'basic', + 'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth', + 'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required', + }, + }, + spec: { + rules: [{ + host: 'prometheus.example.com', + http: { + paths: [{ + backend: { + serviceName: $.prometheus.service.metadata.name, + servicePort: 'web', + }, + }], + }, + }], + }, }, } + { ingress+:: { - 'basic-auth-secret': - secret.new('basic-auth', { auth: std.base64(importstr 'auth') }) + - secret.mixin.metadata.withNamespace($._config.namespace), + 'basic-auth-secret': { + apiVersion: 'v1', + kind: 'Secret', + metadata: { + name: 'basic-auth', + namespace: $._config.namespace, + }, + data: { auth: std.base64(importstr 'auth') }, + type: 'Opaque', + }, }, }; From 207a13323375a21e8a0a38c93e029aa7916e53e1 Mon Sep 17 00:00:00 2001 From: Kemal Akkoyun Date: Fri, 6 Nov 2020 15:13:37 +0100 Subject: [PATCH 3/3] Update ingress API Signed-off-by: Kemal Akkoyun --- ...prometheus-alertmanager-grafana-ingress.md | 8 +++++--- examples/ingress.jsonnet | 20 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/docs/exposing-prometheus-alertmanager-grafana-ingress.md b/docs/exposing-prometheus-alertmanager-grafana-ingress.md index 4e8615ca..f05ab4ce 100644 --- a/docs/exposing-prometheus-alertmanager-grafana-ingress.md +++ b/docs/exposing-prometheus-alertmanager-grafana-ingress.md @@ -42,7 +42,7 @@ local kp = }, ingress+:: { 'prometheus-k8s': { - apiVersion: 'extensions/v1beta1', + apiVersion: 'networking.k8s.io/v1', kind: 'Ingress', metadata: { name: $.prometheus.prometheus.metadata.name, @@ -59,8 +59,10 @@ local kp = http: { paths: [{ backend: { - serviceName: $.prometheus.service.metadata.name, - servicePort: 'web', + service: { + name: $.prometheus.service.metadata.name, + port: 'web', + }, }, }], }, diff --git a/examples/ingress.jsonnet b/examples/ingress.jsonnet index 32dd2f1c..023af577 100644 --- a/examples/ingress.jsonnet +++ b/examples/ingress.jsonnet @@ -1,5 +1,5 @@ local ingress(name, namespace, rules) = { - apiVersion: 'extensions/v1beta1', + apiVersion: 'networking.k8s.io/v1', kind: 'Ingress', metadata: { name: name, @@ -53,8 +53,10 @@ local kp = http: { paths: [{ backend: { - serviceName: 'alertmanager-main', - servicePort: 'web', + service: { + name: 'alertmanager-main', + port: 'web', + }, }, }], }, @@ -68,8 +70,10 @@ local kp = http: { paths: [{ backend: { - serviceName: 'grafana', - servicePort: 'http', + service: { + name: 'grafana', + port: 'http', + }, }, }], }, @@ -83,8 +87,10 @@ local kp = http: { paths: [{ backend: { - serviceName: 'prometheus-k8s', - servicePort: 'web', + service: { + name: 'prometheus-k8s', + port: 'web', + }, }, }], },