Commit Graph
534 Commits
Author SHA1 Message Date
Ruben Hensen 46117ee658 chore(deps): update helm chart external-secrets to v2.14.0 2026-10-25 12:49:06 +01:00
Ruben Hensen 0b38d8dec8 Merge pull request #33 from rubenhensen/requests
Set resource requests from measured usage
2026-10-25 12:23:54 +01:00
Ruben Hensen 618954ae2c Merge pull request #25 from rubenhensen/renovate/wordpress-0.x
chore(deps): update helm chart wordpress to v0.16.7
2026-10-25 12:17:17 +01:00
Ruben Hensen 44dc85d306 Merge pull request #24 from rubenhensen/renovate/https-github.com-kubernetes-csi-external-snapshotter.git-8.x
chore(deps): update dependency https://github.com/kubernetes-csi/external-snapshotter.git to v8.7.0
2026-10-25 12:16:25 +01:00
Ruben Hensen b60735f6b0 Merge pull request #28 from rubenhensen/renovate/cert-manager-1.21.x
chore(deps): update helm chart cert-manager to v1.21.3
2026-10-25 12:14:55 +01:00
Ruben Hensen 72f49bed51 Set resource requests from measured usage 2026-10-25 07:08:16 +01:00
Ruben Hensen 22c5a325d6 Add metrics-server 2026-10-25 04:11:59 +01:00
renovate[bot] 18f9e2efe6 chore(deps): update helm chart wordpress to v0.16.7 2026-10-25 03:06:35 +00:00
renovate[bot] 5f5f5b01f0 chore(deps): update dependency https://github.com/kubernetes-csi/external-snapshotter.git to v8.7.0 2026-10-25 03:06:27 +00:00
renovate[bot] 075b3686c3 chore(deps): update helm chart cert-manager to v1.21.3 2026-10-25 03:05:55 +00:00
Ruben Hensen 0c52d8a467 apps: list external-snapshotter's automated sync once 2026-10-25 03:57:24 +01:00
Ruben Hensen bc71061db7 Remove commented-out files, the empty secrets app and a stale script copy 2026-10-25 03:27:32 +01:00
Ruben Hensen 077711472e authentik: upgrade to 2026.8.5 2026-10-25 02:31:00 +01:00
Ruben Hensen 43f741141d authentik: upgrade to 2026.5.6 2026-10-25 02:23:15 +01:00
Ruben Hensen cbee4955d3 authentik: drop the redis values, which the chart no longer has 2026-10-25 02:23:15 +01:00
Ruben Hensen 858904384c Give leader-elected controllers longer leases
The snapshot-controller (1,059 restarts), the CNPG operator and Envoy
Gateway restart whenever a lease renewal takes more than 10 seconds,
which happens when heavy writes stall dqlite on the node's SSD. Raise
lease duration, renew deadline and retry period from 15s/10s/2s to
60s/40s/5s so they ride out stalls of up to ~40 seconds. With one
replica, or a standby, a slower takeover costs nothing here.
2026-10-24 14:43:38 +02:00
Ruben Hensen 135bca4a83 authentik: log in to immich with Scouts Online
Adds Scouts Online 3 (login.scouting.nl) as an OIDC source. Its userinfo
has the member's roles within the group; a property mapping puts every
member in "MBG leden" and those with an active Kaderlid role also in
"MBG kader", on every login. Members become external users. Family
members can share an email address and immich needs a unique one, so
those get a plus address with their member number.

The immich provider now authenticates through a flow whose only stage
is an identification stage with this one source and no fields, which
sends people straight on to Scouts Online. The source's own flows only
run through the source.
2026-10-24 13:37:12 +02:00
Ruben Hensen 48b0873ca3 authentik: add an OIDC provider for immich
The Scouting MBG photos (immich) will log in through this authentik,
which later passes on Scouts Online. The provider issues immich_role and
immich_quota: admins and the members of "MBG kader" may upload (-1),
everyone else gets a quota of 0, which makes immich refuse uploads.
"MBG leden" and "MBG kader" are filled by the Scouts Online source in a
next step; until then only authentik Admins can use the app.

