Three NLBs became one (185.19.28.170, ingress-nginx). Shorashim: `shorashim-external` (NLB 185.19.29.180, NodePort 30923) is replaced by an Ingress — a host-less catch-all (works by IP, no DNS) plus a `shorashim.ch` rule ready for the A record; TLS deliberately not requested until the name resolves. Sanhedrin-length proxy timeouts. The watch behind the ingress (completes tablet 46): the TCP peer is now the ingress controller, so Mishmar.peer/1 takes the caller from X-Real-IP — only when the peer is inside TRUSTED_PROXIES (the pod network, configmap); from anyone else the header is the caller's own claim and is ignored. The ingress Service was already externalTrafficPolicy: Local with its health-check port open, so the caller's address arrives without the security-group change the direct route needed. Verified live: the 11th knock is 429, a forged X-Real-IP is still 429, and in the same minute the old route (pod sees the node) was a different subject. Gitea: no name of its resolves, so it rides the controller's TCP passthrough on the same NLB — :3000 → gitea:80, :22 → gitea:22 (ingress-tcp-services.yaml), on the two NodePorts the security group already allowed. gitea-mcp now reaches Gitea over the cluster network instead of out through an NLB and back. Tamid §1.1 note, KOHEN.md, AGENTS.md. Doorpost e4e3d56d… → a2ec3842…. Elixir 539/0 (L3 on and off). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
51 lines
1.9 KiB
YAML
51 lines
1.9 KiB
YAML
# Shorashim ConfigMap — non-secret configuration
|
|
# Construction spec §4.4: Tuning constants
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: shorashim-config
|
|
namespace: shorashim
|
|
data:
|
|
# L1 mount point — read-only Torah filesystem
|
|
L1_MOUNT_POINT: "/mnt/torah"
|
|
|
|
# Manna provision file location
|
|
MANNA_PROVISION_FILE: "/var/lib/shorashim/manna/today.json"
|
|
|
|
# Talmudic Engine socket
|
|
TALMUDIC_SOCKET_PATH: "/tmp/shorashim/talmudic.sock"
|
|
|
|
# Korban Processor socket — the bedikah (Construction §3.9). Opened by
|
|
# the korban-processor container, read by vav-pipeline, both over the
|
|
# shared tmp-shorashim volume. Pod-internal; never on the network.
|
|
KORBAN_SOCKET_PATH: "/tmp/shorashim/korban.sock"
|
|
|
|
# Courtyard / chatzer keys — a FILE (Construction §4.6), projected from
|
|
# the shorashim-api-keys Secret (secrets.yaml). The path is config; the
|
|
# keys never are.
|
|
API_KEYS_FILE: "/etc/shorashim/secrets/api_keys"
|
|
|
|
# The pod network. The ingress controller lives in it; only from here
|
|
# is X-Real-IP believed as the caller's address (the pe'ah's per-IP
|
|
# watch, Tamid §1.1). Nothing outside the cluster can reach the pod
|
|
# directly any more (service.yaml), so nothing outside can forge it.
|
|
TRUSTED_PROXIES: "192.168.0.0/16"
|
|
|
|
# Shoresh Engine binary — staged onto the shared shoresh-bin volume
|
|
# by the shoresh-engine-install init container (see deployment.yaml).
|
|
# vav_pipeline spawns it as an Erlang Port, i.e. as a child process of
|
|
# the vav-pipeline container, so it must be a path on THIS
|
|
# container's filesystem.
|
|
SHORESH_ENGINE_BINARY: "/opt/shoresh/shoresh-engine"
|
|
|
|
# Shabbat location — Zurich (Construction spec §4.4)
|
|
SHABBAT_LATITUDE: "47.3769"
|
|
SHABBAT_LONGITUDE: "8.5417"
|
|
SHABBAT_TIMEZONE_OFFSET: "1"
|
|
|
|
# Cycle boundary check interval (ms)
|
|
CYCLE_BOUNDARY_CHECK_INTERVAL_MS: "60000"
|
|
|
|
# Pipeline latency budget (ms) — Construction spec §2.5
|
|
PIPELINE_LATENCY_BUDGET_MS: "5000"
|