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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Make Grafana a standalone application by methylDragon · Pull Request #850 · googlecloudrobotics/core · GitHub
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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Grafana a standalone application by methylDragon · Pull Request #850 · googlecloudrobotics/core · GitHub
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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Grafana a standalone application by methylDragon · Pull Request #850 · googlecloudrobotics/core · GitHub
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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Make Grafana a standalone application by methylDragon · Pull Request #850 · googlecloudrobotics/core · GitHub
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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Grafana a standalone application by methylDragon · Pull Request #850 · googlecloudrobotics/core · GitHub
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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Make Grafana a standalone application by methylDragon · Pull Request #850 · googlecloudrobotics/core · GitHub
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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Make Grafana a standalone application by methylDragon · Pull Request #850 · googlecloudrobotics/core · GitHub
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

@methylDragonmethylDragon 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b1d6d81 to 4cdbad3CompareAugust 7, 2026 08:54
@methylDragon
methylDragon requested review from csieber, ensonic and vivekbagade and removed request for ensonicAugust 7, 2026 08:57
@methylDragonmethylDragon added the enhancement New feature or request label Aug 7, 2026

@ensonicensonic 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 awhdesmondAugust 7, 2026 10:19
@ensonic

Copy link
Copy Markdown
Contributor

@awhdesmond just FYI

@methylDragon

Copy link
Copy Markdown
ContributorAuthor

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
ContributorAuthor

Choose a reason for hiding this comment

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

@awhdesmondawhdesmond 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 111caa8 to 5e2c121CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 5e2c121 to 66ae529CompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch 2 times, most recently from b85564d to 288f0beCompareAugust 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
methylDragonforce-pushed the ch3/standalone-grafana branch from 288f0be to adff071CompareAugust 19, 2026 21:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@methylDragon@ensonic@awhdesmond