Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Duplicate Datasource Entries #2277

Open
Henni opened this issue Nov 19, 2023 · 0 comments · May be fixed by #2278
Open

Duplicate Datasource Entries #2277

Henni opened this issue Nov 19, 2023 · 0 comments · May be fixed by #2278
Labels

Comments

@Henni
Copy link

Henni commented Nov 19, 2023

What happened?
Defining a datasource in the example.jsonnet makes it show up twice in the rendered secret.

example.json containing the loki datasource
local kp =
  (import 'kube-prometheus/main.libsonnet') +
  // Uncomment the following imports to enable its patches
  // (import 'kube-prometheus/addons/anti-affinity.libsonnet') +
  // (import 'kube-prometheus/addons/managed-cluster.libsonnet') +
  // (import 'kube-prometheus/addons/node-ports.libsonnet') +
  // (import 'kube-prometheus/addons/static-etcd.libsonnet') +
  // (import 'kube-prometheus/addons/custom-metrics.libsonnet') +
  // (import 'kube-prometheus/addons/external-metrics.libsonnet') +
  // (import 'kube-prometheus/addons/pyrra.libsonnet') +
  {
    values+:: {
      common+: {
        namespace: 'monitoring',
      },
      prometheus+: {
        namespaces: ['kube-system', 'default', 'teamspeak'],
      },
      grafana+:: {
        datasources+:: [{
          name: 'loki',
          type: 'loki',
          access: 'proxy',
          org_id: 1,
          url: 'http://loki.loki:3100',
          version: 1,
          editable: false,
        }],
      },
    },
  };

{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +
{
  ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
  for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))
} +
// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +
// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready
{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +
{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +
{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +
// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +
{ ['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-dashboardDatasources.yaml with the loki datasource rendered twice
apiVersion: v1
kind: Secret
metadata:
  labels:
    app.kubernetes.io/component: grafana
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 10.2.0
  name: grafana-datasources
  namespace: monitoring
stringData:
  datasources.yaml: |-
    {
        "apiVersion": 1,
        "datasources": [
            {
                "access": "proxy",
                "editable": false,
                "name": "prometheus",
                "orgId": 1,
                "type": "prometheus",
                "url": "http://prometheus-k8s.monitoring.svc:9090",
                "version": 1
            },
            {
                "access": "proxy",
                "editable": false,
                "name": "loki",
                "org_id": 1,
                "type": "loki",
                "url": "http://loki.loki:3100",
                "version": 1
            },
            {
                "access": "proxy",
                "editable": false,
                "name": "loki",
                "org_id": 1,
                "type": "loki",
                "url": "http://loki.loki:3100",
                "version": 1
            }
        ]
    }
type: Opaque

Did you expect to see some different?
Custom datasource should only be rendered once.

How to reproduce it (as minimally and precisely as possible):
Use default build.sh and copy example.json. Run build.sh and take a look at manifests/grafana-dashboardDatasources.yaml

Environment

  • Prometheus Operator version: quay.io/prometheus-operator/prometheus-operator:v0.69.1
  • Kubernetes version information:

    Client Version: v1.27.3
    Kustomize Version: v5.0.1
    Server Version: v1.27.7+k3s2

  • Kubernetes cluster kind: k3s
  • Prometheus Operator Logs: NA
  • Prometheus Logs: NA
@Henni Henni added the kind/bug label Nov 19, 2023
@Henni Henni linked a pull request Nov 19, 2023 that will close this issue
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant