Files
schemas-app/k8s/deploy.yaml
T
argoyleandClaude Opus 5.5 1646ee1bc3 feat: deploy to Frostmoln production
The AWS deploy-prod job has failed since CI left AWS (no k8s.unbound.se
context on the runners). Deploys now go to the Frostmoln production
cluster (namespace schemas), the way the sites do.

Frostmoln enforces restricted Pod Security: the pod runs as the image's
non-root user with a matching securityContext. The prod-only manifests
move to the prod-frostmoln target; the ALB ingress becomes a Traefik one
with a Let's Encrypt certificate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ma8eHhW59hLAJuLzBnLvUu
2026-10-14 22:15:38 +02:00

88 lines
2.0 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: schemas-app
labels:
app.kubernetes.io/name: schemas-app
annotations:
kubernetes.io/change-cause: "${TIMESTAMP} Deployed commit id: ${COMMIT}"
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 30
selector:
matchLabels:
app.kubernetes.io/name: schemas-app
template:
metadata:
labels:
app.kubernetes.io/name: schemas-app
app.kubernetes.io/instance: schemas
spec:
securityContext:
runAsNonRoot: true
runAsUser: 101
seccompProfile:
type: RuntimeDefault
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: "app.kubernetes.io/name"
operator: In
values:
- schemas-app
topologyKey: kubernetes.io/hostname
containers:
- name: schemas-app
image: ${IMAGE}
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 5
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
resources:
requests:
cpu: 10m
memory: 10Mi
limits:
memory: 300Mi
---
apiVersion: v1
kind: Service
metadata:
name: schemas-app
labels:
app.kubernetes.io/name: schemas-app
spec:
selector:
app.kubernetes.io/name: schemas-app
ports:
- port: 80
targetPort: 8080