From 5fcf652cbfd9d94c8a8ff1dc19b77d0ef7f17f64 Mon Sep 17 00:00:00 2001 From: Cory O'Daniel <cory@coryodaniel.com> Date: Mon, 18 Mar 2019 14:53:56 -0700 Subject: [PATCH] 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 -- GitLab