--- apiVersion: apps/v1 kind: Deployment metadata: name: web namespace: artifact-keeper labels: app.kubernetes.io/name: artifact-keeper app.kubernetes.io/instance: ak app.kubernetes.io/part-of: artifact-keeper app.kubernetes.io/component: web spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: artifact-keeper app.kubernetes.io/instance: ak app.kubernetes.io/component: web template: metadata: labels: app.kubernetes.io/name: artifact-keeper app.kubernetes.io/instance: ak app.kubernetes.io/component: web spec: automountServiceAccountToken: false securityContext: runAsNonRoot: true runAsUser: 1000 fsGroup: 1000 affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app.kubernetes.io/component operator: In values: - web topologyKey: kubernetes.io/hostname containers: - name: web image: "ghcr.io/artifact-keeper/artifact-keeper-web:dev" imagePullPolicy: Always securityContext: readOnlyRootFilesystem: true allowPrivilegeEscalation: false capabilities: drop: - ALL ports: - name: http containerPort: 3000 protocol: TCP env: - name: NEXT_PUBLIC_API_URL value: "" - name: BACKEND_URL value: "http://backend:8080" - name: NODE_ENV value: "production" resources: limits: cpu: "1" memory: 1Gi requests: cpu: 250m memory: 256Mi readinessProbe: httpGet: path: / port: http initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 5 livenessProbe: httpGet: path: / port: http initialDelaySeconds: 20 periodSeconds: 15 timeoutSeconds: 5 failureThreshold: 5 volumeMounts: - name: tmp mountPath: /tmp - name: nextjs-cache mountPath: /app/.next/cache volumes: - name: tmp emptyDir: sizeLimit: 256Mi - name: nextjs-cache emptyDir: sizeLimit: 1Gi