From e42bff1ed3db7a7022f2eabf148ba19890ba4367 Mon Sep 17 00:00:00 2001 From: Alexandre Veyrenc <alexandre.veyrenc@orange.com> Date: Mon, 5 Nov 2018 13:05:46 +0100 Subject: [PATCH] Add support for Kubespray clusters --- README.md | 10 +++++++++- examples/jsonnet-snippets/kubespray.jsonnet | 2 ++ .../kube-prometheus-kubespray.libsonnet | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 examples/jsonnet-snippets/kubespray.jsonnet create mode 100644 jsonnet/kube-prometheus/kube-prometheus-kubespray.libsonnet diff --git a/README.md b/README.md index f8401338..69d402f3 100644 --- a/README.md +++ b/README.md @@ -328,7 +328,7 @@ Jsonnet is a turing complete language, any logic can be reflected in it. It also ### Cluster Creation Tools -A common example is that not all Kubernetes clusters are created exactly the same way, meaning the configuration to monitor them may be slightly different. For [kubeadm](examples/jsonnet-snippets/kubeadm.jsonnet) and [bootkube](examples/jsonnet-snippets/bootkube.jsonnet) and [kops](examples/jsonnet-snippets/kops.jsonnet) clusters there are mixins available to easily configure these: +A common example is that not all Kubernetes clusters are created exactly the same way, meaning the configuration to monitor them may be slightly different. For [kubeadm](examples/jsonnet-snippets/kubeadm.jsonnet), [bootkube](examples/jsonnet-snippets/bootkube.jsonnet), [kops](examples/jsonnet-snippets/kops.jsonnet) and [kubespray](examples/jsonnet-snippets/kubespray.jsonnet) clusters there are mixins available to easily configure these: kubeadm: @@ -354,6 +354,14 @@ kops: (import 'kube-prometheus/kube-prometheus-kops.libsonnet') ``` +kubespray: + +[embedmd]:# (examples/jsonnet-snippets/kubespray.jsonnet) +```jsonnet +(import 'kube-prometheus/kube-prometheus.libsonnet') + +(import 'kube-prometheus/kube-prometheus-kubespray.libsonnet') +``` + ### Internal Registry Some Kubernetes installations source all their images from an internal registry. kube-prometheus supports this use case and helps the user synchronize every image it uses to the internal registry and generate manifests pointing at the internal registry. diff --git a/examples/jsonnet-snippets/kubespray.jsonnet b/examples/jsonnet-snippets/kubespray.jsonnet new file mode 100644 index 00000000..1665cf72 --- /dev/null +++ b/examples/jsonnet-snippets/kubespray.jsonnet @@ -0,0 +1,2 @@ +(import 'kube-prometheus/kube-prometheus.libsonnet') + +(import 'kube-prometheus/kube-prometheus-kubespray.libsonnet') diff --git a/jsonnet/kube-prometheus/kube-prometheus-kubespray.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-kubespray.libsonnet new file mode 100644 index 00000000..8a69d215 --- /dev/null +++ b/jsonnet/kube-prometheus/kube-prometheus-kubespray.libsonnet @@ -0,0 +1,18 @@ +local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet'; +local service = k.core.v1.service; +local servicePort = k.core.v1.service.mixin.spec.portsType; + +{ + prometheus+: { + kubeControllerManagerPrometheusDiscoveryService: + service.new('kube-controller-manager-prometheus-discovery', { 'k8s-app': 'kube-controller-manager' }, servicePort.newNamed('http-metrics', 10252, 10252)) + + service.mixin.metadata.withNamespace('kube-system') + + service.mixin.metadata.withLabels({ 'k8s-app': 'kube-controller-manager' }) + + service.mixin.spec.withClusterIp('None'), + kubeSchedulerPrometheusDiscoveryService: + service.new('kube-scheduler-prometheus-discovery', { 'k8s-app': 'kube-scheduler' }, servicePort.newNamed('http-metrics', 10251, 10251)) + + service.mixin.metadata.withNamespace('kube-system') + + service.mixin.metadata.withLabels({ 'k8s-app': 'kube-scheduler' }) + + service.mixin.spec.withClusterIp('None'), + }, +} -- GitLab