Files
k8scd/bolletjestrui/bolletjestrui-deployment.yaml
Ruben Hensen ec5405fc29 bolletjestrui: deploy main-10268f1 (routes, voting, push, ride uploads)
Adds the VAPID keypair for web push and raises the ingress body limit to 25m to
match the app's BODY_SIZE_LIMIT, since a bulk route import posts every GPX in one
request.

The VAPID env refs are optional:true on purpose — a missing key in a secretKeyRef
puts the pod in CreateContainerConfigError, and the app already handles absent
keys by sending no notifications.
2026-08-15 17:55:37 +02:00

99 lines
3.0 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: bolletjestrui
name: bolletjestrui
spec:
replicas: 1
selector:
matchLabels:
app: bolletjestrui
strategy:
type: Recreate
template:
metadata:
labels:
app: bolletjestrui
spec:
containers:
- image: ghcr.io/rubenhensen/bolletjestrui:main-10268f1
name: bolletjestrui
ports:
- containerPort: 3000
protocol: TCP
env:
- name: DATABASE_URL
value: /app/data/bolletjestrui.db
- name: ORIGIN
value: https://vic.rubenhensen.nl
- name: PROTOCOL_HEADER
value: x-forwarded-proto
- name: HOST_HEADER
value: x-forwarded-host
# GPX routes and profile photos (up to 20 MB); raise adapter-node's 512K default
- name: BODY_SIZE_LIMIT
value: "25M"
- name: TZ
value: Europe/Amsterdam
- name: SITE_PASSWORD
valueFrom:
secretKeyRef:
name: bolletjestrui-secrets
key: site_password
- name: ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: bolletjestrui-secrets
key: admin_password
- name: KEY_SECRET
valueFrom:
secretKeyRef:
name: bolletjestrui-secrets
key: key_secret
# Push notifications. optional:true is load-bearing: without it a missing
# key leaves the pod in CreateContainerConfigError and the site is down,
# which would make deploying this depend on the Vault entries landing
# first. The app already treats absent VAPID keys as "send nothing".
- name: VAPID_PUBLIC_KEY
valueFrom:
secretKeyRef:
name: bolletjestrui-secrets
key: vapid_public_key
optional: true
- name: VAPID_PRIVATE_KEY
valueFrom:
secretKeyRef:
name: bolletjestrui-secrets
key: vapid_private_key
optional: true
- name: VAPID_SUBJECT
value: mailto:ruben.hensen@protonmail.com
resources:
requests:
memory: "128Mi"
cpu: "50m"
limits:
memory: "512Mi"
cpu: "500m"
readinessProbe:
httpGet:
path: /login
port: 3000
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /login
port: 3000
initialDelaySeconds: 15
periodSeconds: 20
volumeMounts:
- mountPath: /app/data
name: data
restartPolicy: Always
volumes:
- name: data
persistentVolumeClaim:
claimName: bolletjestrui-data