local kp =
  (import 'kube-prometheus/main.libsonnet') +
  (import 'prometheus-pushgateway/pushgateway.libsonnet') +
  {
    _config+:: {
      namespace: 'monitoring',
      versions+:: {
        pushgateway: 'v1.5.1',
      }
    },
    values+:: {
      common+: {
        namespace: 'monitoring',
      },
    },
    prometheus+: {
      prometheus+: {
        spec+: {
          replicas: 1,
        }
      }
    },
};

[kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus)] +
[kp.prometheusOperator[name] for name in std.objectFields(kp.prometheusOperator)] +
[kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter)] +
[kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics)] +
[kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane)] +
[kp.prometheus[name] for name in std.objectFields(kp.prometheus)] +
[kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter)] +
[kp.grafana[name] for name in std.objectFields(kp.grafana)] +
[kp.pushgateway[name] for name in std.objectFields(kp.pushgateway)]
