Skip to content

Make Grafana a standalone application - #850

Open
methylDragon wants to merge 1 commit into
mainfrom
ch3/standalone-grafana
Open

Make Grafana a standalone application#850
methylDragon wants to merge 1 commit into
mainfrom
ch3/standalone-grafana

Conversation

@methylDragon

@methylDragon methylDragon commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Extract Grafana from the Prometheus application, enabling it to be deployed and managed independently.

!!! Merge AFTER (context):

Why

So Grafana becomes a cross cutting concern, used by Prometheus and (soon to be) VictoriaMetrics

Previously, Grafana was deployed as a component of the Prometheus operator chart, which tightly coupled its lifecycle and configuration to Prometheus. This change decouples Grafana, allowing for:

  • Independent Management: Grafana can now be configured, deployed,
    and updated separately from Prometheus.
  • Clearer Ownership: Grafana resources are now owned by its own
    dedicated application definition.
  • Reduced Conflicts: Explicitly disables Grafana within the
    Prometheus chart and ensures CRD ownership is handled correctly,
    preventing resource conflicts.

The code changes include:

  • Adding a new grafana application definition under src/app_charts.
  • Moving Grafana's HTTPRoute and Ingress configurations to the new app.
  • Configuring the standalone Grafana to use the kube-prometheus-stack
    Helm chart, but with only Grafana components enabled.
  • Disabling Grafana within the prometheus application's chart.

@methylDragon
methylDragon force-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3 Compare August 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonic August 7, 2026 08:57
@methylDragon methylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonic ensonic left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that! We should have probably done that from the start. We're you able to test deploy this on a personal-dev project?

@ensonic
ensonic requested a review from awhdesmond August 7, 2026 10:19
@ensonic

ensonic commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
Contributor Author

I like that! We should have probably done that from the start. We're you able to test deploy this on a personal-dev project?

See test process in https://github.com/intrinsic-ai/insrc/pull/51993

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@awhdesmond awhdesmond left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small nit: to remove

- description: Grafana Dashboard
      url: "https://{{ .Values.domain }}/grafana/"

in prometheus app.yaml

@methylDragon
methylDragon force-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121 Compare August 12, 2026 20:12
Heet852003 added a commit to Heet852003/core that referenced this pull request Aug 12, 2026
Dropped our own standalone grafana app, using the real implementation
from googlecloudrobotics#850 instead - kube-prometheus-stack with everything disabled
except grafana, which correctly bundles the default k8s dashboards we
were missing with a standalone injection.

Also picked up the more complete prometheus operator mechanism -
native containers/volumes/volumeMounts/serviceAccount.annotations
injection (same pattern we built for vmagent), and remoteWrite moved
from a flat string to a real structured list.

Removed two leftover prometheus/cloud/grafana files that had moved to
grafana/cloud but still referenced deleted values - caught via a real
build failure. Fixed a stray grafana link in prometheus app.yaml too.

Full build across every app passes clean. externalLabels/nodeSelector/
tolerations logic all still intact, nothing of ours lost.
Heet852003 added a commit to Heet852003/core that referenced this pull request Aug 12, 2026
New standalone victoriametrics-robotmetrics app (robot-metrics cluster:
vminsert/vmselect/vmstorage/vmalert, robot vmagent selector) and
victoriametrics-cloudmetrics app (cloud-metrics cluster). Both fully
configurable - per-component replica count, consolidated upstream
sidecar/remote-write config as real structured YAML, remote_write_labels
and GCP service account annotation support for Cloud Ops' Mimir
integration. Enable/disable per Brandon's review - controlled via
AppRollout robots:/cloud: block presence, not explicit flags.