The scouting blueprints and their secrets are mounted as directories
rather than with subPath, and the blueprint reads the client secret with
!File instead of !Env, so later changes reach authentik without a restart.
2026-10-24 13:19:52 +02:00
Ruben Hensen 5208379310 longhorn: enable the internal NetworkPolicies
With them only Longhorn's own components can reach the longhorn-manager API, which any pod could otherwise call without authentication to manage volumes. 1.12 was kept off because its instance-manager policy left the host-side iSCSI initiator out; 1.13 opens port 3260 to any source while v1DataEngineInitiatorSourceCIDRs is empty.
2026-10-24 00:02:32 +02:00
Ruben Hensen 04a2a2aed2 gatus: let Argo CD prune old resources
configMapGenerator gives every config change a new gatus-config-<hash> ConfigMap, and without prune the old one stayed behind and left the app OutOfSync.
2026-10-23 23:42:58 +02:00
Ruben Hensen 947a705016 longhorn: poll the backup store every 30 minutes
Each poll updates the backupvolume objects, which made up about 8% of the k8s-dqlite writes at the 300s interval. The recurring backup runs once a night, so 30 minutes is plenty.
2026-10-23 23:39:49 +02:00
Ruben Hensen b19c776728 longhorn: upgrade to 1.13.0
1.13 needs Kubernetes 1.34 or later. It adds a longhorn-global-manager Deployment, set to one replica on this single node, and by default lets the CSI controller read every Secret for provisioner-secret StorageClass parameters; neither StorageClass uses those, so that grant stays off.
2026-10-23 23:06:08 +02:00
Ruben Hensen 514fcd8dd4 longhorn: upgrade to 1.12.1
First step from 1.11.2 to 1.13 now that the cluster runs Kubernetes 1.35. The internal NetworkPolicies that 1.12 enables by default stay off: Calico would enforce them, and the instance-manager policy only admits Longhorn pods while the iSCSI initiator connects from the host.

Also lifts the Renovate hold below 1.11.3, which only existed for Kubernetes 1.33.
2026-10-23 22:58:29 +02:00
Ruben Hensen 1f04831a97 Replace the Ingresses with Certificate resources
ingress-nginx is gone and every app is served by the Envoy Gateway. The certificates were created by cert-manager's ingress-shim and are owned by the Ingresses, so each app now declares its Certificate itself, with the same name, secret and usages, so nothing gets reissued. gateway-shim can't take over because the certificates live in the app namespaces.

immich drops mbg.hensen.io, which has no route, so that one certificate is reissued through the Gateway's HTTP-01 solver.

