2026-07-21 21:02:06 -03:00
|
|
|
# services/hermes/agent-ingress.yaml
|
2026-08-10 16:31:06 -03:00
|
|
|
apiVersion: traefik.io/v1alpha1
|
|
|
|
|
kind: Middleware
|
|
|
|
|
metadata:
|
|
|
|
|
name: hermes-agent-terminal-slash
|
|
|
|
|
namespace: hermes
|
|
|
|
|
spec:
|
|
|
|
|
redirectRegex:
|
refactor(hermes): rename the owner agent host to worker.bstein.dev
Introduce worker.bstein.dev as the canonical hostname for the owner-only
Hermes coordinator, previously agent.hermes.bstein.dev.
The old host is deliberately kept alive. CoreDNS, both agent Ingresses and
the hermes-sites certificate now serve BOTH names, so merging this cannot
take away the endpoint the operator uses to reach the coordinator. Retiring
agent.hermes.bstein.dev is a separate, separately scheduled change. No
redirect middleware is added.
What switches to the new host:
- HERMES_DASHBOARD_PUBLIC_URL and the oauth2-proxy --redirect-url
- the Keycloak hermes-agent-proxy rootUrl
- operator docs, skills, the ZAP baseline target and the triage monitor default
What stays dual-homed until retirement:
- CoreDNS hosts entry, both agent Ingress rules, certificate SANs
- API_SERVER_CORS_ORIGINS (now a comma-separated pair)
- the Keycloak redirect URIs, web origins and post-logout origins, so a
rollback only needs the oauth2-proxy --redirect-url reverted and does not
require re-running the ensure job
ensure_proxy_client now takes optional trailing legacy URLs; called with a
single URL it emits the identical payload as before, so the chat and triage
clients are unaffected. The ensure Job is bumped to -11 so Flux re-runs it;
login on the new host fails until that Job completes.
Because the session and CSRF cookies use the __Host- prefix they are bound to
one origin, so a fresh login must start on worker.bstein.dev and existing
sessions do not carry over -- re-login is required after rollout.
Knowledge catalogs and diagrams regenerated with `make knowledge`.
2026-08-21 10:00:15 +00:00
|
|
|
# Host-preserving so the trailing-slash fixup works on both the canonical
|
|
|
|
|
# worker.bstein.dev and the legacy agent.hermes.bstein.dev host.
|
|
|
|
|
regex: ^https://(worker\.bstein\.dev|agent\.hermes\.bstein\.dev)/terminal$
|
|
|
|
|
replacement: https://${1}/terminal/
|
2026-08-10 16:31:06 -03:00
|
|
|
permanent: false
|
|
|
|
|
---
|
2026-08-10 21:08:42 -03:00
|
|
|
apiVersion: traefik.io/v1alpha1
|
|
|
|
|
kind: Middleware
|
|
|
|
|
metadata:
|
|
|
|
|
name: hermes-agent-stock-dashboard-headers
|
|
|
|
|
namespace: hermes
|
|
|
|
|
spec:
|
|
|
|
|
headers:
|
|
|
|
|
customRequestHeaders:
|
|
|
|
|
Origin: http://127.0.0.1:9119
|
|
|
|
|
---
|
2026-05-20 17:22:12 -03:00
|
|
|
apiVersion: networking.k8s.io/v1
|
|
|
|
|
kind: Ingress
|
|
|
|
|
metadata:
|
2026-08-10 21:08:42 -03:00
|
|
|
name: hermes-agent-dashboard
|
2026-07-21 21:02:06 -03:00
|
|
|
namespace: hermes
|
2026-05-20 17:22:12 -03:00
|
|
|
annotations:
|
|
|
|
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
2026-08-10 21:08:42 -03:00
|
|
|
traefik.ingress.kubernetes.io/router.middlewares: hermes-hermes-agent-stock-dashboard-headers@kubernetescrd
|
2026-05-20 17:22:12 -03:00
|
|
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
|
|
|
spec:
|
|
|
|
|
ingressClassName: traefik
|
|
|
|
|
tls:
|
2026-08-08 17:59:45 -03:00
|
|
|
- hosts:
|
refactor(hermes): rename the owner agent host to worker.bstein.dev
Introduce worker.bstein.dev as the canonical hostname for the owner-only
Hermes coordinator, previously agent.hermes.bstein.dev.
The old host is deliberately kept alive. CoreDNS, both agent Ingresses and
the hermes-sites certificate now serve BOTH names, so merging this cannot
take away the endpoint the operator uses to reach the coordinator. Retiring
agent.hermes.bstein.dev is a separate, separately scheduled change. No
redirect middleware is added.
What switches to the new host:
- HERMES_DASHBOARD_PUBLIC_URL and the oauth2-proxy --redirect-url
- the Keycloak hermes-agent-proxy rootUrl
- operator docs, skills, the ZAP baseline target and the triage monitor default
What stays dual-homed until retirement:
- CoreDNS hosts entry, both agent Ingress rules, certificate SANs
- API_SERVER_CORS_ORIGINS (now a comma-separated pair)
- the Keycloak redirect URIs, web origins and post-logout origins, so a
rollback only needs the oauth2-proxy --redirect-url reverted and does not
require re-running the ensure job
ensure_proxy_client now takes optional trailing legacy URLs; called with a
single URL it emits the identical payload as before, so the chat and triage
clients are unaffected. The ensure Job is bumped to -11 so Flux re-runs it;
login on the new host fails until that Job completes.
Because the session and CSRF cookies use the __Host- prefix they are bound to
one origin, so a fresh login must start on worker.bstein.dev and existing
sessions do not carry over -- re-login is required after rollout.
Knowledge catalogs and diagrams regenerated with `make knowledge`.
2026-08-21 10:00:15 +00:00
|
|
|
- worker.bstein.dev
|
2026-08-08 17:59:45 -03:00
|
|
|
- agent.hermes.bstein.dev
|
|
|
|
|
secretName: hermes-sites-tls
|
2026-05-20 17:22:12 -03:00
|
|
|
rules:
|
refactor(hermes): rename the owner agent host to worker.bstein.dev
Introduce worker.bstein.dev as the canonical hostname for the owner-only
Hermes coordinator, previously agent.hermes.bstein.dev.
The old host is deliberately kept alive. CoreDNS, both agent Ingresses and
the hermes-sites certificate now serve BOTH names, so merging this cannot
take away the endpoint the operator uses to reach the coordinator. Retiring
agent.hermes.bstein.dev is a separate, separately scheduled change. No
redirect middleware is added.
What switches to the new host:
- HERMES_DASHBOARD_PUBLIC_URL and the oauth2-proxy --redirect-url
- the Keycloak hermes-agent-proxy rootUrl
- operator docs, skills, the ZAP baseline target and the triage monitor default
What stays dual-homed until retirement:
- CoreDNS hosts entry, both agent Ingress rules, certificate SANs
- API_SERVER_CORS_ORIGINS (now a comma-separated pair)
- the Keycloak redirect URIs, web origins and post-logout origins, so a
rollback only needs the oauth2-proxy --redirect-url reverted and does not
require re-running the ensure job
ensure_proxy_client now takes optional trailing legacy URLs; called with a
single URL it emits the identical payload as before, so the chat and triage
clients are unaffected. The ensure Job is bumped to -11 so Flux re-runs it;
login on the new host fails until that Job completes.
Because the session and CSRF cookies use the __Host- prefix they are bound to
one origin, so a fresh login must start on worker.bstein.dev and existing
sessions do not carry over -- re-login is required after rollout.
Knowledge catalogs and diagrams regenerated with `make knowledge`.
2026-08-21 10:00:15 +00:00
|
|
|
- host: worker.bstein.dev
|
|
|
|
|
http:
|
|
|
|
|
paths:
|
|
|
|
|
- path: /
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
|
|
|
|
name: oauth2-proxy-hermes-agent
|
|
|
|
|
port:
|
|
|
|
|
name: http
|
|
|
|
|
# Legacy host, served unchanged until it is retired in a separate change.
|
2026-08-08 17:59:45 -03:00
|
|
|
- host: agent.hermes.bstein.dev
|
2026-05-20 17:22:12 -03:00
|
|
|
http:
|
|
|
|
|
paths:
|
|
|
|
|
- path: /
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
2026-08-08 17:59:45 -03:00
|
|
|
name: oauth2-proxy-hermes-agent
|
|
|
|
|
port:
|
|
|
|
|
name: http
|
2026-08-10 21:08:42 -03:00
|
|
|
---
|
|
|
|
|
apiVersion: networking.k8s.io/v1
|
|
|
|
|
kind: Ingress
|
|
|
|
|
metadata:
|
|
|
|
|
name: hermes-agent-terminal
|
|
|
|
|
namespace: hermes
|
|
|
|
|
annotations:
|
|
|
|
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
|
|
|
traefik.ingress.kubernetes.io/router.middlewares: hermes-hermes-agent-terminal-slash@kubernetescrd
|
|
|
|
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
|
|
|
spec:
|
|
|
|
|
ingressClassName: traefik
|
|
|
|
|
tls:
|
|
|
|
|
- hosts:
|
refactor(hermes): rename the owner agent host to worker.bstein.dev
Introduce worker.bstein.dev as the canonical hostname for the owner-only
Hermes coordinator, previously agent.hermes.bstein.dev.
The old host is deliberately kept alive. CoreDNS, both agent Ingresses and
the hermes-sites certificate now serve BOTH names, so merging this cannot
take away the endpoint the operator uses to reach the coordinator. Retiring
agent.hermes.bstein.dev is a separate, separately scheduled change. No
redirect middleware is added.
What switches to the new host:
- HERMES_DASHBOARD_PUBLIC_URL and the oauth2-proxy --redirect-url
- the Keycloak hermes-agent-proxy rootUrl
- operator docs, skills, the ZAP baseline target and the triage monitor default
What stays dual-homed until retirement:
- CoreDNS hosts entry, both agent Ingress rules, certificate SANs
- API_SERVER_CORS_ORIGINS (now a comma-separated pair)
- the Keycloak redirect URIs, web origins and post-logout origins, so a
rollback only needs the oauth2-proxy --redirect-url reverted and does not
require re-running the ensure job
ensure_proxy_client now takes optional trailing legacy URLs; called with a
single URL it emits the identical payload as before, so the chat and triage
clients are unaffected. The ensure Job is bumped to -11 so Flux re-runs it;
login on the new host fails until that Job completes.
Because the session and CSRF cookies use the __Host- prefix they are bound to
one origin, so a fresh login must start on worker.bstein.dev and existing
sessions do not carry over -- re-login is required after rollout.
Knowledge catalogs and diagrams regenerated with `make knowledge`.
2026-08-21 10:00:15 +00:00
|
|
|
- worker.bstein.dev
|
2026-08-10 21:08:42 -03:00
|
|
|
- agent.hermes.bstein.dev
|
|
|
|
|
secretName: hermes-sites-tls
|
|
|
|
|
rules:
|
refactor(hermes): rename the owner agent host to worker.bstein.dev
Introduce worker.bstein.dev as the canonical hostname for the owner-only
Hermes coordinator, previously agent.hermes.bstein.dev.
The old host is deliberately kept alive. CoreDNS, both agent Ingresses and
the hermes-sites certificate now serve BOTH names, so merging this cannot
take away the endpoint the operator uses to reach the coordinator. Retiring
agent.hermes.bstein.dev is a separate, separately scheduled change. No
redirect middleware is added.
What switches to the new host:
- HERMES_DASHBOARD_PUBLIC_URL and the oauth2-proxy --redirect-url
- the Keycloak hermes-agent-proxy rootUrl
- operator docs, skills, the ZAP baseline target and the triage monitor default
What stays dual-homed until retirement:
- CoreDNS hosts entry, both agent Ingress rules, certificate SANs
- API_SERVER_CORS_ORIGINS (now a comma-separated pair)
- the Keycloak redirect URIs, web origins and post-logout origins, so a
rollback only needs the oauth2-proxy --redirect-url reverted and does not
require re-running the ensure job
ensure_proxy_client now takes optional trailing legacy URLs; called with a
single URL it emits the identical payload as before, so the chat and triage
clients are unaffected. The ensure Job is bumped to -11 so Flux re-runs it;
login on the new host fails until that Job completes.
Because the session and CSRF cookies use the __Host- prefix they are bound to
one origin, so a fresh login must start on worker.bstein.dev and existing
sessions do not carry over -- re-login is required after rollout.
Knowledge catalogs and diagrams regenerated with `make knowledge`.
2026-08-21 10:00:15 +00:00
|
|
|
- host: worker.bstein.dev
|
|
|
|
|
http:
|
|
|
|
|
paths:
|
|
|
|
|
- path: /terminal
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
|
|
|
|
name: oauth2-proxy-hermes-agent
|
|
|
|
|
port:
|
|
|
|
|
name: http
|
|
|
|
|
# Legacy host, served unchanged until it is retired in a separate change.
|
2026-08-10 21:08:42 -03:00
|
|
|
- host: agent.hermes.bstein.dev
|
|
|
|
|
http:
|
|
|
|
|
paths:
|
|
|
|
|
- path: /terminal
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
|
|
|
|
name: oauth2-proxy-hermes-agent
|
|
|
|
|
port:
|
|
|
|
|
name: http
|
|
|
|
|
---
|
|
|
|
|
apiVersion: networking.k8s.io/v1
|
|
|
|
|
kind: Ingress
|
|
|
|
|
metadata:
|
|
|
|
|
name: hermes-sites
|
|
|
|
|
namespace: hermes
|
|
|
|
|
annotations:
|
|
|
|
|
cert-manager.io/cluster-issuer: letsencrypt
|
|
|
|
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
|
|
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
|
|
|
spec:
|
|
|
|
|
ingressClassName: traefik
|
|
|
|
|
tls:
|
|
|
|
|
- hosts:
|
|
|
|
|
- agent.hermes.bstein.dev
|
2026-08-21 06:43:18 +00:00
|
|
|
- chat.bstein.dev
|
|
|
|
|
- triage.bstein.dev
|
refactor(hermes): rename the owner agent host to worker.bstein.dev
Introduce worker.bstein.dev as the canonical hostname for the owner-only
Hermes coordinator, previously agent.hermes.bstein.dev.
The old host is deliberately kept alive. CoreDNS, both agent Ingresses and
the hermes-sites certificate now serve BOTH names, so merging this cannot
take away the endpoint the operator uses to reach the coordinator. Retiring
agent.hermes.bstein.dev is a separate, separately scheduled change. No
redirect middleware is added.
What switches to the new host:
- HERMES_DASHBOARD_PUBLIC_URL and the oauth2-proxy --redirect-url
- the Keycloak hermes-agent-proxy rootUrl
- operator docs, skills, the ZAP baseline target and the triage monitor default
What stays dual-homed until retirement:
- CoreDNS hosts entry, both agent Ingress rules, certificate SANs
- API_SERVER_CORS_ORIGINS (now a comma-separated pair)
- the Keycloak redirect URIs, web origins and post-logout origins, so a
rollback only needs the oauth2-proxy --redirect-url reverted and does not
require re-running the ensure job
ensure_proxy_client now takes optional trailing legacy URLs; called with a
single URL it emits the identical payload as before, so the chat and triage
clients are unaffected. The ensure Job is bumped to -11 so Flux re-runs it;
login on the new host fails until that Job completes.
Because the session and CSRF cookies use the __Host- prefix they are bound to
one origin, so a fresh login must start on worker.bstein.dev and existing
sessions do not carry over -- re-login is required after rollout.
Knowledge catalogs and diagrams regenerated with `make knowledge`.
2026-08-21 10:00:15 +00:00
|
|
|
- worker.bstein.dev
|
2026-08-10 21:08:42 -03:00
|
|
|
secretName: hermes-sites-tls
|
|
|
|
|
rules:
|
2026-08-21 06:43:18 +00:00
|
|
|
- host: chat.bstein.dev
|
2026-08-08 17:59:45 -03:00
|
|
|
http:
|
|
|
|
|
paths:
|
|
|
|
|
- path: /
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
|
|
|
|
name: oauth2-proxy-hermes-chat
|
|
|
|
|
port:
|
|
|
|
|
name: http
|
2026-08-21 06:43:18 +00:00
|
|
|
- host: triage.bstein.dev
|
2026-08-08 17:59:45 -03:00
|
|
|
http:
|
|
|
|
|
paths:
|
|
|
|
|
- path: /
|
|
|
|
|
pathType: Prefix
|
|
|
|
|
backend:
|
|
|
|
|
service:
|
|
|
|
|
name: oauth2-proxy-hermes-triage
|
2026-05-20 17:22:12 -03:00
|
|
|
port:
|
2026-08-02 02:30:44 -03:00
|
|
|
name: http
|