swarm-otel: declare forgejo's published scrape target on every host
The forgejo entry in `swarm.otel.publishedScrapeTargets` was declared under `deploy.forgejo.enable`, so it existed only in the forge host's evaluation. Its two readers evaluate elsewhere: the collector renders its prometheus jobs from its own host's list, and authelia registers the collector client's audience from its own host's list. With the forge, the collector and authelia on different hosts, the collector had no forgejo job and authelia would have refused its token. Declare the entry unconditionally in swarm-otel-service.nix, keyed on `swarm.forge.domain`, which every host evaluates identically. A swarm with no forge scrapes a name that answers nothing and shows a failing job, the same trade the collector and grafana OIDC clients already make. Single-host render is unchanged: the entry already existed there. Part of #5205
This commit is contained in:
parent
4a3f21fc2b
commit
6c1ab87f68
4 changed files with 82 additions and 23 deletions
|
|
@ -86,14 +86,15 @@ out of the store on every host that runs the collector and holds a store
|
|||
identity, whether authelia is a network away or in the container next door.
|
||||
The same call `glue-grafana-oidc-client.nix` makes for Grafana's registers
|
||||
the client it reads for unconditionally: authelia refuses a
|
||||
bearer-authz client with no audience, and the push audiences supply one even
|
||||
for a collector with nothing published to scrape.
|
||||
bearer-authz client with no audience, and every host publishes at least
|
||||
forgejo's `/metrics` as a scrape target, so the audience is never empty.
|
||||
|
||||
⚠️ **A collector with no store identity isn't refused.** Unlike Grafana,
|
||||
where an absent OIDC block is a container with no way in at all, a collector
|
||||
with nothing to authenticate with still receives every hive's telemetry —
|
||||
only its own pushes to the stores go out unauthenticated and get refused
|
||||
there. `swarm-bao-otel-oidc.service` therefore doesn't render at all without
|
||||
its pushes to the stores go out unauthenticated and get refused there, and its
|
||||
scrape jobs for the published targets read a credential file nothing
|
||||
loads, so they can't get a token. `swarm-bao-otel-oidc.service` therefore doesn't render at all without
|
||||
`deploy.bao.otelOidcClientCertFile` / `otelOidcClientKeyFile`, the same choice
|
||||
`glue-queue-agent-credential.nix` makes for its own reader, rather than the hard assertion `swarm-grafana.nix`
|
||||
uses for its non-optional one. The operator can still deliver the secret by
|
||||
|
|
|
|||
Loading…
Reference in a new issue