Built on top of the standalone Grafana app (googlecloudrobotics#850) rather than a
separate implementation - kube-prometheus-stack based, correctly
bundles default Kubernetes dashboards a standalone injection would
miss.

Verified via render at every step throughout development; live
deployment on xfa-awesome-alpha - both VictoriaMetrics clusters
Ready/Settled, real data confirmed queryable end to end, zero
regression to existing Prometheus setup.

--no-verify: repo-wide embedmd hook flagging an unrelated pre-existing
markdown file, not one of the 43 files in this commit - confirmed via
git diff --cached --name-only.
Heet852003 added a commit to Heet852003/core that referenced this pull request Aug 13, 2026
Two new apps - victoriametrics-robotmetrics (robot-metrics cluster,
vminsert/vmselect/vmstorage/vmalert plus the robot vmagent) and
victoriametrics-cloudmetrics (cloud-metrics cluster). Both configurable
- per-component replica count, upstream sidecar/remote-write config as
real structured YAML, service account annotation and dedup labels for
Cloud Ops' Mimir integration. Enable/disable controlled via AppRollout
block presence, not explicit flags, per review.

Built on top of the standalone Grafana app (googlecloudrobotics#850) instead of a separate
implementation. Also swapped kube-state-metrics and node-exporter from
standalone vendored charts to kube-prometheus-stack, same reasoning -
avoids missing default config a standalone injection risks. Found a
real gap doing this: our old node-exporter mirror was missing a
cardinality-drop rule Prometheus actually applies, fixed as part of
the swap.

Verified via render throughout. Live on xfa-awesome-alpha, both
clusters healthy, zero regression to existing Prometheus.
@methylDragon
methylDragon force-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529 Compare August 14, 2026 00:53
Heet852003 added a commit to Heet852003/core that referenced this pull request Aug 14, 2026
Two new apps - victoriametrics-robotmetrics (robot-metrics cluster,
vminsert/vmselect/vmstorage/vmalert plus the robot vmagent) and
victoriametrics-cloudmetrics (cloud-metrics cluster). Both configurable
- per-component replica count, upstream sidecar/remote-write config as
real structured YAML, service account annotation and dedup labels for
Cloud Ops' Mimir integration. Enable/disable controlled via AppRollout
block presence, not explicit flags, per review.

Built on top of the standalone Grafana app (googlecloudrobotics#850) instead of a separate
implementation. Also swapped kube-state-metrics and node-exporter from
standalone vendored charts to kube-prometheus-stack, same reasoning -
avoids missing default config a standalone injection risks.

Verified via render throughout. Live and verified end to end on
xfa-awesome-alpha, both clusters healthy, real robot data confirmed
flowing through the full write path.

--no-verify: local pre-commit hook failed before commit because
buildifier is not on PATH and embedmd flagged a repo-wide markdown file;
the full app manifest build below is the validation for this rerebase.
@methylDragon
methylDragon force-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0be Compare August 19, 2026 02:16
Extract Grafana from the Prometheus application, enabling it to be
deployed and managed independently.

#### Why

Previously, Grafana was deployed as a component of the Prometheus
operator chart, which tightly coupled its lifecycle and configuration
to Prometheus. This change decouples Grafana, allowing for:

-   **Independent Management:** Grafana can now be configured, deployed,
    and updated separately from Prometheus.
-   **Clearer Ownership:** Grafana resources are now owned by its own
    dedicated application definition.
-   **Reduced Conflicts:** Explicitly disables Grafana within the
    Prometheus chart and ensures CRD ownership is handled correctly,
    preventing resource conflicts.

#### The code changes include:

-   Adding a new `grafana` application definition under `src/app_charts`.
-   Moving Grafana's HTTPRoute and Ingress configurations to the new app.
-   Configuring the standalone Grafana to use the `kube-prometheus-stack`
    Helm chart, but with only Grafana components enabled.
-   Disabling Grafana within the `prometheus` application's chart.

Signed-off-by: methylDragon <methylDragon@intrinsic.ai>
@methylDragon
methylDragon force-pushed the ch3/standalone-grafana branch from 288f0be to adff071 Compare August 19, 2026 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants