Bake L1 Torah into container images, simplify K8s deployment
L1 (29MB, 5860 files) is read-only and immutable — it belongs inside the image, not on a separate volume. The scroll is sealed in the aron. It ships with the vessel. - All 4 Dockerfiles: COPY l1/ /mnt/torah/ in runtime stage - deployment.yaml: Removed L1 PVC volume and all L1 volumeMounts - deployment.yaml: Added imagePullSecrets for registry auth - deployment.yaml: Manna uses emptyDir (kohen writes via kubectl cp) - No CSI driver needed — eliminates Exoscale block storage dependency Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
50547ed0c5
commit
2f1205eef1
5 files changed
+26
-38
No files matched your search
@@ -29,6 +29,10 @@ COPY --from=build --chown=shorashim:shorashim /app/ ./
|
|||||||
COPY --from=build /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/
|
COPY --from=build /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/
|
||||||
|
|
||||||
ENV PYTHONPATH=/home/shorashim/korban_processor/src
|
ENV PYTHONPATH=/home/shorashim/korban_processor/src
|
||||||
|
|
||||||
|
# L1 Torah filesystem — baked into the image
|
||||||
|
COPY --chown=shorashim:shorashim l1/ /mnt/torah/
|
||||||
|
|
||||||
ENV L1_MOUNT_POINT=/mnt/torah
|
ENV L1_MOUNT_POINT=/mnt/torah
|
||||||
|
|
||||||
# The korban processor is invoked by the vav_pipeline
|
# The korban processor is invoked by the vav_pipeline
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ WORKDIR /home/shorashim
|
|||||||
|
|
||||||
COPY --from=build /usr/local/bin/shoresh-engine ./shoresh-engine
|
COPY --from=build /usr/local/bin/shoresh-engine ./shoresh-engine
|
||||||
|
|
||||||
# L1 mount point — the engine reads Torah roots from L1
|
# L1 Torah filesystem — baked into the image
|
||||||
|
COPY --chown=shorashim:shorashim l1/ /mnt/torah/
|
||||||
|
|
||||||
|
# L1 mount point
|
||||||
ENV L1_MOUNT_POINT=/mnt/torah
|
ENV L1_MOUNT_POINT=/mnt/torah
|
||||||
|
|
||||||
# The engine is invoked as an Erlang Port by vav_pipeline
|
# The engine is invoked as an Erlang Port by vav_pipeline
|
||||||
|
|||||||
@@ -21,7 +21,10 @@ WORKDIR /home/shorashim/talmudic_engine
|
|||||||
|
|
||||||
COPY --from=build --chown=shorashim:shorashim /app/ ./
|
COPY --from=build --chown=shorashim:shorashim /app/ ./
|
||||||
|
|
||||||
# L1 mount point — Prolog reads Torah for mitzvot and root data
|
# L1 Torah filesystem — baked into the image
|
||||||
|
COPY --chown=shorashim:shorashim l1/ /mnt/torah/
|
||||||
|
|
||||||
|
# L1 mount point
|
||||||
ENV L1_MOUNT_POINT=/mnt/torah
|
ENV L1_MOUNT_POINT=/mnt/torah
|
||||||
|
|
||||||
# Socket path for communication with vav_pipeline
|
# Socket path for communication with vav_pipeline
|
||||||
|
|||||||
@@ -51,8 +51,11 @@ WORKDIR /home/shorashim
|
|||||||
COPY --from=build --chown=shorashim:shorashim \
|
COPY --from=build --chown=shorashim:shorashim \
|
||||||
/app/vav_pipeline/_build/prod/rel/vav_pipeline ./app
|
/app/vav_pipeline/_build/prod/rel/vav_pipeline ./app
|
||||||
|
|
||||||
# L1 mount point — read-only volume in production
|
# L1 Torah filesystem — baked into the image (read-only, ~29MB)
|
||||||
# Mounted at /mnt/torah in K8s, configured via L1_MOUNT_POINT env var
|
# The scroll is sealed in the aron. It ships with the vessel.
|
||||||
|
COPY --chown=shorashim:shorashim l1/ /mnt/torah/
|
||||||
|
|
||||||
|
# L1 mount point
|
||||||
ENV L1_MOUNT_POINT=/mnt/torah
|
ENV L1_MOUNT_POINT=/mnt/torah
|
||||||
|
|
||||||
# Manna provision file location
|
# Manna provision file location
|
||||||
|
|||||||
@@ -1,16 +1,13 @@
|
|||||||
# Shorashim Deployment — the mishkan
|
# Shorashim Deployment — the mishkan
|
||||||
#
|
#
|
||||||
|
# Shemot 40:33 — Vay'khal Mosheh et ham'lakhah.
|
||||||
|
#
|
||||||
# Architecture §5.1: All inter-component communication uses
|
# Architecture §5.1: All inter-component communication uses
|
||||||
# JSON over Unix domain sockets or Erlang distribution protocol.
|
# JSON over Unix domain sockets or Erlang distribution protocol.
|
||||||
# No HTTP between internal components.
|
# No HTTP between internal components.
|
||||||
#
|
#
|
||||||
# The vav_pipeline (BEAM) runs the Sanhedrin, Chatzotzrot,
|
# L1 Torah is baked into each container image (~29MB).
|
||||||
# AreiMiklat, EglahArufah, Bikurim, MannaLedger, ShabbatTimer.
|
# The scroll is sealed in the aron. It ships with the vessel.
|
||||||
# The shoresh-engine runs as a sidecar (Erlang Port).
|
|
||||||
# The talmudic_engine runs as a sidecar (Unix socket).
|
|
||||||
# The korban_processor runs as a sidecar (invoked by pipeline).
|
|
||||||
#
|
|
||||||
# L1 is mounted read-only into all containers.
|
|
||||||
---
|
---
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
@@ -32,18 +29,17 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
# --- VOLUMES ---
|
# --- VOLUMES ---
|
||||||
volumes:
|
volumes:
|
||||||
- name: l1-torah
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: l1-torah-pvc
|
|
||||||
readOnly: true
|
|
||||||
- name: manna
|
- name: manna
|
||||||
persistentVolumeClaim:
|
emptyDir: {}
|
||||||
claimName: manna-pvc
|
|
||||||
- name: talmudic-socket
|
- name: talmudic-socket
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
- name: tmp-shorashim
|
- name: tmp-shorashim
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
|
|
||||||
|
# --- IMAGE PULL SECRET ---
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: shorashim-registry
|
||||||
|
|
||||||
# --- INIT CONTAINER: Run L3 migrations ---
|
# --- INIT CONTAINER: Run L3 migrations ---
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: migrate
|
- name: migrate
|
||||||
@@ -54,10 +50,6 @@ spec:
|
|||||||
name: shorashim-config
|
name: shorashim-config
|
||||||
- secretRef:
|
- secretRef:
|
||||||
name: shorashim-secrets
|
name: shorashim-secrets
|
||||||
volumeMounts:
|
|
||||||
- name: l1-torah
|
|
||||||
mountPath: /mnt/torah
|
|
||||||
readOnly: true
|
|
||||||
|
|
||||||
# --- CONTAINERS ---
|
# --- CONTAINERS ---
|
||||||
containers:
|
containers:
|
||||||
@@ -72,13 +64,7 @@ spec:
|
|||||||
name: shorashim-config
|
name: shorashim-config
|
||||||
- secretRef:
|
- secretRef:
|
||||||
name: shorashim-secrets
|
name: shorashim-secrets
|
||||||
env:
|
|
||||||
- name: SHORESH_ENGINE_BINARY
|
|
||||||
value: "/home/shorashim/shoresh-engine"
|
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: l1-torah
|
|
||||||
mountPath: /mnt/torah
|
|
||||||
readOnly: true
|
|
||||||
- name: manna
|
- name: manna
|
||||||
mountPath: /var/lib/shorashim/manna
|
mountPath: /var/lib/shorashim/manna
|
||||||
- name: talmudic-socket
|
- name: talmudic-socket
|
||||||
@@ -108,10 +94,6 @@ spec:
|
|||||||
# === SHORESH ENGINE (sidecar) ===
|
# === SHORESH ENGINE (sidecar) ===
|
||||||
- name: shoresh-engine
|
- name: shoresh-engine
|
||||||
image: exo.container-registry.com/the-recognition-protocol/shoresh-engine:latest
|
image: exo.container-registry.com/the-recognition-protocol/shoresh-engine:latest
|
||||||
volumeMounts:
|
|
||||||
- name: l1-torah
|
|
||||||
mountPath: /mnt/torah
|
|
||||||
readOnly: true
|
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "128Mi"
|
memory: "128Mi"
|
||||||
@@ -124,9 +106,6 @@ spec:
|
|||||||
- name: talmudic-engine
|
- name: talmudic-engine
|
||||||
image: exo.container-registry.com/the-recognition-protocol/talmudic-engine:latest
|
image: exo.container-registry.com/the-recognition-protocol/talmudic-engine:latest
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: l1-torah
|
|
||||||
mountPath: /mnt/torah
|
|
||||||
readOnly: true
|
|
||||||
- name: talmudic-socket
|
- name: talmudic-socket
|
||||||
mountPath: /tmp/shorashim
|
mountPath: /tmp/shorashim
|
||||||
resources:
|
resources:
|
||||||
@@ -140,10 +119,6 @@ spec:
|
|||||||
# === KORBAN PROCESSOR (sidecar) ===
|
# === KORBAN PROCESSOR (sidecar) ===
|
||||||
- name: korban-processor
|
- name: korban-processor
|
||||||
image: exo.container-registry.com/the-recognition-protocol/korban-processor:latest
|
image: exo.container-registry.com/the-recognition-protocol/korban-processor:latest
|
||||||
volumeMounts:
|
|
||||||
- name: l1-torah
|
|
||||||
mountPath: /mnt/torah
|
|
||||||
readOnly: true
|
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: "128Mi"
|
memory: "128Mi"
|
||||||
|
|||||||
Reference in new issue
Block a user