From 5fcf652cbfd9d94c8a8ff1dc19b77d0ef7f17f64 Mon Sep 17 00:00:00 2001 From: Cory O'Daniel Date: Mon, 18 Mar 2019 14:53:56 -0700 Subject: [PATCH 1/6] Adding kustomization files for remote bases Closes #2391 Adds support to allow kustomize users to point to a [remote base](https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md) of the prometheus-operator and kube-prometheus. Now that kustomize is a part of kubectl, this is provides a very simple way of installing prometheus-operator and kube-prometheus with no additional tools besides kubectl. * [Added] kustomization.yaml: hardcoded kustomization base for prometheus-operator bundle.yaml * [Added] kustomization generation from kube-prometheus example jsonnet --- example.jsonnet | 33 +++++++++++++----- manifests/kustomization.yaml | 66 ++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 8 deletions(-) create mode 100644 manifests/kustomization.yaml diff --git a/example.jsonnet b/example.jsonnet index fcd2bb01..17a88429 100644 --- a/example.jsonnet +++ b/example.jsonnet @@ -5,11 +5,28 @@ local kp = }, }; -{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + -{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + -{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + -{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + -{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + -{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + -{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +local kustomization = { + apiVersion: 'kustomize.config.k8s.io/v1beta1', + kind: 'Kustomization', + resources: + ['00namespace-' + name + '.yaml' for name in std.objectFields(kp.kubePrometheus)] + + ['0prometheus-operator-' + name + '.yaml' for name in std.objectFields(kp.prometheusOperator)] + + ['node-exporter-' + name + '.yaml' for name in std.objectFields(kp.nodeExporter)] + + ['kube-state-metrics-' + name + '.yaml' for name in std.objectFields(kp.kubeStateMetrics)] + + ['alertmanager-' + name + '.yaml' for name in std.objectFields(kp.alertmanager)] + + ['prometheus-' + name + '.yaml' for name in std.objectFields(kp.prometheus)] + + ['prometheus-adapter-' + name + '.yaml' for name in std.objectFields(kp.prometheusAdapter)] + + ['grafana-' + name + '.yaml' for name in std.objectFields(kp.grafana)], +}; + +local manifests = + { ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + + { ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; + +manifests { kustomization: kustomization } diff --git a/manifests/kustomization.yaml b/manifests/kustomization.yaml new file mode 100644 index 00000000..6b4f0518 --- /dev/null +++ b/manifests/kustomization.yaml @@ -0,0 +1,66 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- 00namespace-namespace.yaml +- 0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml +- 0prometheus-operator-0prometheusCustomResourceDefinition.yaml +- 0prometheus-operator-0prometheusruleCustomResourceDefinition.yaml +- 0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml +- 0prometheus-operator-clusterRole.yaml +- 0prometheus-operator-clusterRoleBinding.yaml +- 0prometheus-operator-deployment.yaml +- 0prometheus-operator-service.yaml +- 0prometheus-operator-serviceAccount.yaml +- 0prometheus-operator-serviceMonitor.yaml +- node-exporter-clusterRole.yaml +- node-exporter-clusterRoleBinding.yaml +- node-exporter-daemonset.yaml +- node-exporter-service.yaml +- node-exporter-serviceAccount.yaml +- node-exporter-serviceMonitor.yaml +- kube-state-metrics-clusterRole.yaml +- kube-state-metrics-clusterRoleBinding.yaml +- kube-state-metrics-deployment.yaml +- kube-state-metrics-role.yaml +- kube-state-metrics-roleBinding.yaml +- kube-state-metrics-service.yaml +- kube-state-metrics-serviceAccount.yaml +- kube-state-metrics-serviceMonitor.yaml +- alertmanager-alertmanager.yaml +- alertmanager-secret.yaml +- alertmanager-service.yaml +- alertmanager-serviceAccount.yaml +- alertmanager-serviceMonitor.yaml +- prometheus-clusterRole.yaml +- prometheus-clusterRoleBinding.yaml +- prometheus-prometheus.yaml +- prometheus-roleBindingConfig.yaml +- prometheus-roleBindingSpecificNamespaces.yaml +- prometheus-roleConfig.yaml +- prometheus-roleSpecificNamespaces.yaml +- prometheus-rules.yaml +- prometheus-service.yaml +- prometheus-serviceAccount.yaml +- prometheus-serviceMonitor.yaml +- prometheus-serviceMonitorApiserver.yaml +- prometheus-serviceMonitorCoreDNS.yaml +- prometheus-serviceMonitorKubeControllerManager.yaml +- prometheus-serviceMonitorKubeScheduler.yaml +- prometheus-serviceMonitorKubelet.yaml +- prometheus-adapter-apiService.yaml +- prometheus-adapter-clusterRole.yaml +- prometheus-adapter-clusterRoleBinding.yaml +- prometheus-adapter-clusterRoleBindingDelegator.yaml +- prometheus-adapter-clusterRoleServerResources.yaml +- prometheus-adapter-configMap.yaml +- prometheus-adapter-deployment.yaml +- prometheus-adapter-roleBindingAuthReader.yaml +- prometheus-adapter-service.yaml +- prometheus-adapter-serviceAccount.yaml +- grafana-dashboardDatasources.yaml +- grafana-dashboardDefinitions.yaml +- grafana-dashboardSources.yaml +- grafana-deployment.yaml +- grafana-service.yaml +- grafana-serviceAccount.yaml +- grafana-serviceMonitor.yaml From 7e0e5cd188da8b636865cff5308f09709d41e2e2 Mon Sep 17 00:00:00 2001 From: Cory O'Daniel Date: Tue, 19 Mar 2019 16:21:00 -0700 Subject: [PATCH 2/6] DRY up resource names --- README.md | 43 +++++++++++++++++++++------ example.jsonnet | 25 +++++++--------- manifests/kustomization.yaml | 56 ++++++++++++++++++------------------ 3 files changed, 73 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index bc320b79..64cc805a 100644 --- a/README.md +++ b/README.md @@ -157,14 +157,41 @@ local kp = }, }; -{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + -{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + -{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + -{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + -{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + -{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + -{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +local manifests = + { ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + + { ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; + +// local kustomization = { +// apiVersion: 'kustomize.config.k8s.io/v1beta1', +// kind: 'Kustomization', +// resources: +// ['00namespace-' + name + '.yaml' for name in std.objectFields(kp.kubePrometheus)] + +// ['0prometheus-operator-' + name + '.yaml' for name in std.objectFields(kp.prometheusOperator)] + +// ['node-exporter-' + name + '.yaml' for name in std.objectFields(kp.nodeExporter)] + +// ['kube-state-metrics-' + name + '.yaml' for name in std.objectFields(kp.kubeStateMetrics)] + +// ['alertmanager-' + name + '.yaml' for name in std.objectFields(kp.alertmanager)] + +// ['prometheus-' + name + '.yaml' for name in std.objectFields(kp.prometheus)] + +// ['prometheus-adapter-' + name + '.yaml' for name in std.objectFields(kp.prometheusAdapter)] + +// ['grafana-' + name + '.yaml' for name in std.objectFields(kp.grafana)], +// }; + +local foo = function(name) { name ::+ '.yaml' }; + +local kustomization = { + apiVersion: 'kustomize.config.k8s.io/v1beta1', + kind: 'Kustomization', + resources: std.map(foo , std.objectFields(manifests)) +}; + +manifests { + kustomization: kustomization +} ``` And here's the [build.sh](build.sh) script (which uses `vendor/` to render all manifests in a json structure of `{filename: manifest-content}`): diff --git a/example.jsonnet b/example.jsonnet index 17a88429..b5259edd 100644 --- a/example.jsonnet +++ b/example.jsonnet @@ -5,20 +5,6 @@ local kp = }, }; -local kustomization = { - apiVersion: 'kustomize.config.k8s.io/v1beta1', - kind: 'Kustomization', - resources: - ['00namespace-' + name + '.yaml' for name in std.objectFields(kp.kubePrometheus)] + - ['0prometheus-operator-' + name + '.yaml' for name in std.objectFields(kp.prometheusOperator)] + - ['node-exporter-' + name + '.yaml' for name in std.objectFields(kp.nodeExporter)] + - ['kube-state-metrics-' + name + '.yaml' for name in std.objectFields(kp.kubeStateMetrics)] + - ['alertmanager-' + name + '.yaml' for name in std.objectFields(kp.alertmanager)] + - ['prometheus-' + name + '.yaml' for name in std.objectFields(kp.prometheus)] + - ['prometheus-adapter-' + name + '.yaml' for name in std.objectFields(kp.prometheusAdapter)] + - ['grafana-' + name + '.yaml' for name in std.objectFields(kp.grafana)], -}; - local manifests = { ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + { ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + @@ -29,4 +15,13 @@ local manifests = { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; -manifests { kustomization: kustomization } +local kustomizationResourceFile(name) = name + ".yaml"; +local kustomization = { + apiVersion: 'kustomize.config.k8s.io/v1beta1', + kind: 'Kustomization', + resources: std.map(kustomizationResourceFile, std.objectFields(manifests)) +}; + +manifests { + kustomization: kustomization, +} diff --git a/manifests/kustomization.yaml b/manifests/kustomization.yaml index 6b4f0518..a74f797f 100644 --- a/manifests/kustomization.yaml +++ b/manifests/kustomization.yaml @@ -12,12 +12,18 @@ resources: - 0prometheus-operator-service.yaml - 0prometheus-operator-serviceAccount.yaml - 0prometheus-operator-serviceMonitor.yaml -- node-exporter-clusterRole.yaml -- node-exporter-clusterRoleBinding.yaml -- node-exporter-daemonset.yaml -- node-exporter-service.yaml -- node-exporter-serviceAccount.yaml -- node-exporter-serviceMonitor.yaml +- alertmanager-alertmanager.yaml +- alertmanager-secret.yaml +- alertmanager-service.yaml +- alertmanager-serviceAccount.yaml +- alertmanager-serviceMonitor.yaml +- grafana-dashboardDatasources.yaml +- grafana-dashboardDefinitions.yaml +- grafana-dashboardSources.yaml +- grafana-deployment.yaml +- grafana-service.yaml +- grafana-serviceAccount.yaml +- grafana-serviceMonitor.yaml - kube-state-metrics-clusterRole.yaml - kube-state-metrics-clusterRoleBinding.yaml - kube-state-metrics-deployment.yaml @@ -26,11 +32,22 @@ resources: - kube-state-metrics-service.yaml - kube-state-metrics-serviceAccount.yaml - kube-state-metrics-serviceMonitor.yaml -- alertmanager-alertmanager.yaml -- alertmanager-secret.yaml -- alertmanager-service.yaml -- alertmanager-serviceAccount.yaml -- alertmanager-serviceMonitor.yaml +- node-exporter-clusterRole.yaml +- node-exporter-clusterRoleBinding.yaml +- node-exporter-daemonset.yaml +- node-exporter-service.yaml +- node-exporter-serviceAccount.yaml +- node-exporter-serviceMonitor.yaml +- prometheus-adapter-apiService.yaml +- prometheus-adapter-clusterRole.yaml +- prometheus-adapter-clusterRoleBinding.yaml +- prometheus-adapter-clusterRoleBindingDelegator.yaml +- prometheus-adapter-clusterRoleServerResources.yaml +- prometheus-adapter-configMap.yaml +- prometheus-adapter-deployment.yaml +- prometheus-adapter-roleBindingAuthReader.yaml +- prometheus-adapter-service.yaml +- prometheus-adapter-serviceAccount.yaml - prometheus-clusterRole.yaml - prometheus-clusterRoleBinding.yaml - prometheus-prometheus.yaml @@ -47,20 +64,3 @@ resources: - prometheus-serviceMonitorKubeControllerManager.yaml - prometheus-serviceMonitorKubeScheduler.yaml - prometheus-serviceMonitorKubelet.yaml -- prometheus-adapter-apiService.yaml -- prometheus-adapter-clusterRole.yaml -- prometheus-adapter-clusterRoleBinding.yaml -- prometheus-adapter-clusterRoleBindingDelegator.yaml -- prometheus-adapter-clusterRoleServerResources.yaml -- prometheus-adapter-configMap.yaml -- prometheus-adapter-deployment.yaml -- prometheus-adapter-roleBindingAuthReader.yaml -- prometheus-adapter-service.yaml -- prometheus-adapter-serviceAccount.yaml -- grafana-dashboardDatasources.yaml -- grafana-dashboardDefinitions.yaml -- grafana-dashboardSources.yaml -- grafana-deployment.yaml -- grafana-service.yaml -- grafana-serviceAccount.yaml -- grafana-serviceMonitor.yaml From 1664600b9177b78948d25cd4f2b89f6e5fa9b33c Mon Sep 17 00:00:00 2001 From: Cory O'Daniel Date: Wed, 20 Mar 2019 09:55:27 -0700 Subject: [PATCH 3/6] Moved kustomize to own jsonnet file * [Modified] Makefile to run kustomize.jsonnet * [Modified] Moved kustomization from example.jsonnet to examples/kustomize.jsonnet * [Modified] kustomization file to land at root of kube-prometheus so current users can continue to use `kubectl apply -f manifests` --- Makefile | 2 +- example.jsonnet | 28 +++++---------- examples/kustomize.jsonnet | 27 +++++++++++++++ kustomization.yaml | 66 ++++++++++++++++++++++++++++++++++++ manifests/kustomization.yaml | 66 ------------------------------------ 5 files changed, 102 insertions(+), 87 deletions(-) create mode 100644 examples/kustomize.jsonnet create mode 100644 kustomization.yaml delete mode 100644 manifests/kustomization.yaml diff --git a/Makefile b/Makefile index 6b3651ae..88bf2547 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ generate: manifests **.md manifests: vendor example.jsonnet build.sh rm -rf manifests - ./build.sh + ./build.sh ./examples/kustomize.jsonnet vendor: $(JB_BINARY) jsonnetfile.json jsonnetfile.lock.json rm -rf vendor diff --git a/example.jsonnet b/example.jsonnet index b5259edd..81c473c6 100644 --- a/example.jsonnet +++ b/example.jsonnet @@ -5,23 +5,11 @@ local kp = }, }; -local manifests = - { ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + - { ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + - { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + - { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + - { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + - { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + - { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + - { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; - -local kustomizationResourceFile(name) = name + ".yaml"; -local kustomization = { - apiVersion: 'kustomize.config.k8s.io/v1beta1', - kind: 'Kustomization', - resources: std.map(kustomizationResourceFile, std.objectFields(manifests)) -}; - -manifests { - kustomization: kustomization, -} +{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + +{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + +{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + +{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + +{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + +{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + +{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } \ No newline at end of file diff --git a/examples/kustomize.jsonnet b/examples/kustomize.jsonnet new file mode 100644 index 00000000..d953f81e --- /dev/null +++ b/examples/kustomize.jsonnet @@ -0,0 +1,27 @@ +local kp = + (import 'kube-prometheus/kube-prometheus.libsonnet') + { + _config+:: { + namespace: 'monitoring', + }, + }; + +local manifests = + { ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + + { ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + + { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; + +local kustomizationResourceFile(name) = "./manifests/" + name + ".yaml"; +local kustomization = { + apiVersion: 'kustomize.config.k8s.io/v1beta1', + kind: 'Kustomization', + resources: std.map(kustomizationResourceFile, std.objectFields(manifests)) +}; + +manifests { + "../kustomization": kustomization, +} \ No newline at end of file diff --git a/kustomization.yaml b/kustomization.yaml new file mode 100644 index 00000000..fc91b965 --- /dev/null +++ b/kustomization.yaml @@ -0,0 +1,66 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- ./manifests/00namespace-namespace.yaml +- ./manifests/0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml +- ./manifests/0prometheus-operator-0prometheusCustomResourceDefinition.yaml +- ./manifests/0prometheus-operator-0prometheusruleCustomResourceDefinition.yaml +- ./manifests/0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml +- ./manifests/0prometheus-operator-clusterRole.yaml +- ./manifests/0prometheus-operator-clusterRoleBinding.yaml +- ./manifests/0prometheus-operator-deployment.yaml +- ./manifests/0prometheus-operator-service.yaml +- ./manifests/0prometheus-operator-serviceAccount.yaml +- ./manifests/0prometheus-operator-serviceMonitor.yaml +- ./manifests/alertmanager-alertmanager.yaml +- ./manifests/alertmanager-secret.yaml +- ./manifests/alertmanager-service.yaml +- ./manifests/alertmanager-serviceAccount.yaml +- ./manifests/alertmanager-serviceMonitor.yaml +- ./manifests/grafana-dashboardDatasources.yaml +- ./manifests/grafana-dashboardDefinitions.yaml +- ./manifests/grafana-dashboardSources.yaml +- ./manifests/grafana-deployment.yaml +- ./manifests/grafana-service.yaml +- ./manifests/grafana-serviceAccount.yaml +- ./manifests/grafana-serviceMonitor.yaml +- ./manifests/kube-state-metrics-clusterRole.yaml +- ./manifests/kube-state-metrics-clusterRoleBinding.yaml +- ./manifests/kube-state-metrics-deployment.yaml +- ./manifests/kube-state-metrics-role.yaml +- ./manifests/kube-state-metrics-roleBinding.yaml +- ./manifests/kube-state-metrics-service.yaml +- ./manifests/kube-state-metrics-serviceAccount.yaml +- ./manifests/kube-state-metrics-serviceMonitor.yaml +- ./manifests/node-exporter-clusterRole.yaml +- ./manifests/node-exporter-clusterRoleBinding.yaml +- ./manifests/node-exporter-daemonset.yaml +- ./manifests/node-exporter-service.yaml +- ./manifests/node-exporter-serviceAccount.yaml +- ./manifests/node-exporter-serviceMonitor.yaml +- ./manifests/prometheus-adapter-apiService.yaml +- ./manifests/prometheus-adapter-clusterRole.yaml +- ./manifests/prometheus-adapter-clusterRoleBinding.yaml +- ./manifests/prometheus-adapter-clusterRoleBindingDelegator.yaml +- ./manifests/prometheus-adapter-clusterRoleServerResources.yaml +- ./manifests/prometheus-adapter-configMap.yaml +- ./manifests/prometheus-adapter-deployment.yaml +- ./manifests/prometheus-adapter-roleBindingAuthReader.yaml +- ./manifests/prometheus-adapter-service.yaml +- ./manifests/prometheus-adapter-serviceAccount.yaml +- ./manifests/prometheus-clusterRole.yaml +- ./manifests/prometheus-clusterRoleBinding.yaml +- ./manifests/prometheus-prometheus.yaml +- ./manifests/prometheus-roleBindingConfig.yaml +- ./manifests/prometheus-roleBindingSpecificNamespaces.yaml +- ./manifests/prometheus-roleConfig.yaml +- ./manifests/prometheus-roleSpecificNamespaces.yaml +- ./manifests/prometheus-rules.yaml +- ./manifests/prometheus-service.yaml +- ./manifests/prometheus-serviceAccount.yaml +- ./manifests/prometheus-serviceMonitor.yaml +- ./manifests/prometheus-serviceMonitorApiserver.yaml +- ./manifests/prometheus-serviceMonitorCoreDNS.yaml +- ./manifests/prometheus-serviceMonitorKubeControllerManager.yaml +- ./manifests/prometheus-serviceMonitorKubeScheduler.yaml +- ./manifests/prometheus-serviceMonitorKubelet.yaml diff --git a/manifests/kustomization.yaml b/manifests/kustomization.yaml deleted file mode 100644 index a74f797f..00000000 --- a/manifests/kustomization.yaml +++ /dev/null @@ -1,66 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: -- 00namespace-namespace.yaml -- 0prometheus-operator-0alertmanagerCustomResourceDefinition.yaml -- 0prometheus-operator-0prometheusCustomResourceDefinition.yaml -- 0prometheus-operator-0prometheusruleCustomResourceDefinition.yaml -- 0prometheus-operator-0servicemonitorCustomResourceDefinition.yaml -- 0prometheus-operator-clusterRole.yaml -- 0prometheus-operator-clusterRoleBinding.yaml -- 0prometheus-operator-deployment.yaml -- 0prometheus-operator-service.yaml -- 0prometheus-operator-serviceAccount.yaml -- 0prometheus-operator-serviceMonitor.yaml -- alertmanager-alertmanager.yaml -- alertmanager-secret.yaml -- alertmanager-service.yaml -- alertmanager-serviceAccount.yaml -- alertmanager-serviceMonitor.yaml -- grafana-dashboardDatasources.yaml -- grafana-dashboardDefinitions.yaml -- grafana-dashboardSources.yaml -- grafana-deployment.yaml -- grafana-service.yaml -- grafana-serviceAccount.yaml -- grafana-serviceMonitor.yaml -- kube-state-metrics-clusterRole.yaml -- kube-state-metrics-clusterRoleBinding.yaml -- kube-state-metrics-deployment.yaml -- kube-state-metrics-role.yaml -- kube-state-metrics-roleBinding.yaml -- kube-state-metrics-service.yaml -- kube-state-metrics-serviceAccount.yaml -- kube-state-metrics-serviceMonitor.yaml -- node-exporter-clusterRole.yaml -- node-exporter-clusterRoleBinding.yaml -- node-exporter-daemonset.yaml -- node-exporter-service.yaml -- node-exporter-serviceAccount.yaml -- node-exporter-serviceMonitor.yaml -- prometheus-adapter-apiService.yaml -- prometheus-adapter-clusterRole.yaml -- prometheus-adapter-clusterRoleBinding.yaml -- prometheus-adapter-clusterRoleBindingDelegator.yaml -- prometheus-adapter-clusterRoleServerResources.yaml -- prometheus-adapter-configMap.yaml -- prometheus-adapter-deployment.yaml -- prometheus-adapter-roleBindingAuthReader.yaml -- prometheus-adapter-service.yaml -- prometheus-adapter-serviceAccount.yaml -- prometheus-clusterRole.yaml -- prometheus-clusterRoleBinding.yaml -- prometheus-prometheus.yaml -- prometheus-roleBindingConfig.yaml -- prometheus-roleBindingSpecificNamespaces.yaml -- prometheus-roleConfig.yaml -- prometheus-roleSpecificNamespaces.yaml -- prometheus-rules.yaml -- prometheus-service.yaml -- prometheus-serviceAccount.yaml -- prometheus-serviceMonitor.yaml -- prometheus-serviceMonitorApiserver.yaml -- prometheus-serviceMonitorCoreDNS.yaml -- prometheus-serviceMonitorKubeControllerManager.yaml -- prometheus-serviceMonitorKubeScheduler.yaml -- prometheus-serviceMonitorKubelet.yaml From 6be1adc19702cef17c4bfaea18440e13b55ed8fd Mon Sep 17 00:00:00 2001 From: Cory O'Daniel Date: Wed, 20 Mar 2019 10:03:00 -0700 Subject: [PATCH 4/6] regenerating README.md --- README.md | 43 ++++++++----------------------------------- 1 file changed, 8 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 64cc805a..bc320b79 100644 --- a/README.md +++ b/README.md @@ -157,41 +157,14 @@ local kp = }, }; -local manifests = - { ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + - { ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + - { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + - { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + - { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + - { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + - { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + - { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; - -// local kustomization = { -// apiVersion: 'kustomize.config.k8s.io/v1beta1', -// kind: 'Kustomization', -// resources: -// ['00namespace-' + name + '.yaml' for name in std.objectFields(kp.kubePrometheus)] + -// ['0prometheus-operator-' + name + '.yaml' for name in std.objectFields(kp.prometheusOperator)] + -// ['node-exporter-' + name + '.yaml' for name in std.objectFields(kp.nodeExporter)] + -// ['kube-state-metrics-' + name + '.yaml' for name in std.objectFields(kp.kubeStateMetrics)] + -// ['alertmanager-' + name + '.yaml' for name in std.objectFields(kp.alertmanager)] + -// ['prometheus-' + name + '.yaml' for name in std.objectFields(kp.prometheus)] + -// ['prometheus-adapter-' + name + '.yaml' for name in std.objectFields(kp.prometheusAdapter)] + -// ['grafana-' + name + '.yaml' for name in std.objectFields(kp.grafana)], -// }; - -local foo = function(name) { name ::+ '.yaml' }; - -local kustomization = { - apiVersion: 'kustomize.config.k8s.io/v1beta1', - kind: 'Kustomization', - resources: std.map(foo , std.objectFields(manifests)) -}; - -manifests { - kustomization: kustomization -} +{ ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } + +{ ['0prometheus-operator-' + name]: kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator) } + +{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + +{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + +{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + +{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + +{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } ``` And here's the [build.sh](build.sh) script (which uses `vendor/` to render all manifests in a json structure of `{filename: manifest-content}`): From 6c8d948335bd9a4c029bc2d8652fecd772157cf7 Mon Sep 17 00:00:00 2001 From: Cory O'Daniel Date: Thu, 21 Mar 2019 10:47:40 -0700 Subject: [PATCH 5/6] all the new lines --- example.jsonnet | 3 ++- examples/kustomize.jsonnet | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/example.jsonnet b/example.jsonnet index 81c473c6..c446eac1 100644 --- a/example.jsonnet +++ b/example.jsonnet @@ -12,4 +12,5 @@ local kp = { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } \ No newline at end of file +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + diff --git a/examples/kustomize.jsonnet b/examples/kustomize.jsonnet index d953f81e..e1cf7a27 100644 --- a/examples/kustomize.jsonnet +++ b/examples/kustomize.jsonnet @@ -24,4 +24,5 @@ local kustomization = { manifests { "../kustomization": kustomization, -} \ No newline at end of file +} + From 37a0e2b5a6cd5c6d3c7ff7f69bcb84a25cad8e7f Mon Sep 17 00:00:00 2001 From: Cory O'Daniel Date: Tue, 26 Mar 2019 11:44:37 -0700 Subject: [PATCH 6/6] running gen in docker --- README.md | 1 + docs/developing-prometheus-rules-and-grafana-dashboards.md | 1 + examples/kustomize.jsonnet | 6 +++--- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bc320b79..115fbbbf 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,7 @@ local kp = { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + ``` And here's the [build.sh](build.sh) script (which uses `vendor/` to render all manifests in a json structure of `{filename: manifest-content}`): diff --git a/docs/developing-prometheus-rules-and-grafana-dashboards.md b/docs/developing-prometheus-rules-and-grafana-dashboards.md index 671a8987..17838b82 100644 --- a/docs/developing-prometheus-rules-and-grafana-dashboards.md +++ b/docs/developing-prometheus-rules-and-grafana-dashboards.md @@ -25,6 +25,7 @@ local kp = { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + ``` ## Prometheus rules diff --git a/examples/kustomize.jsonnet b/examples/kustomize.jsonnet index e1cf7a27..1b6b9038 100644 --- a/examples/kustomize.jsonnet +++ b/examples/kustomize.jsonnet @@ -15,14 +15,14 @@ local manifests = { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) }; -local kustomizationResourceFile(name) = "./manifests/" + name + ".yaml"; +local kustomizationResourceFile(name) = './manifests/' + name + '.yaml'; local kustomization = { apiVersion: 'kustomize.config.k8s.io/v1beta1', kind: 'Kustomization', - resources: std.map(kustomizationResourceFile, std.objectFields(manifests)) + resources: std.map(kustomizationResourceFile, std.objectFields(manifests)), }; manifests { - "../kustomization": kustomization, + '../kustomization': kustomization, }