Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0211269b91 | ||
|
|
fe75b912f5 | ||
|
|
d9b4c47cf2 | ||
|
|
fb3724f603 | ||
|
|
632e092363 | ||
|
|
8d1c4eb7ca | ||
|
|
faf79549ac | ||
|
|
5336d9b849 |
@@ -42,7 +42,7 @@ when:
|
||||
|
||||
steps:
|
||||
- name: fetch-alerts
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-05-01
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-08-10
|
||||
environment:
|
||||
SOPS_AGE_KEY:
|
||||
from_secret: sops_age_key
|
||||
|
||||
@@ -60,7 +60,7 @@ steps:
|
||||
# run that never touched them. Tracked in #461.
|
||||
- name: kustomize-build
|
||||
depends_on: [] # see note above `steps:`
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-07-30
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-08-10
|
||||
commands:
|
||||
- |
|
||||
set -eu
|
||||
@@ -240,7 +240,7 @@ steps:
|
||||
# this step fails permanently on its own documentation.
|
||||
- name: no-digest-pins
|
||||
depends_on: [] # see note above `steps:`
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-07-30
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-08-10
|
||||
commands:
|
||||
- |
|
||||
set -eu
|
||||
|
||||
@@ -4,7 +4,7 @@ when:
|
||||
|
||||
steps:
|
||||
- name: e2e
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-05-01
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-08-10
|
||||
environment:
|
||||
SOPS_AGE_KEY:
|
||||
from_secret: sops_age_key
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ steps:
|
||||
- sh scripts/ci/test-model-selection.sh
|
||||
|
||||
- name: e2e-test
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-05-01
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-08-10
|
||||
environment:
|
||||
SOPS_AGE_KEY:
|
||||
from_secret: sops_age_key
|
||||
|
||||
@@ -49,7 +49,7 @@ steps:
|
||||
# (the issue-pick logic needs jq, which only the ci-claude image has);
|
||||
# minting a 1h read-only token per run is cheap. Degrades to
|
||||
# snapshot-only if the ci-diagnostics ServiceAccount isn't reconciled.
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-05-01
|
||||
image: gitea.renner.uno/gitea_admin/ci-k8s:2026-08-10
|
||||
environment:
|
||||
SOPS_AGE_KEY:
|
||||
from_secret: sops_age_key
|
||||
|
||||
@@ -64,10 +64,12 @@ spec:
|
||||
would only fail against a read-only docroot. Plugin and
|
||||
theme installs are unaffected. */
|
||||
define('WP_AUTO_UPDATE_CORE', false);
|
||||
/* xmlrpc.php is blocked at the ingress; this closes the same
|
||||
door from the inside. Nothing here uses it: no Jetpack,
|
||||
no mobile app, no pingbacks worth keeping. */
|
||||
add_filter('xmlrpc_enabled', '__return_false');
|
||||
/* No add_filter() here. WORDPRESS_CONFIG_EXTRA is eval'd inside
|
||||
wp-config.php, long before wp-settings.php loads the plugin
|
||||
API, so any add_filter call is a fatal error on every request
|
||||
— which is exactly what happened on first deploy. xmlrpc is
|
||||
handled at the ingress instead, by routing /xmlrpc.php
|
||||
through the Authentik gate. */
|
||||
envFrom:
|
||||
# The eight WordPress salts. Rotating them in OpenBao invalidates
|
||||
# every session — which is the intended lever, not a side effect.
|
||||
|
||||
@@ -57,6 +57,24 @@ spec:
|
||||
- host: www.renner.uno
|
||||
http:
|
||||
paths:
|
||||
# The outpost's own OAuth leg. Without this the gate is a dead end,
|
||||
# not a gate: hitting /wp-admin redirects to
|
||||
# /outpost.goauthentik.io/start on THIS host, which otherwise falls
|
||||
# through to the public `/` router and lands on WordPress's 404
|
||||
# page — verified exactly that way on first deploy. paperless needs
|
||||
# the same route and has it as a separate Ingress on auth.renner.uno
|
||||
# (apps/authentik/paperless-gate-ingress.yaml); here the flow stays
|
||||
# on www.renner.uno, so it belongs in this rule set.
|
||||
#
|
||||
# It is not an authentication hole: these endpoints ARE the login
|
||||
# flow, and the outpost serves them itself.
|
||||
- path: /outpost.goauthentik.io
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: ak-outpost-wordpress-gate
|
||||
port:
|
||||
number: 9000
|
||||
# Covers admin-ajax.php too. That is only safe because the gift
|
||||
# registry plugin -- the sole thing on this site that ever emitted
|
||||
# an ajaxurl -- is being dropped in the migration. Verified against
|
||||
@@ -76,3 +94,17 @@ spec:
|
||||
name: ak-outpost-wordpress-gate
|
||||
port:
|
||||
number: 9000
|
||||
# xmlrpc.php would otherwise be served by the public `/` prefix
|
||||
# router — an earlier version of this file claimed it was "blocked
|
||||
# at the ingress" while nothing blocked it at all. There is no deny
|
||||
# verb in an Ingress, so it goes through the gate instead: anonymous
|
||||
# callers get Authentik, not the XML-RPC endpoint. Nothing on this
|
||||
# site uses it (no Jetpack, no mobile app, no pingbacks worth
|
||||
# keeping), so no legitimate caller is affected.
|
||||
- path: /xmlrpc.php
|
||||
pathType: Exact
|
||||
backend:
|
||||
service:
|
||||
name: ak-outpost-wordpress-gate
|
||||
port:
|
||||
number: 9000
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
locals {
|
||||
renner_uno_records = {
|
||||
# A Records
|
||||
"@" = { type = "A", value = "159.69.42.237" }
|
||||
"www" = { type = "A", value = "159.69.42.237" }
|
||||
# No "@" / "www" entries. Both used to pin renner.uno and www.renner.uno
|
||||
# to 159.69.42.237, the Hetzner VM that hosted the WordPress site until it
|
||||
# moved into the cluster (kubernetes/apps/wordpress). Neither record is
|
||||
# actually live on the UDM any more — verified 2026-08-16: a LAN query for
|
||||
# www.renner.uno returns the public answer (proxy.renner.uno) — so this
|
||||
# block was drift waiting to be re-applied.
|
||||
#
|
||||
# The correct end state is exactly this absence: www.renner.uno is labelled
|
||||
# dns.renner.uno/public, so external-dns-unifi deliberately writes no UDM
|
||||
# record and LAN clients follow the public path (wildcard -> proxy) and
|
||||
# hairpin back in. Re-adding an A record here would point the house at a
|
||||
# server that is being decommissioned.
|
||||
#
|
||||
# The apex stays with Cloudflare, where a redirect rule sends
|
||||
# renner.uno/* to https://www.renner.uno/*.
|
||||
|
||||
# CNAME Records (External Targets)
|
||||
"nut" = { type = "CNAME", value = "nut.srv.renner.uno" }
|
||||
|
||||
Reference in New Issue
Block a user