feat(ops): define production Kubernetes resources

This commit is contained in:
2026-08-29 05:51:40 +00:00 Unverified
parent 3dc6fe2648
commit 954d886ff7
13 changed files with 396 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: buzz-sheet
labels:
app.kubernetes.io/name: buzz-sheet
app.kubernetes.io/component: web
spec:
replicas: 2
revisionHistoryLimit: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app.kubernetes.io/name: buzz-sheet
app.kubernetes.io/component: web
template:
metadata:
labels:
app.kubernetes.io/name: buzz-sheet
app.kubernetes.io/component: web
spec:
automountServiceAccountToken: false
terminationGracePeriodSeconds: 30
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: buzz-sheet-app
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 3000
protocol: TCP
envFrom:
- configMapRef:
name: buzz-sheet-config
- secretRef:
name: buzz-sheet-env
env:
- name: NEXT_DEPLOYMENT_ID
valueFrom:
configMapKeyRef:
name: buzz-sheet-config
key: NEXT_DEPLOYMENT_ID
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: "1"
memory: 1Gi
startupProbe:
httpGet:
path: /api/health
port: http
failureThreshold: 30
periodSeconds: 2
readinessProbe:
httpGet:
path: /api/health?ready=1
port: http
failureThreshold: 3
periodSeconds: 10
timeoutSeconds: 4
livenessProbe:
httpGet:
path: /api/health
port: http
failureThreshold: 3
periodSeconds: 20
timeoutSeconds: 3
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
readOnlyRootFilesystem: true
volumeMounts:
- name: next-cache
mountPath: /app/.next/cache
- name: temporary
mountPath: /tmp
volumes:
- name: next-cache
emptyDir: {}
- name: temporary
emptyDir: {}