NoN-CTF/k8s/chal5-elfs-blog.yaml
2026-07-12 20:32:52 +01:00

75 lines
1.9 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: chal5-elfs-blog
namespace: ctf
labels: { app: chal5-elfs-blog }
spec:
replicas: 1 # keep at 1: writes comments.json to local fs
selector:
matchLabels: { app: chal5-elfs-blog }
template:
metadata:
labels: { app: chal5-elfs-blog }
spec:
containers:
- name: app
image: ctf-elfs-blog:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
env:
- name: FLAG
valueFrom:
secretKeyRef: { name: ctf-flags, key: chal5-flag }
- name: ADMIN_BOT_ENABLED
value: "1"
- name: ADMIN_BOT_INTERVAL
value: "15"
- name: BASE_URL
value: "http://127.0.0.1:80"
resources:
requests: { cpu: "100m", memory: "256Mi" }
limits: { cpu: "1", memory: "1Gi" } # headless Chromium is memory-hungry
# Chromium is launched with --disable-dev-shm-usage, so a large /dev/shm
# is not strictly required, but this avoids the default 64Mi shm limit.
volumeMounts:
- name: dshm
mountPath: /dev/shm
volumes:
- name: dshm
emptyDir:
medium: Memory
sizeLimit: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: chal5-elfs-blog
namespace: ctf
spec:
selector: { app: chal5-elfs-blog }
ports:
- port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: chal5-elfs-blog
namespace: ctf
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
ingressClassName: traefik
rules:
- host: chal5.entysec.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: chal5-elfs-blog
port: { number: 80 }