42 Commits
Author SHA1 Message Date
MarioGLealP b2327a833e Merge pull request 'fix(temporal): re-read Authentik's signing keys every minute' (#20) from marioglealp/temporal-jwks-refresh into main
Reviewed-on: #20
2026-10-31 10:37:50 +00:00
MarioGLealPandClaude Opus 5.5 2ee188b3d1 fix(temporal): frontend waits for Authentik's keys instead of polling
Replaces the 1m refresh (one GET a minute forever, to cover a boot-time
race). Temporal fetches the JWKS once at start and only retries on the
refreshInterval tick; an unknown kid triggers nothing. So an init
container makes the frontend wait until the JWKS answers with a key,
backing off 2-4-8-...-60 s, and refreshInterval goes back to 1h for key
rotations. The chart gives every server service the init containers;
for anything but the frontend it exits at once.

Checked: rendered on all five server Deployments; frontend Deployment
and its pod template pass a server-side dry run (Kyverno, restricted
PSS); the script exits 0 for frontend (keys up) and history (no-op) and
backs off as written against an unreachable URL.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcT3JpVno881Z46fei
2026-10-31 10:36:57 +00:00
MarioGLealPandClaude Opus 5.5 4fd3e64588 fix(temporal): re-read Authentik's signing keys every minute
The frontend fetches the JWKS once at start and then every
refreshInterval, and a failed fetch waits for the next tick too. After
the 2026-10-31 boot it started before Caddy listened (connection
refused) and refused every token for the following hour: Shikigami sat
in CrashLoopBackOff. 1m bounds that to a minute for one small GET.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcT3JpVno881Z46fei
2026-10-31 10:20:19 +00:00
MarioGLealP 53a2369cab Merge pull request 'feat(projects): Shikigami's fence' (#19) from marioglealp/shikigami into main
Reviewed-on: #19
2026-10-30 22:24:13 +00:00
MarioGLealPandClaude Opus 5.5 33568e1222 feat(projects): Shikigami's fence
Its repo plus the Nüwa and Sindri charts, into namespaces shikigami and shikigami-build, with the shared app kinds.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 22:20:41 +00:00
MarioGLealP 9c45e04c98 Merge pull request 'feat(projects): apps may deploy a KEDA ScaledObject (D75)' (#18) from marioglealp/app-kinds-scaledobject into main
Reviewed-on: #18
2026-10-30 21:36:17 +00:00
MarioGLealPandClaude Opus 5.5 b74072aa48 feat(projects): apps may deploy a KEDA ScaledObject (D75)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 21:28:06 +00:00
MarioGLealP 3a4cb7e0dd Merge pull request 'feat(platform): KEDA 2.21.0 for Shikigami's worker scaling (D75)' (#17) from marioglealp/platform-keda into main
Reviewed-on: #17
2026-10-30 21:26:26 +00:00
MarioGLealPandClaude Opus 5.5 0496612866 feat(platform): KEDA 2.21.0 for Shikigami's worker scaling (D75)
Scales on Shikigami's own /backlog via the metrics-api trigger, so
KEDA holds no credentials. 2.21.0 fixes GHSA-637c-6jxx-4rwm. Reach cut
down: Secrets in its own namespace only, scale targets Deployments +
StatefulSets only (drops the chart's */* get). Digest-pinned, no CPU
limits, namespace not part-of meru.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 21:22:56 +00:00
MarioGLealP 5b399b1551 Merge pull request 'fix(temporal): internode trusts its own CA, not pki_meru (D74)' (#16) from marioglealp/temporal-internode-ca into main
Reviewed-on: #16
2026-10-30 20:32:26 +00:00
MarioGLealPandClaude Opus 5.5 9fce667e15 fix(temporal): internode trusts its own CA, not pki_meru (D74)
Any Meru namespace can get a pki_meru cert for its own name; with the
internode side trusting pki_meru, that cert reached the internal-frontend
(admin, no token) and history/matching directly. A self-signed CA in the
temporal namespace (cert-manager) now issues the internode cert only.
The frontend stays on pki_meru + tokens.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 20:31:51 +00:00
MarioGLealP 96c1b8a165 Merge pull request 'feat(temporal): Authentik tokens on the frontend + UI login (D70 step 2)' (#15) from marioglealp/temporal-tokens into main
Reviewed-on: #15
2026-10-30 20:07:43 +00:00
MarioGLealPandClaude Opus 5.5 6ae16b4a3b feat(temporal): Authentik tokens on the frontend + UI login (D70 step 2)
Every call to the frontend now needs a token from Authentik's
temporal-oidc provider (aud temporal, temporal_permissions claim,
default authorizer + claim mapper). Temporal's own parts move to the
internal-frontend (internode mTLS, no authorizer). The UI logs Mario in
with OIDC (D73) and forwards his token; its client secret comes from
OpenBao through ESO (shared role meru-eso).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 20:06:10 +00:00
MarioGLealP f42ae443fa Merge pull request 'feat(platform): Temporal mTLS - frontend + internode certs from pki_meru (D70 step 1)' (#14) from marioglealp/temporal-mtls into main
Reviewed-on: #14
2026-10-30 17:54:06 +00:00
MarioGLealPandClaude Opus 5.5 9f08bac23b feat(platform): Temporal mTLS - frontend + internode certs from pki_meru (D70 step 1)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 17:51:13 +00:00
MarioGLealP e66ecbd917 Merge pull request 'feat(platform): Kyverno background controller for restart-on-secret-change (D72)' (#13) from marioglealp/kyverno-background into main
Reviewed-on: #13
2026-10-30 16:33:08 +00:00
MarioGLealPandClaude Opus 5.5 d40bd9fdf9 feat(platform): Kyverno background controller for restart-on-secret-change (D72)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 16:31:20 +00:00
MarioGLealP d5c837d1ce Merge pull request 'feat(appsets): sindri-build 0.4.0 - builds on the shared OpenBao roles (D71)' (#12) from marioglealp/sindri-0.4.0 into main
Reviewed-on: #12
2026-10-30 15:22:25 +00:00
MarioGLealPandClaude Opus 5.5 5982345338 feat(appsets): sindri-build 0.4.0 - builds on the shared OpenBao roles (D71)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 15:17:42 +00:00
MarioGLealP 0824eed80a Merge pull request 'feat(projects): apps may deploy cert-manager Issuers and Certificates (D71)' (#11) from marioglealp/app-kinds-certs into main
Reviewed-on: #11
2026-10-30 15:07:59 +00:00
MarioGLealPandClaude Opus 5.5 7c1c0f0b8f feat(projects): apps may deploy cert-manager Issuers and Certificates (D71)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 15:06:11 +00:00
MarioGLealP a8f42fb681 Merge pull request 'feat(platform): cert-manager v1.21.3 for in-cluster certs (D71)' (#10) from marioglealp/cert-manager into main
Reviewed-on: #10
2026-10-30 14:31:08 +00:00
MarioGLealPandClaude Opus 5.5 a3bc657239 feat(platform): cert-manager v1.21.3 for in-cluster certs (D71)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 11:56:37 +00:00
MarioGLealP 11f0f427c4 Merge pull request 'meru-apps: sindri-build 0.3.0 (runner registration via ESO)' (#9) from marioglealp/sindri-030 into main
Reviewed-on: #9
2026-10-30 09:22:12 +00:00
MarioGLealPandClaude Opus 5.5 383e8a7834 meru-apps: sindri-build 0.3.0 (runner registration via ESO)
The tag exists. Each app's sindri-registration is taken over by ESO with
the same values (probed live in echo-build and thoth-build); the runners
restart once (chart label) and keep their registration on its volume.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 09:18:52 +00:00
MarioGLealP 26896376db Merge pull request 'fences: apps may deploy SecretStore + ExternalSecret' (#8) from marioglealp/eso-kinds into main
Reviewed-on: #8
2026-10-30 08:52:02 +00:00
MarioGLealPandClaude Opus 5.5 3d2040f5fa fences: apps may deploy SecretStore + ExternalSecret
Placeholders for ESO (D66/D68). Still no Secrets. A namespace's SecretStore
can only log in as its own service accounts, and OpenBao binds each role to
one namespace, so an app can't reach another app's values by writing its
own store.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 08:49:09 +00:00
MarioGLealP c193531fea Merge pull request 'platform: External Secrets Operator 2.14.0' (#7) from marioglealp/eso into main
Reviewed-on: #7
2026-10-30 08:41:36 +00:00
MarioGLealPandClaude Opus 5.5 8df2a37e80 platform: External Secrets Operator 2.14.0
ESO turns ExternalSecret placeholders in app repos into Secrets, read from
OpenBao with each namespace's own login (D66). Only the namespaced kinds
run: no ClusterSecretStore, ClusterExternalSecret, PushSecret or
ClusterGenerator. Images pinned by digest, probes and resources set, so
the cluster rules pass without an exception.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 07:58:56 +00:00
MarioGLealP b17e2d1137 Merge pull request 'Platform parts read only Meru repos: Zot, Temporal's database and the cluster rules move out of clockmost-infra' (#6) from marioglealp/own-repos into main
Reviewed-on: #6
2026-10-30 07:25:57 +00:00
MarioGLealPandClaude Opus 5.5 f73cbb7a62 Platform parts read only Meru repos: Zot, Temporal's database and the cluster rules move out of clockmost-infra
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1HcMerN6toVuLY5K4MR
2026-10-30 07:21:49 +00:00
MarioGLealP a120b6d954 Merge pull request 'Platform list: Kyverno + rules, Zot, Temporal + its database move in from clockmost-infra' (#5) from marioglealp/platform-rest into main
Reviewed-on: #5
2026-10-29 23:23:29 +00:00
MarioGLealP 6af97e1164 Merge pull request 'Platform list: CNPG moves in from clockmost-infra' (#4) from marioglealp/platform-cnpg into main
Reviewed-on: #4
2026-10-29 23:23:16 +00:00
MarioGLealPandClaude Opus 5.5 02c40c2fa4 Platform list: Kyverno + rules, Zot, Temporal + its database move in from clockmost-infra
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1Hfahkh27nfbtRVZ4CR
2026-10-29 23:21:43 +00:00
MarioGLealPandClaude Opus 5.5 63b192a2f9 Platform list: CNPG moves in from clockmost-infra
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1Hfahkh27nfbtRVZ4CR
2026-10-29 23:19:33 +00:00
MarioGLealP 96c6bf3828 Merge pull request 'Platform list: Falco moves in from clockmost-infra' (#3) from marioglealp/platform-falco into main
Reviewed-on: #3
2026-10-29 23:16:23 +00:00
MarioGLealPandClaude Opus 5.5 3b1980ee19 Platform list: Falco moves in from clockmost-infra
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1Hfahkh27nfbtRVZ4CR
2026-10-29 23:14:05 +00:00
MarioGLealP a64d9baeca Merge pull request 'App databases as their own Application; optional build labels' (#2) from marioglealp/databases into main
Reviewed-on: #2
2026-10-29 23:00:44 +00:00
MarioGLealPandClaude Opus 5.5 5e6f3197f5 App databases as their own Application; optional build labels
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1Hfahkh27nfbtRVZ4CR
2026-10-29 22:58:55 +00:00
MarioGLealP 6aa9408829 Merge pull request 'Find Meru apps: the meru-apps ApplicationSet' (#1) from marioglealp/meru-apps into main
Reviewed-on: #1
2026-10-29 22:17:26 +00:00
MarioGLealPandClaude Opus 5.5 bccc7ae781 Find Meru apps: the meru-apps ApplicationSet
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1Hfahkh27nfbtRVZ4CR
2026-10-29 22:16:26 +00:00
MarioGLealPandClaude Opus 5.5 c019350be0 Meru root: the platform fence and one fence per app (Echo, Thoth)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MdS1Hfahkh27nfbtRVZ4CR
2026-10-29 21:49:18 +00:00