Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3df10dafd |
No files matched your search
@@ -599,9 +599,7 @@ aligned, not that the output is true. Read `limits` in the response.
|
|||||||
### Rolling out — *Nesi'at haMishkan*
|
### Rolling out — *Nesi'at haMishkan*
|
||||||
|
|
||||||
`scripts/shorashim-rollout` (also installed at `~/.local/bin/`) restarts
|
`scripts/shorashim-rollout` (also installed at `~/.local/bin/`) restarts
|
||||||
the deployment, waits for both pods (two replicas since 2026-10-25,
|
the deployment, waits for 3/3, and takes two consecutive 200s from
|
||||||
surge rollout: one pod stays Ready throughout, so a rollout no longer
|
|
||||||
shows in the watchdog log), and takes two consecutive 200s from
|
|
||||||
`/kodesh/health` before reporting — a rollout is not done at 3/3 (NLB
|
`/kodesh/health` before reporting — a rollout is not done at 3/3 (NLB
|
||||||
re-admission lag). A new image must already be pushed as `:latest`. If
|
re-admission lag). A new image must already be pushed as `:latest`. If
|
||||||
the day's manna has not been written, the new pod hangs at 2/3 until it
|
the day's manna has not been written, the new pod hangs at 2/3 until it
|
||||||
|
|||||||
@@ -21,6 +21,19 @@ RUN swipl -g "consult('src/main'),halt(0)" -t "halt(1)"
|
|||||||
# === RUNTIME STAGE ===
|
# === RUNTIME STAGE ===
|
||||||
FROM --platform=linux/amd64 swipl:9.2.2
|
FROM --platform=linux/amd64 swipl:9.2.2
|
||||||
|
|
||||||
|
# CVE-2026-111497 (Brotli decoder out-of-bounds write, October 2026).
|
||||||
|
# The swipl:9.2.2 base carries Debian bookworm's libbrotli1 1.0.9-2,
|
||||||
|
# pulled in by libcurl3-gnutls. Nothing in this image decodes Brotli:
|
||||||
|
# swipl does not link it, there is no curl binary, and the engine reads
|
||||||
|
# JSON from vav over a Unix socket. The copy was dormant, not a path.
|
||||||
|
# Debian fixed it in 1.0.9-2+deb12u1 (bookworm-security); take that one
|
||||||
|
# package without moving the pinned base. The pin on SWI-Prolog 9.2.2
|
||||||
|
# (Construction §1.1) is the point of the base image, so this is
|
||||||
|
# --only-upgrade of the one library, not a general upgrade.
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends --only-upgrade libbrotli1 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN useradd --create-home --shell /bin/bash bikoret
|
RUN useradd --create-home --shell /bin/bash bikoret
|
||||||
USER bikoret
|
USER bikoret
|
||||||
|
|
||||||
|
|||||||
@@ -66,5 +66,5 @@ data:
|
|||||||
# a pool of 20 fills its connection ceiling by itself (2026-10-15:
|
# a pool of 20 fills its connection ceiling by itself (2026-10-15:
|
||||||
# refusals "remaining connection slots are reserved" for 24 h, one
|
# refusals "remaining connection slots are reserved" for 24 h, one
|
||||||
# pool worker looping, Aiven's monitor refused). Ten is ample for a
|
# pool worker looping, Aiven's monitor refused). Ten is ample for a
|
||||||
# single replica; two replicas since 2026-10-25 → 5 each, 10 in all.
|
# single replica.
|
||||||
POOL_SIZE: "5"
|
POOL_SIZE: "10"
|
||||||
+14
-21
@@ -18,25 +18,18 @@ metadata:
|
|||||||
app.kubernetes.io/name: shorashim
|
app.kubernetes.io/name: shorashim
|
||||||
app.kubernetes.io/version: "0.1.0"
|
app.kubernetes.io/version: "0.1.0"
|
||||||
spec:
|
spec:
|
||||||
# Two replicas (2026-10-25). A pod that is not ready took every caller
|
replicas: 1
|
||||||
# behind the gate dark, and every rollout left a five-minute 503 in
|
# One replica on one node with no room to surge. The default
|
||||||
# the watchdog log; with two pods and a surge rollout the Service keeps
|
# (maxSurge 25% → 1 extra pod) asks for 450m CPU the node does not
|
||||||
# one Ready pod throughout. One node: this covers rollouts and pod
|
# have beside the running pod, and the rollout hangs Pending while the
|
||||||
# crashes, not the node. The node has 1700m CPU allocatable and 1470m
|
# old image keeps serving (tablet 31, 2026-10-04). Replace in place.
|
||||||
# was requested (tablet 31, 2026-10-04: a surge pod at 450m hung
|
# The new pod reads the day's manna from the manna-pvc volume; it is
|
||||||
# Pending), so the requests below are sized to what the pod USES
|
# Ready again without the kohen, as long as today's portion was written.
|
||||||
# (vav 20m, sidecars 2m, measured) with headroom — 200m per pod, 400m
|
|
||||||
# for two — not to the old 450m. Limits are unchanged. Each pod reads
|
|
||||||
# the day's manna from the manna-pvc volume and is Ready without the
|
|
||||||
# kohen as long as today's portion was written; the database pool is
|
|
||||||
# 5 per pod (POOL_SIZE in the ConfigMap), 10 in all, under the
|
|
||||||
# hobbyist tier's ceiling.
|
|
||||||
replicas: 2
|
|
||||||
strategy:
|
strategy:
|
||||||
type: RollingUpdate
|
type: RollingUpdate
|
||||||
rollingUpdate:
|
rollingUpdate:
|
||||||
maxSurge: 1
|
maxSurge: 0
|
||||||
maxUnavailable: 0
|
maxUnavailable: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/name: shorashim
|
app.kubernetes.io/name: shorashim
|
||||||
@@ -244,7 +237,7 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "256Mi"
|
memory: "256Mi"
|
||||||
cpu: "120m"
|
cpu: "250m"
|
||||||
limits:
|
limits:
|
||||||
memory: "1Gi"
|
memory: "1Gi"
|
||||||
cpu: "1000m"
|
cpu: "1000m"
|
||||||
@@ -300,8 +293,8 @@ spec:
|
|||||||
mountPath: /tmp
|
mountPath: /tmp
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "64Mi"
|
memory: "128Mi"
|
||||||
cpu: "40m"
|
cpu: "100m"
|
||||||
limits:
|
limits:
|
||||||
memory: "512Mi"
|
memory: "512Mi"
|
||||||
cpu: "500m"
|
cpu: "500m"
|
||||||
@@ -325,8 +318,8 @@ spec:
|
|||||||
mountPath: /tmp
|
mountPath: /tmp
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "64Mi"
|
memory: "128Mi"
|
||||||
cpu: "40m"
|
cpu: "100m"
|
||||||
limits:
|
limits:
|
||||||
memory: "512Mi"
|
memory: "512Mi"
|
||||||
cpu: "500m"
|
cpu: "500m"
|
||||||
Reference in new issue
Block a user