Repository navigation
v0.2.0-beta.4
Pre-release
Pre-release
·
4816 commits
to master
since this release
Added
- operator: fleet metric
gameplane_gameservers{phase=…}exported on the
operator's/metricsendpoint — one gauge per GameServer lifecycle phase,
computed from the controller cache at scrape time (so it never drifts from
reconcile state). The bundled Grafana dashboard gains "GameServers
running/failed" stats and a stacked "GameServers by phase" graph, and
prometheusRules.enabledgains aGameplaneGameServerFailedalert. Until
now the dashboard and alerts plotted only controller-runtime internals; this
is the first domain metric. - operator: companion fleet metric
gameplane_backups{phase=…}(one gauge
per Backup phase), with a "Backups failed" stat + stacked "Backups by phase"
graph on the dashboard and aGameplaneBackupFailedalert — a silently failed
backup is a data-loss risk, so it's worth paging on. - ci: the published component images (
:edgeon everymainpush and the
versioned images on av*release) are now keyed-cosign-signed by digest
(offline, no Rekor), matching the official module bundles. Verify with
cosign verify --key cosign.pub ghcr.io/valgulnecron/gameplane/<component>.
Gated onCOSIGN_PRIVATE_KEY, so publishing still works before the key is set.
Signing and publishing run only onmain/tags, never on PRs. - api: server-side audit-log export —
GET /admin/audit/export?format=csv|json
(admin-only) streams the entire audit trail, optionally bounded by RFC3339
since/until. Unlike the dashboard's client-side CSV (only the loaded page),
this returns the full log in one download for compliance/archival, streamed
row-by-row so a large table isn't buffered in memory. - api: outbound audit-log webhook push sink — set
api.audit.webhook.url
and the API POSTs each audit event as JSON to that endpoint (a log aggregator's
push API, a SIEM, or your own receiver), alongside the database. It mirrors,
never gates: events always persist, and a slow or unreachable endpoint never
blocks or fails a request (bounded async buffer, drop-and-count on overflow,
surfaced atgameplane_audit_webhook_events_total{result=sent|failed|dropped}
on/metrics). An optionalAuthorizationheader is Secret-sourced
(api.audit.webhook.authSecretRef), never a flag. - audit-syslog-bridge: a new, generic HTTP-JSON → syslog relay image that
sits behind the audit webhook sink, so audit events can be forwarded to a
syslog/SIEM collector (RFC 5424 over TCP, TCP+TLS, or UDP). Deploy the bundled
relay withapi.audit.webhook.syslogBridge.enabled=true+
…syslogBridge.syslog.addr, and the chart auto-points the webhook at it (off
by default). The bridge forwards the request body verbatim, so it works for
any JSON webhook source, not just Gameplane.
Changed
- chart: the bundled
defaultModuleSourcenow defaults to a git source
that indexes the publicgameplane-modulerepository, so the official games
appear in the Modules page out of the box — no OCI registry to publish first.
SetdefaultModuleSource.type: ocito pull (optionally cosign-signed) bundles
from a registry instead. Breaking values change: the former top-level
url/insecure/modules/pullSecretName/verifykeys moved under
defaultModuleSource.oci.*. - chart: the official module-signing public key (ed25519) now ships in
defaultModuleSource.oci.verify.cosignPublicKey, so verifying official bundles
is justtype: oci+oci.verify.enabled: true— no key to paste. Still off
by default.
Fixed
- operator: the Servers list "Node" column was always blank — nothing ever
set thegameplane.local/nodeannotation the dashboard reads. The GameServer
reconciler now keeps it in sync with the node the game pod is scheduled on
(and clears it when the server is stopped), so the column shows real placement.