Repository navigation
Closed
Labels
area: platformPlatform, deployment, cluster, or runtime concern.Platform, deployment, cluster, or runtime concern.priority: P1High; important and should be handled in the current iteration.High; important and should be handled in the current iteration.status: blockedCannot move forward until an external dependency is resolved.Cannot move forward until an external dependency is resolved.type: choreMaintenance work without intended behavior change.Maintenance work without intended behavior change.
Description
Parent
Rewrite the spec and the compiler in place, release 1.0.0, and hand over every Project
What to build
The observability Project leaves fleet-infra and is delivered from the estate repository, in the order #381 sets.
The estate's observability file declares otel-collector and prometheus. Add prometheus-operator, kube-state-metrics, grafana-operator, loki, tempo, pyroscope, gatus, alloy, alertmanager and grafana from the worked example. The namespace moves from observability to observability-system, where the stores start fresh; the old claims stay until their retention runs out (decided 2026-10-27). The otel-collector serving statement leaves the handover ledger.
The estate-side changes are recorded in the estate repository's HANDOVER.md.
Acceptance criteria
- The render's diff against the Project's hand-written objects in fleet-infra is clean, or each difference is explained.
- The Project's Reconcile Units report Ready.
- A consumer-visible value checks out: Grafana's dashboards show live data, and an alert reaches Discord.
- One change flips the handover ledger entry and deletes the hand-written objects, the descriptor and the drift-check entry.
Blocked by
Metadata
Metadata
Assignees
Labels
area: platformPlatform, deployment, cluster, or runtime concern.Platform, deployment, cluster, or runtime concern.priority: P1High; important and should be handled in the current iteration.High; important and should be handled in the current iteration.status: blockedCannot move forward until an external dependency is resolved.Cannot move forward until an external dependency is resolved.type: choreMaintenance work without intended behavior change.Maintenance work without intended behavior change.
Activity
ExtraToast commentedon Oct 27, 2026
Resume here
ExtraToast commentedon Oct 29, 2026
#653 has landed (#689): grafana is now in the observability example. The estate's observability file copies
spec/v1/examples/observability/as it stands on main.What changes for this handover:
observability/env/grafana/base.env. The Platform document names the monitoring Grafanaobservability/grafana.secret/data/observability-system/grafana/client. The provider writes it there, and nothing writes the oldidentity-systempath any more.dependsOn: apps-edge(pins/rendered/projects/observability/source.yaml). It reconciles only after edge's unit.ExtraToast commentedon Oct 29, 2026
#655 has landed (#699): the metrics stack scrapes Flux, and it can now reach its scrape targets.
bootstrap.flux.metrics: {port: 8080, path: /metrics}. observability then renders theflux-controllersPodMonitor in its own namespace, replacing fleet-infra'sobservability/flux-monitoring.jobbecomes each controller's name (for examplekustomize-controller) instead offlux-system/flux-controllers. Any live alert that filters on that job needs adjusting.ExtraToast commentedon Oct 29, 2026
#380 is closed: delivery,
_canaryand_estateare on the 1.0 contract (evidence in #380 (comment)).ExtraToast commentedon Oct 29, 2026
Handover prepared: drafts only, nothing merged. The render-against-live diff is in JorisJonkers-dev/estate#260 and its runbook,
docs/runbooks/observability-handover.md.Merge order
observability,gatus-data,observability-backupsand the grafana, gatus and faro routes get the prune mark.helm.sh/resource-policy: keep.Retain.monitoring.coreos.com/v1alpha1,grafana.integreatly.org/v1beta1) andcluster.shapplies them. Before the window.prune: false. Window step 1.observability-backupsand dcgm-exporter stay underapps-observability-namespace, and the routes move unchanged toapps-edge. Window step 2.observability-system, and the old VSO copies go. After the flip, once Ready.Blockers
PrometheusorAlertmanagerfor the operator. The estate's Prometheus would scrape only itself, evaluate no rule and notify nothing. Blocks.Grafanainstance is rendered for the operator, and no data sources are derived. The estate's Grafana gets no dashboards. Blocks.PodOOMKilled,PersistentVolumeFillingUpandKubeletDowngo quiet. Degrades.otel-collectorandalloyareinterruptedin the estate file to get around it.metrics-stack, so feat(model): a Vault policy job per Project, in its own unit #564 orphans node's agent too.Until #722 and #723 are released, the runbook describes a bridge: the old Prometheus, Alertmanager and Grafana keep running under the estate path's operators, and the old operators and the old AlertmanagerConfig are deleted by hand. Without the bridge, the flip is a total alert gap.
Decisions for the maintainer
observability-backupsis not observability's, and stays untouched.feat(bootstrap): pin the monitoring stack's CRDs in the bootstrap set (…
feat: hand the observability Project over to the estate path (#260)
ExtraToast commentedon Nov 1, 2026
Observability is on the estate path (estate 0.36.4) and the old stack is deleted.
observability, thenode-metricsandgpu-metricsmonitors (until Scrape the metrics Node Agents, and let node-metrics read the hosts' textfile directory #731), the old claims (each when the runbook's table says) and the old Vault roles.Follow-ups, outside this handover:
release-gate's scrape answers 403; auth-api's error-budget rule counts authorization denials as errors; kube-state-metrics'namespacelabel is overwritten by the scrape's own.