Skip to content

Sync observability stack to Coroot (+ audit-log-forwarder) like the reference platform #65

Open
7 of 9 issues completed

Description

@devantler

🤖 Generated by the Daily AI Engineer

Problem. The template still scaffolds the retired observability set (kube-prometheus-stack, Loki, Grafana Alloy, OpenCost) while the reference platform has fully migrated to Coroot plus the audit-log-forwarder. New platforms instantiated today start on a stack the suite no longer develops or dogfoods — the template's single largest drift.

Proposed direction. Replace the Prometheus/Loki/Alloy/OpenCost bases with the platform's Coroot + audit-log-forwarder manifests (genericized: no org-specific endpoints/secrets), update the clusters' kustomizations and any dashboards/alerts wiring, and drop the retired bases. Prove the bootstrap flow still converges on both providers.

Rough size. L

Part of #24

Activity

  1. moved this to 📥 Backlog in 🌊 Project Boardon Jul 18, 2026
  2. devantler commented on Jul 18, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Daily AI Engineer

    Progress: #82 merged as b7d144ad1314ec9bec360f1dc7580d7729509c4e,
    closing child #81. The explicit Docker/Hetzner Coroot fixtures now model complete
    OpenCost retirement across workload objects, auth-proxy routing, network policy,
    ReferenceGrant, and security exemptions while every real provider render remains
    byte-for-byte unchanged by default.

    The direction changed after exact-head review prompted read-only live validation:
    the reference Platform's OpenCost returns non-zero requested-resource costs but
    zero CPU/RAM usage for all 34 namespace allocations because Coroot Prometheus
    lacks the standard node/cAdvisor usage series. That live defect is tracked in
    devantler-tech/platform#2689; it must not be copied into this template.

    The child passed 86-kustomization / 258-file validation for both local and prod,
    negative controls for future references and array drift, exact-head CI, Codex
    review, and post-merge TODO/CodeQL workflows. No cluster was mutated. Parent #65
    remains open for real-provider activation and the remaining rollout slices.

  3. devantler commented on Jul 18, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Daily AI Engineer

    Delivered the first production-profile deduplication slice in #91 (closing #90): the Hetzner Coroot controller payload no longer renders the legacy Alloy audit collector, while default profiles, Docker Coroot, and the main Alloy pod-log shipper remain unchanged. The replacement audit forwarder is now guarded end to end—file receiver → logs pipeline → Coroot OTLP endpoint with the expected API-key header—and three negative controls cover disconnection, endpoint drift, and auth-header drift. All CI and exact-head Codex review gates passed before merge.

  4. devantler commented on Jul 20, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Daily AI Engineer (Codex instance)

    Delivery child #96 is complete via #97 (8f53f316466684619f748d1d67b10d57c8f1f09c). Both selectable Coroot profiles now retire Loki, the pod-log and audit Alloy collectors, their dead Grafana datasource, and the now-unconsumed Grafana chart source, while default Docker and Hetzner controller renders remain byte-for-byte unchanged.

    The focused gate covers both providers and rejected four ablations: either provider dropping the component, default-stack drift, and retention of the dead source. Both KSail validations covered 97 kustomizations / 258 files; exact-head CI and Codex re-review were green after its Grafana-source finding was fixed. Parent #65 remains open for the separate kube-prometheus-stack metrics/alerting migration.

  5. devantler commented on Nov 4, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer (interactive Claude Code session)

    Status: the outcome is not met yet, so this stays open. All seven earlier sub-issues are closed, but they built Coroot as an opt-in profile (clusters/local-coroot, clusters/prod-coroot). On main at 98ff4b1, the default cluster paths still render Loki, Alloy, OpenCost and the full kube-prometheus-stack. Even the Coroot profile still runs kube-prometheus-stack, because the platform-critical PrometheusRule, the Alertmanager Watchdog heartbeat and the ServiceMonitor CRDs depend on it. The reference platform runs none of these.

    I split the remaining work into two sub-issues, in order:

    1. feat(observability): make Coroot the default and delete the Loki, Alloy and OpenCost bases #386: make Coroot the default path, delete the Loki, Alloy and OpenCost bases, and keep the *-coroot paths as aliases for instances that opted in.
    2. feat(observability): retire kube-prometheus-stack like the reference platform #387: retire kube-prometheus-stack the way the platform did. HelmRelease failures move to the Flux Alert, the Watchdog gives way to cluster-heartbeat, and the chart ServiceMonitors and the monitoring namespace allowances go.

    The two can't be merged into one small change. The 1,400-line validate-observability-option.sh, the heartbeat and SSO tests, the bootstrap workflow and the alerting docs all encode the current opt-in boundary, so each step needs its own reviewed PR.

    🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Effort

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions