# Bikoret Services # Operations spec §1.1: Four access tiers # - Pe'ah (public, no auth) # - Machaneh Leviyah (authenticated) # - Chatzer (full access) # - Kodesh (operator, mTLS) # # All tiers go through a single Service → vav-pipeline port 4000 --- apiVersion: v1 kind: Service metadata: name: shorashim namespace: shorashim labels: app.kubernetes.io/name: shorashim spec: type: ClusterIP selector: app.kubernetes.io/name: shorashim ports: - port: 80 targetPort: 4000 protocol: TCP name: http --- # ============================================================ # The gate to the world — through the shared ingress # ============================================================ # # Until 2026-10-06 Bikoret had its own LoadBalancer Service # (`shorashim-external`, NLB 185.19.29.180, NodePort 30923). It is gone: # one NLB per Service was a third of the account's bill, and the pod saw # every caller as the node (kube-proxy SNAT) so the pe'ah's per-IP watch # could not tell callers apart. The ingress-nginx Service is already # externalTrafficPolicy: Local with its health-check port open, so the # controller sees the caller and hands it on in X-Real-IP; the pipeline # believes that header only from TRUSTED_PROXIES (configmap.yaml). # # Two rules, one backend: # - no host → the catch-all: http:///... works with no DNS # - shorashim.ch → ready for the A record (KOHEN.md Day 8). TLS is NOT # requested here: asking cert-manager for a certificate before the # name resolves only burns Let's Encrypt's failed-validation limit. # When the record exists add: # metadata.annotations: # cert-manager.io/cluster-issuer: letsencrypt-prod # nginx.ingress.kubernetes.io/ssl-redirect: "true" # spec.tls: [{hosts: [shorashim.ch], secretName: shorashim-tls}] # and point callers at https://shorashim.ch — until then the # courtyard keys travel over plain HTTP. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: shorashim namespace: shorashim labels: app.kubernetes.io/name: shorashim annotations: # A 71-judge Sanhedrin may deliberate for ten minutes (Construction §2.2). nginx.ingress.kubernetes.io/proxy-read-timeout: "620" nginx.ingress.kubernetes.io/proxy-send-timeout: "620" # The bedikah accepts 65,536 bytes of output and 1 MiB of sources; # leave room for the envelope. nginx.ingress.kubernetes.io/proxy-body-size: "2m" nginx.ingress.kubernetes.io/ssl-redirect: "false" spec: ingressClassName: nginx rules: - http: paths: - path: / pathType: Prefix backend: service: name: shorashim port: number: 80 - host: shorashim.ch http: paths: - path: / pathType: Prefix backend: service: name: shorashim port: number: 80