Files
photos/deploy/chart/templates/deployment-api.yaml
T
nilsandClaude 16d2a56a78
ci / docker (push) Successful in 13s
Initial release: self-hosted client photo gallery
Rust (axum + sqlx) API and worker sharing a Postgres-backed job queue
(SKIP LOCKED, heartbeat, reaper, typed statuses), S3 storage with derived
keys and a fully private bucket, OIDC photographer login with per-request
allowlist checks, client share links with argon2 passwords and lockout,
cookie-based image authorization with sliding expiry, hand-rolled
spec-compliant streaming ZIP downloads with exact Content-Length,
React + Vite gallery frontend, single Docker image, Helm chart for
external S3 + Postgres, and Gitea CI.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-17 13:12:42 +02:00

48 lines
1.4 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "photos.fullname" . }}-api
labels:
{{- include "photos.labels" . | nindent 4 }}
app.kubernetes.io/component: api
spec:
replicas: {{ .Values.api.replicas }}
selector:
matchLabels:
app.kubernetes.io/name: photos
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: api
template:
metadata:
labels:
{{- include "photos.labels" . | nindent 8 }}
app.kubernetes.io/component: api
spec:
containers:
- name: api
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: ["server"]
ports:
- name: http
containerPort: 8080
env:
{{- include "photos.env" . | nindent 12 }}
- name: BIND_ADDR
value: "0.0.0.0:8080"
envFrom:
- secretRef:
name: {{ include "photos.secretName" . }}
readinessProbe:
httpGet:
path: /api/health
port: http
initialDelaySeconds: 3
livenessProbe:
httpGet:
path: /api/health
port: http
initialDelaySeconds: 10
resources:
{{- toYaml .Values.api.resources | nindent 12 }}