Also removes the Longhorn test-port redirect URI and updates comments that still described nginx.
2026-10-23 21:20:25 +02:00
Ruben Hensen 910b792452 longhorn: log in through authentik on the Gateway
Longhorn has no users of its own; nginx guarded it with basic auth using apr1 hashes, which Envoy Gateway does not support. An Envoy Gateway SecurityPolicy now sends visitors through an authentik OIDC application that only admins may use. The client secret lives in Vault at kv/longhorn-oidc and reaches both authentik and Envoy through External Secrets.
2026-10-23 21:07:31 +02:00
Ruben Hensen b360483210 cert-manager: enable the Gateway API integration
Needed for HTTP-01 challenges through the Gateway after the switch from ingress-nginx. Nothing changes until an issuer uses a gatewayHTTPRoute solver.
2026-10-23 21:01:17 +02:00
Ruben Hensen 134774509d argocd: serve plain HTTP behind the ingress and the Gateway
With server.insecure, TLS ends at nginx or Envoy and argocd-server serves plain HTTP, which is how Argo CD documents the Gateway API setup. The nginx Ingress now talks HTTP to the http port; the ssl-passthrough annotation did nothing without the controller flag. argocd-folder diffs server-side for the new HTTPRoute.
2026-10-23 17:44:08 +02:00
Ruben Hensen d1efb91a4b gateway: diff the Gateway resources server-side
The API server fills in Gateway API defaults such as the parentRef group and kind and a PathPrefix / match, so Argo CD's client-side diff kept gateway-folder OutOfSync.
2026-10-23 17:36:14 +02:00
Ruben Hensen 7475199ca5 gateway: add the Envoy GatewayClass and Gateway
Envoy runs as a DaemonSet on host ports 10080 and 10443 for now, so it can be tested next to ingress-nginx, which keeps 80 and 443. The Gateway has a plain HTTP listener and no routes yet.
2026-10-23 17:27:02 +02:00
Ruben Hensen a20808b752 envoy-gateway: install v1.9.2 next to ingress-nginx
First step of the move from the retired ingress-nginx to the Gateway API. This installs the controller with the Gateway API and Envoy Gateway CRDs. No Gateway exists yet, so no traffic changes.
2026-10-23 17:25:20 +02:00
Ruben Hensen 43a62ff48f cert-manager: upgrade to v1.21.2
1.21 supports Kubernetes 1.33 to 1.36. The chart no longer creates the tokenrequest Role and RoleBinding; nothing uses them, as the only issuer is ACME with HTTP-01 and no serviceAccountRef.
2026-10-23 17:20:15 +02:00
Ruben Hensen 5427666ff9 longhorn: list Argo CD's pre-delete finalizers
Argo CD 3.x adds pre-delete-finalizer.argocd.argoproj.io and its /cleanup variant to Applications with PreDelete hooks, which the Longhorn chart has. With only resources-finalizer in git, the apps app-of-apps stayed OutOfSync on helm-longhorn.
2026-10-23 17:03:32 +02:00
Ruben Hensen 8a60dbc5ea argocd: sync Argo CD itself with server-side apply
Required from 3.3, whose ApplicationSet CRD no longer fits the last-applied annotation of client-side apply. Turned on while still on 3.2 so the managed-field migration happens before the CRD grows.
2026-10-22 23:25:28 +02:00
Ruben Hensen 69444a4ac0 external-secrets: upgrade to 2.13.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 23:03:25 +02:00
Ruben Hensen 30bc62a453 external-secrets: upgrade to 2.12.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:59:28 +02:00
Ruben Hensen 2b7b1799a4 external-secrets: upgrade to 2.11.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:55:59 +02:00
Ruben Hensen 00de7483d4 external-secrets: upgrade to 2.10.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:52:12 +02:00
Ruben Hensen bde9245497 external-secrets: upgrade to 2.9.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:48:24 +02:00
Ruben Hensen c2bece55d2 external-secrets: upgrade to 2.8.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:45:16 +02:00
Ruben Hensen 0bf2245c26 external-secrets: upgrade to 2.7.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:41:28 +02:00
Ruben Hensen af99a17ff4 external-secrets: upgrade to 2.6.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:38:20 +02:00
Ruben Hensen 8cc26bb412 external-secrets: upgrade to 2.5.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:34:53 +02:00
Ruben Hensen c6424cc4a5 external-secrets: upgrade to 2.4.1
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:31:04 +02:00
Ruben Hensen 12a1f80902 external-secrets: upgrade to 2.3.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:27:15 +02:00
Ruben Hensen 39cc61236f external-secrets: upgrade to 2.2.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:23:28 +02:00
Ruben Hensen 42fc278f74 external-secrets: upgrade to 2.1.0
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:19:41 +02:00
Ruben Hensen 94fc9aeb52 external-secrets: upgrade to 2.0.1
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:16:04 +02:00
Ruben Hensen 724afbf4f7 external-secrets: upgrade to 1.3.2
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:12:17 +02:00
Ruben Hensen cef4466925 external-secrets: upgrade to 1.2.1
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:08:29 +02:00
Ruben Hensen 660cb82922 external-secrets: upgrade to 1.1.1
One minor at a time from 0.10.7 to 2.13.0, see docs/upgrade-k8s-1.33.md.
2026-10-22 22:02:19 +02:00