From cf1e8722036a6314e49197ca7a34ebbb1d321e94 Mon Sep 17 00:00:00 2001 From: satriadhikara <84092642+satriadhikara@users.noreply.github.com> Date: Mon, 28 Sep 2026 06:34:00 +0700 Subject: [PATCH 1/4] fix(dashboard-ui): upgrade Grafana to 11.6.16 and pin plugins GF_INSTALL_PLUGINS installed the newest Infinity release on every container creation. Infinity 4.0.0 requires Grafana >=11.6.11, while bitnamilegacy/grafana:11.4.0 reports Grafana 11.3.1, so the plugin frontend failed to load and Infinity panels showed no data. bitnamilegacy/grafana is frozen (newest tags 11.6.1 and 12.1.1) and cannot run Infinity 4.x, so switch to the official grafana/grafana image, move config mounts to /etc/grafana, pin Infinity 4.0.0 and OpenSearch 2.34.4, and disable Grafana's unpinned default plugin preinstalls. Use the same image in the dashboard service tests. Fixes #106 --- .docker/docker-compose.yml | 15 +++---- .../etc/skel/docker-compose.yml | 15 +++---- .scripts/test-grafana-plugins.py | 41 +++++++++++++++++++ .../tests/grafana/__init__.py | 2 +- docker-compose.yml | 15 +++---- 5 files changed, 66 insertions(+), 22 deletions(-) create mode 100644 .scripts/test-grafana-plugins.py diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index 9a8a9e7f8e..85a1c149f7 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -594,14 +594,14 @@ services: restart: "no" container_name: dbrepo-dashboard-ui hostname: dashboard-ui - image: docker.io/bitnamilegacy/grafana:11.4.0 + image: docker.io/grafana/grafana:11.6.16 volumes: - ./config/dashboards:/app/dashboards - - ./config/grafana.ini:/opt/bitnami/grafana/conf/grafana.ini - - ./config/provisioning/dashboards/provider.yaml:/opt/bitnami/grafana/conf/provisioning/dashboards/provider.yaml - - ./config/provisioning/datasources/infinity.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/infinity.yaml - - ./config/provisioning/datasources/prometheus.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/prometheus.yaml - - ./config/provisioning/datasources/opensearch.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/opensearch.yaml + - ./config/grafana.ini:/etc/grafana/grafana.ini + - ./config/provisioning/dashboards/provider.yaml:/etc/grafana/provisioning/dashboards/provider.yaml + - ./config/provisioning/datasources/infinity.yaml:/etc/grafana/provisioning/datasources/infinity.yaml + - ./config/provisioning/datasources/prometheus.yaml:/etc/grafana/provisioning/datasources/prometheus.yaml + - ./config/provisioning/datasources/opensearch.yaml:/etc/grafana/provisioning/datasources/opensearch.yaml environment: BASE_URL: "${BASE_URL:-http://localhost}" DASHBOARD_DB_NAME: "${DASHBOARD_DB_NAME:-grafana}" @@ -610,7 +610,8 @@ services: GF_SERVER_ROOT_URL: http://dashboard-ui:3000/dashboard/ GF_SECURITY_ADMIN_USER: "${DASHBOARD_UI_USERNAME:-admin}" GF_SECURITY_ADMIN_PASSWORD: "${DASHBOARD_UI_PASSWORD:-admin}" - GF_INSTALL_PLUGINS: "yesoreyeram-infinity-datasource,grafana-opensearch-datasource" + GF_INSTALL_PLUGINS: "yesoreyeram-infinity-datasource 4.0.0,grafana-opensearch-datasource 2.34.4" + GF_PLUGINS_PREINSTALL_DISABLED: "true" READONLY_USERNAME: "${READONLY_USERNAME:-readonly}" READONLY_PASSWORD: "${READONLY_PASSWORD:-readonly}" healthcheck: diff --git a/.live/config/includes.chroot_after_packages/etc/skel/docker-compose.yml b/.live/config/includes.chroot_after_packages/etc/skel/docker-compose.yml index fd8ca9f769..5dff65b45d 100644 --- a/.live/config/includes.chroot_after_packages/etc/skel/docker-compose.yml +++ b/.live/config/includes.chroot_after_packages/etc/skel/docker-compose.yml @@ -580,23 +580,24 @@ services: restart: "no" container_name: dbrepo-dashboard-ui hostname: dashboard-ui - image: docker.io/bitnamilegacy/grafana:${GRAFANA_VERSION} + image: docker.io/grafana/grafana:11.6.16 ports: - "3000:3000" volumes: - ./config/dashboards:/app/dashboards - - ./config/grafana.ini:/opt/bitnami/grafana/conf/grafana.ini - - ./config/provisioning/dashboards/provider.yaml:/opt/bitnami/grafana/conf/provisioning/dashboards/provider.yaml - - ./config/provisioning/datasources/infinity.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/infinity.yaml - - ./config/provisioning/datasources/prometheus.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/prometheus.yaml - - ./config/provisioning/datasources/opensearch.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/opensearch.yaml + - ./config/grafana.ini:/etc/grafana/grafana.ini + - ./config/provisioning/dashboards/provider.yaml:/etc/grafana/provisioning/dashboards/provider.yaml + - ./config/provisioning/datasources/infinity.yaml:/etc/grafana/provisioning/datasources/infinity.yaml + - ./config/provisioning/datasources/prometheus.yaml:/etc/grafana/provisioning/datasources/prometheus.yaml + - ./config/provisioning/datasources/opensearch.yaml:/etc/grafana/provisioning/datasources/opensearch.yaml environment: BASE_URL: "${BASE_URL:-http://localhost}" DASHBOARD_DB_NAME: "${DASHBOARD_DB_NAME:-grafana}" DASHBOARD_DB_USERNAME: "${DASHBOARD_DB_USERNAME:-grafana}" DASHBOARD_DB_PASSWORD: "${DASHBOARD_DB_PASSWORD:-dbrepo}" GF_SERVER_ROOT_URL: http://dashboard-ui:3000/dashboard/ - GF_INSTALL_PLUGINS: "yesoreyeram-infinity-datasource,grafana-opensearch-datasource" + GF_INSTALL_PLUGINS: "yesoreyeram-infinity-datasource 4.0.0,grafana-opensearch-datasource 2.34.4" + GF_PLUGINS_PREINSTALL_DISABLED: "true" healthcheck: test: curl -fsSL --head 127.0.0.1:3000 <<: *healthcheck-params diff --git a/.scripts/test-grafana-plugins.py b/.scripts/test-grafana-plugins.py new file mode 100644 index 0000000000..c37f337422 --- /dev/null +++ b/.scripts/test-grafana-plugins.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 +"""Run with python3 .scripts/test-grafana-plugins.py; requires Docker Compose, not a daemon.""" + +import json +import os +from pathlib import Path +import subprocess + + +ROOT = Path(__file__).resolve().parents[1] +# Do not inherit deployment settings or Compose overrides from the calling shell. +ENV = {key: os.environ[key] for key in ("PATH", "HOME") if key in os.environ} +COMPOSE_FILES = ( + "docker-compose.yml", + ".docker/docker-compose.yml", + ".live/config/includes.chroot_after_packages/etc/skel/docker-compose.yml", +) + + +def check(): + for compose in COMPOSE_FILES: + result = subprocess.run( + ["docker", "compose", "-f", str(ROOT / compose), "config", "--format", "json"], + env=ENV, capture_output=True, text=True, check=True, + ) + service = json.loads(result.stdout)["services"]["dbrepo-dashboard-ui"] + environment = service["environment"] + # An unpinned plugin installs the newest release, which can require a newer Grafana. + for plugin in environment["GF_INSTALL_PLUGINS"].split(","): + assert len(plugin.split()) == 2, (compose, plugin) + # Grafana otherwise installs unpinned default apps in the background. + assert environment["GF_PLUGINS_PREINSTALL_DISABLED"] == "true", compose + assert service["image"].startswith("docker.io/grafana/grafana:"), (compose, service["image"]) + for volume in service["volumes"]: + if volume["source"].endswith((".ini", ".yaml")): + assert volume["target"].startswith("/etc/grafana/"), (compose, volume["target"]) + print("PASS: all Compose files pin Grafana plugins and mount config for the official image") + + +if __name__ == "__main__": + check() diff --git a/dbrepo-dashboard-service/tests/grafana/__init__.py b/dbrepo-dashboard-service/tests/grafana/__init__.py index a59a6bb6f4..395db2336c 100644 --- a/dbrepo-dashboard-service/tests/grafana/__init__.py +++ b/dbrepo-dashboard-service/tests/grafana/__init__.py @@ -6,7 +6,7 @@ class GrafanaContainer(DockerContainer): MGMT_PORT = 3000 - def __init__(self, image: str = "bitnamilegacy/grafana:11", **kwargs) -> None: + def __init__(self, image: str = "grafana/grafana:11.6.16", **kwargs) -> None: super().__init__(image=image, **kwargs) self.with_exposed_ports(self.MGMT_PORT) diff --git a/docker-compose.yml b/docker-compose.yml index 1d1d3c1f18..f3b490c975 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -577,14 +577,14 @@ services: restart: "no" container_name: dbrepo-dashboard-ui hostname: dashboard-ui - image: docker.io/bitnamilegacy/grafana:11.4.0 + image: docker.io/grafana/grafana:11.6.16 volumes: - ./dbrepo-dashboard-ui/dashboards:/app/dashboards - - ./dbrepo-dashboard-ui/grafana.ini:/opt/bitnami/grafana/conf/grafana.ini - - ./dbrepo-dashboard-ui/provisioning/dashboards/provider.yaml:/opt/bitnami/grafana/conf/provisioning/dashboards/provider.yaml - - ./dbrepo-dashboard-ui/provisioning/datasources/infinity.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/infinity.yaml - - ./dbrepo-dashboard-ui/provisioning/datasources/prometheus.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/prometheus.yaml - - ./dbrepo-dashboard-ui/provisioning/datasources/opensearch.yaml:/opt/bitnami/grafana/conf/provisioning/datasources/opensearch.yaml + - ./dbrepo-dashboard-ui/grafana.ini:/etc/grafana/grafana.ini + - ./dbrepo-dashboard-ui/provisioning/dashboards/provider.yaml:/etc/grafana/provisioning/dashboards/provider.yaml + - ./dbrepo-dashboard-ui/provisioning/datasources/infinity.yaml:/etc/grafana/provisioning/datasources/infinity.yaml + - ./dbrepo-dashboard-ui/provisioning/datasources/prometheus.yaml:/etc/grafana/provisioning/datasources/prometheus.yaml + - ./dbrepo-dashboard-ui/provisioning/datasources/opensearch.yaml:/etc/grafana/provisioning/datasources/opensearch.yaml environment: BASE_URL: "${BASE_URL:-http://localhost}" DASHBOARD_DB_NAME: "${DASHBOARD_DB_NAME:-grafana}" @@ -593,7 +593,8 @@ services: GF_SERVER_ROOT_URL: http://dashboard-ui:3000/dashboard/ GF_SECURITY_ADMIN_USER: "${DASHBOARD_UI_USERNAME:-admin}" GF_SECURITY_ADMIN_PASSWORD: "${DASHBOARD_UI_PASSWORD:-admin}" - GF_INSTALL_PLUGINS: "yesoreyeram-infinity-datasource,grafana-opensearch-datasource" + GF_INSTALL_PLUGINS: "yesoreyeram-infinity-datasource 4.0.0,grafana-opensearch-datasource 2.34.4" + GF_PLUGINS_PREINSTALL_DISABLED: "true" READONLY_USERNAME: "${READONLY_USERNAME:-readonly}" READONLY_PASSWORD: "${READONLY_PASSWORD:-readonly}" healthcheck: From 7b75d84039578a59f91bc0ffbc59014cd50eb38a Mon Sep 17 00:00:00 2001 From: satriadhikara <84092642+satriadhikara@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:01:36 +0700 Subject: [PATCH 2/4] fix(helm): switch Dashboard UI to official Grafana chart and pin plugins The Helm chart had the same Grafana problem as Compose, plus one of its own: since dfb2f9704 dashboardui.plugins is empty, so Infinity and OpenSearch were never installed and the dbrepojson0/dbrepoopensearch0 datasources reported "Plugin not registered". The datasources secret that defines them was also not mounted. The Bitnami Grafana chart only ships bitnamilegacy images, which cannot run Infinity 4.x. Switch the dashboardui dependency to the grafana-community chart 8.15.0 with grafana/grafana:11.6.16, matching Compose. Pin Infinity 4.0.0 and OpenSearch 2.34.4, disable preinstalls, load env from dashboard-ui-secret (now with admin-user/admin-password), and mount dashboard-ui-datasources-secret as provisioned datasources. Extend the plugin regression script to cover the Helm values. Refs #106 --- .scripts/test-grafana-plugins.py | 11 ++- helm/dbrepo/Chart.lock | 8 +- helm/dbrepo/Chart.yaml | 4 +- helm/dbrepo/README.md | 11 ++- helm/dbrepo/charts/grafana-11.4.2.tgz | Bin 52795 -> 0 bytes helm/dbrepo/charts/grafana-8.15.0.tgz | Bin 0 -> 47835 bytes .../dbrepo/templates/dashboard-ui-secret.yaml | 2 + helm/dbrepo/values.schema.json | 50 ++---------- helm/dbrepo/values.yaml | 74 ++++++++++-------- 9 files changed, 71 insertions(+), 89 deletions(-) delete mode 100644 helm/dbrepo/charts/grafana-11.4.2.tgz create mode 100644 helm/dbrepo/charts/grafana-8.15.0.tgz diff --git a/.scripts/test-grafana-plugins.py b/.scripts/test-grafana-plugins.py index c37f337422..f9fd4f841a 100644 --- a/.scripts/test-grafana-plugins.py +++ b/.scripts/test-grafana-plugins.py @@ -4,6 +4,7 @@ import json import os from pathlib import Path +import re import subprocess @@ -34,7 +35,15 @@ def check(): for volume in service["volumes"]: if volume["source"].endswith((".ini", ".yaml")): assert volume["target"].startswith("/etc/grafana/"), (compose, volume["target"]) - print("PASS: all Compose files pin Grafana plugins and mount config for the official image") + # The chart's default values do not render on their own, so read the dashboardui block directly. + values = (ROOT / "helm/dbrepo/values.yaml").read_text() + dashboardui = re.search(r"^dashboardui:\n(.*?)^\S", values, re.M | re.S).group(1) + plugins = re.search(r"^ plugins:\n((?: - .*\n)+)", dashboardui, re.M).group(1) + for plugin in plugins.splitlines(): + assert len(plugin.split()) == 3, ("helm", plugin) + assert re.search(r'^ GF_PLUGINS_PREINSTALL_DISABLED: "true"$', dashboardui, re.M), "helm" + assert re.search(r"^ repository: grafana/grafana$", dashboardui, re.M), "helm" + print("PASS: all Compose files and the Helm chart pin Grafana plugins for the official image") if __name__ == "__main__": diff --git a/helm/dbrepo/Chart.lock b/helm/dbrepo/Chart.lock index 7f4f1d35ae..955ef2493c 100644 --- a/helm/dbrepo/Chart.lock +++ b/helm/dbrepo/Chart.lock @@ -21,8 +21,8 @@ dependencies: repository: file://../seaweedfs version: 4.8.7 - name: grafana - repository: oci://registry-1.docker.io/bitnamicharts - version: 11.4.2 + repository: https://grafana-community.github.io/helm-charts + version: 8.15.0 - name: prometheus repository: oci://registry-1.docker.io/bitnamicharts version: 1.3.22 @@ -32,5 +32,5 @@ dependencies: - name: valkey repository: oci://registry-1.docker.io/bitnamicharts version: 5.0.6 -digest: sha256:c242d9a70351f71a3adcbbbcdbadbed6bda3719a9442b255d703710411978f5b -generated: "2025-11-10T08:59:27.685993972+01:00" +digest: sha256:905ac142cf5633f36c623e16ece65858d0f5c59e769649c38a7247b1b7ead328 +generated: "2026-09-28T10:26:42.339268+07:00" diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml index e2d84b242b..88425e526b 100644 --- a/helm/dbrepo/Chart.yaml +++ b/helm/dbrepo/Chart.yaml @@ -73,8 +73,8 @@ dependencies: condition: storageservice.enabled - name: grafana alias: dashboardui - version: 11.4.2 - repository: oci://registry-1.docker.io/bitnamicharts + version: 8.15.0 + repository: https://grafana-community.github.io/helm-charts condition: dashboardui.enabled - name: prometheus alias: metricdb diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index 828a33e57b..34b7780d5d 100644 --- a/helm/dbrepo/README.md +++ b/helm/dbrepo/README.md @@ -458,12 +458,11 @@ mqtt.prefetch = 10 ### Dashboard UI -| Name | Description | Value | -| ---------------------------------- | ----------------------------------- | -------------------------- | -| `dashboardui.enabled` | Enable the Dashboard UI. | `true` | -| `dashboardui.metrics.enabled` | Enable the metrics sidecar. | `true` | -| `dashboardui.endpoint` | The endpoint for the microservices. | `http://dashboard-ui:3000` | -| `dashboardui.grafana.replicaCount` | The number of replicas. | `2` | +| Name | Description | Value | +| ---------------------- | ----------------------------------- | -------------------------- | +| `dashboardui.enabled` | Enable the Dashboard UI. | `true` | +| `dashboardui.endpoint` | The endpoint for the microservices. | `http://dashboard-ui:3000` | +| `dashboardui.replicas` | The number of replicas. | `2` | ### Metric Service diff --git a/helm/dbrepo/charts/grafana-11.4.2.tgz b/helm/dbrepo/charts/grafana-11.4.2.tgz deleted file mode 100644 index efc2fb1e6b01aa2fc4f73e268fa33ac4ee0b65d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52795 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 diff --git a/helm/dbrepo/charts/grafana-8.15.0.tgz b/helm/dbrepo/charts/grafana-8.15.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4774854b88a735dd504a4501005b350c8cf69931 GIT binary patch literal 47835 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 P00960gkB&m0DJ@hdvZf3 literal 0 HcmV?d00001 diff --git a/helm/dbrepo/templates/dashboard-ui-secret.yaml b/helm/dbrepo/templates/dashboard-ui-secret.yaml index a254a50d36..3b4312c522 100644 --- a/helm/dbrepo/templates/dashboard-ui-secret.yaml +++ b/helm/dbrepo/templates/dashboard-ui-secret.yaml @@ -7,6 +7,8 @@ metadata: name: dashboard-ui-secret namespace: {{ include "common.names.namespace" . | quote }} stringData: + admin-user: "{{ .Values.dashboardui.admin.user }}" + admin-password: "{{ .Values.dashboardui.admin.password }}" BASE_URL: "https://{{ .Values.hostname }}" GF_AUTH_ANONYMOUS_ENABLED: "true" GF_AUTH_ANONYMOUS_ORG_ROLE: "Viewer" diff --git a/helm/dbrepo/values.schema.json b/helm/dbrepo/values.schema.json index 76151a8d4d..49525f4ef3 100644 --- a/helm/dbrepo/values.schema.json +++ b/helm/dbrepo/values.schema.json @@ -782,21 +782,8 @@ }, "user": { "type": "string" - } - } - }, - "dashboardsProvider": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - } - } - }, - "datasources": { - "type": "object", - "properties": { - "secretName": { + }, + "existingSecret": { "type": "string" } } @@ -810,38 +797,14 @@ "fullnameOverride": { "type": "string" }, - "grafana": { - "type": "object", - "properties": { - "extraEnvVarsSecret": { - "type": "string" - }, - "replicaCount": { - "type": "integer" - }, - "updateStrategy": { - "type": "object", - "properties": { - "type": { - "type": "string" - } - } - } - } - }, "image": { "type": "object", "properties": { "repository": { "type": "string" - } - } - }, - "metrics": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" + }, + "tag": { + "type": "string" } } }, @@ -852,6 +815,9 @@ "type": "boolean" } } + }, + "replicas": { + "type": "integer" } } }, diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 0331436756..68869e47db 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -1172,41 +1172,47 @@ dashboardui: fullnameOverride: dashboard-ui image: ## @skip dashboardui.image.repository - repository: bitnamilegacy/grafana - ## @skip dashboardui.admin + repository: grafana/grafana + ## @skip dashboardui.image.tag + tag: 11.6.16 admin: - ## @param dashboardui.admin.existingSecret The existing secret with the Grafana admin credentials. - existingSecret: dashboard-service-secret - ## @param dashboardui.admin.userKey The key in the existing secret that contains the Grafana admin username. - userKey: admin-user - ## @param dashboardui.admin.passwordKey The key in the existing secret that contains the Grafana admin password. - passwordKey: admin-password - ## @skip dashboardui.smtp - smtp: - ## @param dashboardui.smtp.existingSecret The existing secret containing SMTP credentials. - existingSecret: dashboard-service-secret - ## @skip dashboardui.plugins - plugins: [] - ## @skip dashboardui.dashboardProviders - dashboardProviders: {} - ## @skip dashboardui.dashboardsConfigMaps - dashboardsConfigMaps: - - configMapName: dashboard-service-config - fileName: dashboards.json - ## @skip dashboardui.notifiers - notifiers: {} - ## @skip dashboardui.datasources - datasources: - datasources.yaml: - apiVersion: 1 - datasources: - - name: Prometheus - type: prometheus - url: http://metric-db-kube-prometheus-prometheus:9090 - access: proxy - isDefault: true - ## @param dashboardui.replicaCount The number of replicas. - replicaCount: 2 + ## @skip dashboardui.admin.user + user: "admin" + ## @skip dashboardui.admin.password + password: "admin" + ## @skip dashboardui.admin.existingSecret + existingSecret: dashboard-ui-secret + ## @param dashboardui.endpoint The endpoint for the microservices. + endpoint: http://dashboard-ui:3000 + service: + ## @skip dashboardui.service.port + port: 3000 + ## @skip dashboardui.plugins Plugin versions must be compatible with the Grafana image. + plugins: + - yesoreyeram-infinity-datasource 4.0.0 + - grafana-opensearch-datasource 2.34.4 + env: + ## @skip dashboardui.env.GF_PLUGINS_PREINSTALL_DISABLED Do not install unpinned default plugins. + GF_PLUGINS_PREINSTALL_DISABLED: "true" + ## @skip dashboardui.envFromSecret + envFromSecret: dashboard-ui-secret + ## @skip dashboardui.extraSecretMounts + extraSecretMounts: + - name: datasources + mountPath: /etc/grafana/provisioning/datasources + secretName: dashboard-ui-datasources-secret + readOnly: true + deploymentStrategy: + ## @skip dashboardui.deploymentStrategy.type + type: Recreate + ## @param dashboardui.replicas The number of replicas. + replicas: 2 + persistence: + ## @skip dashboardui.persistence.enabled + enabled: false + testFramework: + ## @skip dashboardui.testFramework.enabled + enabled: false ## @section Metric Database From 110cb603e7dda564bb77b3273d7743360aeffb3e Mon Sep 17 00:00:00 2001 From: satriadhikara <84092642+satriadhikara@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:37:40 +0700 Subject: [PATCH 3/4] ci: run Grafana plugin pin check in lint-compose --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d561adbb4a..dddac94345 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,6 +52,8 @@ jobs: IGNORE_VOLUMES=1 IGNORE_IMAGE=1 bash .scripts/check-service.sh dbrepo-storage-service-init IGNORE_IMAGE=1 bash .scripts/check-service.sh dbrepo-dashboard-service-init IGNORE_IMAGE=1 bash .scripts/check-service.sh dbrepo-ui + - name: Check Grafana plugin pins + run: python3 .scripts/test-grafana-plugins.py java-services: runs-on: ubuntu-latest From 5ffa279052fc682f9c4b3b417eb0a9b2a93d1306 Mon Sep 17 00:00:00 2001 From: satriadhikara <84092642+satriadhikara@users.noreply.github.com> Date: Sun, 11 Oct 2026 19:09:48 +0700 Subject: [PATCH 4/4] fix(helm): upgrade Dashboard UI from the Bitnami chart without manual steps The Bitnami Grafana Deployment selects pods by app.kubernetes.io/component, which the grafana-community chart does not set, and Deployment selectors are immutable, so helm upgrade failed. Run Grafana as a StatefulSet instead: Helm then creates the StatefulSet and deletes the old Deployment itself, and a rollback to the Bitnami release works the same way back. DBRepo 1.14.0 and 1.14.1 dropped the dashboard database settings, so a Bitnami install that got Grafana running there kept a SQLite database on the dashboard-ui claim, which Helm deleted on upgrade. Keep that claim with helm.sh/resource-policy: keep, rendering only the fields the Bitnami chart rendered so neither upgrades nor rollbacks touch its immutable spec. Disable the chart's RBAC, which is only needed for sidecars and created cluster-wide roles, restore the PodDisruptionBudget the Bitnami chart had (maxUnavailable 1), and make the plugin check assert the exact image tag and plugin versions. --- .scripts/test-grafana-plugins.py | 14 +++++---- .../templates/dashboard-ui-legacy-pvc.yaml | 29 +++++++++++++++++++ helm/dbrepo/values.yaml | 15 +++++++--- 3 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 helm/dbrepo/templates/dashboard-ui-legacy-pvc.yaml diff --git a/.scripts/test-grafana-plugins.py b/.scripts/test-grafana-plugins.py index f9fd4f841a..1df97077dc 100644 --- a/.scripts/test-grafana-plugins.py +++ b/.scripts/test-grafana-plugins.py @@ -16,6 +16,9 @@ ".docker/docker-compose.yml", ".live/config/includes.chroot_after_packages/etc/skel/docker-compose.yml", ) +# Plugin versions must be compatible with the Grafana image; update the image and both plugins together. +IMAGE = "grafana/grafana:11.6.16" +PLUGINS = ["yesoreyeram-infinity-datasource 4.0.0", "grafana-opensearch-datasource 2.34.4"] def check(): @@ -27,11 +30,10 @@ def check(): service = json.loads(result.stdout)["services"]["dbrepo-dashboard-ui"] environment = service["environment"] # An unpinned plugin installs the newest release, which can require a newer Grafana. - for plugin in environment["GF_INSTALL_PLUGINS"].split(","): - assert len(plugin.split()) == 2, (compose, plugin) + assert environment["GF_INSTALL_PLUGINS"].split(",") == PLUGINS, (compose, environment["GF_INSTALL_PLUGINS"]) # Grafana otherwise installs unpinned default apps in the background. assert environment["GF_PLUGINS_PREINSTALL_DISABLED"] == "true", compose - assert service["image"].startswith("docker.io/grafana/grafana:"), (compose, service["image"]) + assert service["image"] == f"docker.io/{IMAGE}", (compose, service["image"]) for volume in service["volumes"]: if volume["source"].endswith((".ini", ".yaml")): assert volume["target"].startswith("/etc/grafana/"), (compose, volume["target"]) @@ -39,10 +41,10 @@ def check(): values = (ROOT / "helm/dbrepo/values.yaml").read_text() dashboardui = re.search(r"^dashboardui:\n(.*?)^\S", values, re.M | re.S).group(1) plugins = re.search(r"^ plugins:\n((?: - .*\n)+)", dashboardui, re.M).group(1) - for plugin in plugins.splitlines(): - assert len(plugin.split()) == 3, ("helm", plugin) + assert [line.strip().removeprefix("- ") for line in plugins.splitlines()] == PLUGINS, ("helm", plugins) assert re.search(r'^ GF_PLUGINS_PREINSTALL_DISABLED: "true"$', dashboardui, re.M), "helm" - assert re.search(r"^ repository: grafana/grafana$", dashboardui, re.M), "helm" + image = [re.search(rf"^ {key}: (\S+)$", dashboardui, re.M)[1] for key in ("repository", "tag")] + assert ":".join(image) == IMAGE, ("helm", image) print("PASS: all Compose files and the Helm chart pin Grafana plugins for the official image") diff --git a/helm/dbrepo/templates/dashboard-ui-legacy-pvc.yaml b/helm/dbrepo/templates/dashboard-ui-legacy-pvc.yaml new file mode 100644 index 0000000000..8cce9b0515 --- /dev/null +++ b/helm/dbrepo/templates/dashboard-ui-legacy-pvc.yaml @@ -0,0 +1,29 @@ +{{- if .Values.dashboardui.enabled }} +{{- /* +The Bitnami Grafana chart used before 1.14.2 kept a SQLite database on this claim. Grafana now uses the dashboard +database, so Helm would delete the claim on upgrade. Keep it instead, rendering only the fields the Bitnami chart +rendered, so that neither upgrades nor rollbacks touch its immutable spec. +lookup returns nothing in helm template, helm diff, plain --dry-run and Argo CD, so their output shows the claim as deleted. +*/}} +{{- with lookup "v1" "PersistentVolumeClaim" (include "common.names.namespace" $) "dashboard-ui" }} +{{- if eq (index (.metadata.annotations | default dict) "meta.helm.sh/release-name" | default "") $.Release.Name }} +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: dashboard-ui + namespace: {{ .metadata.namespace | quote }} + annotations: + helm.sh/resource-policy: keep +spec: + accessModes: {{- toYaml .spec.accessModes | nindent 4 }} + resources: + requests: + storage: {{ .spec.resources.requests.storage | quote }} + {{- /* The same values the Bitnami chart read; copying the live class unconditionally breaks rollbacks. */}} + {{- if or $.Values.global.storageClass $.Values.dashboardui.persistence.storageClass $.Values.global.defaultStorageClass }} + storageClassName: {{ .spec.storageClassName | quote }} + {{- end }} +{{- end }} +{{- end }} +{{- end }} diff --git a/helm/dbrepo/values.yaml b/helm/dbrepo/values.yaml index 68869e47db..fdc6d354d0 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -1202,13 +1202,20 @@ dashboardui: mountPath: /etc/grafana/provisioning/datasources secretName: dashboard-ui-datasources-secret readOnly: true - deploymentStrategy: - ## @skip dashboardui.deploymentStrategy.type - type: Recreate + ## @skip dashboardui.useStatefulSet The Deployment of the Bitnami chart used before 1.14.2 has a selector that cannot be changed in place, so Helm replaces it with a StatefulSet on upgrade. + useStatefulSet: true + ## @skip dashboardui.headlessService + headlessService: true + rbac: + ## @skip dashboardui.rbac.create No sidecars are used, so Grafana needs no cluster-wide permissions. + create: false ## @param dashboardui.replicas The number of replicas. replicas: 2 + podDisruptionBudget: + ## @skip dashboardui.podDisruptionBudget.maxUnavailable + maxUnavailable: 1 persistence: - ## @skip dashboardui.persistence.enabled + ## @skip dashboardui.persistence.enabled Grafana stores its data in the dashboard database. enabled: false testFramework: ## @skip dashboardui.testFramework.enabled