Files

212 lines
6.5 KiB
YAML

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
nodeSelector:
kubernetes.io/arch: arm64
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
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
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: DATABASE_URL
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: REDIS_URL
- name: S3_ENDPOINT
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: S3_ENDPOINT
- name: S3_PUBLIC_URL
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: S3_PUBLIC_URL
- name: S3_BUCKET
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: S3_BUCKET
- name: S3_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: S3_ACCESS_KEY_ID
- name: S3_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: S3_SECRET_ACCESS_KEY
- name: BETTER_AUTH_SECRET
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: BETTER_AUTH_SECRET
- name: RESEND_API_KEY
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: RESEND_API_KEY
- name: TURNSTILE_SITE_KEY
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: TURNSTILE_SITE_KEY
- name: TURNSTILE_SECRET_KEY
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: TURNSTILE_SECRET_KEY
- name: COMMISSION_PROMPTPAY_TYPE
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: COMMISSION_PROMPTPAY_TYPE
- name: COMMISSION_PROMPTPAY_VALUE
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: COMMISSION_PROMPTPAY_VALUE
- name: COMMISSION_RECEIVER_ACCOUNT_NUMBER
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: COMMISSION_RECEIVER_ACCOUNT_NUMBER
- name: SLIP2GO_VERIFY_URL
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: SLIP2GO_VERIFY_URL
- name: SLIP2GO_API_SECRET
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: SLIP2GO_API_SECRET
- name: COMMISSION_DISCORD_WEBHOOK_URL
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: COMMISSION_DISCORD_WEBHOOK_URL
optional: true
- name: WEB_PUSH_PUBLIC_KEY
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: WEB_PUSH_PUBLIC_KEY
optional: true
- name: WEB_PUSH_PRIVATE_KEY
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: WEB_PUSH_PRIVATE_KEY
optional: true
- name: WEB_PUSH_SUBJECT
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: WEB_PUSH_SUBJECT
optional: true
- name: NEXT_SERVER_ACTIONS_ENCRYPTION_KEY
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: NEXT_SERVER_ACTIONS_ENCRYPTION_KEY
- name: NEXT_DEPLOYMENT_ID
valueFrom:
configMapKeyRef:
name: buzz-sheet-config
key: NEXT_DEPLOYMENT_ID
- name: DEPLOYMENT_WEBHOOK_SECRET
valueFrom:
secretKeyRef:
name: buzz-sheet-env
key: DEPLOYMENT_WEBHOOK_SECRET
optional: true
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: "1"
memory: 2Gi
startupProbe:
httpGet:
path: /api/healthz
port: http
failureThreshold: 30
periodSeconds: 2
readinessProbe:
httpGet:
path: /api/healthz
port: http
failureThreshold: 3
periodSeconds: 10
timeoutSeconds: 4
livenessProbe:
httpGet:
path: /api/healthz
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: {}