Backend deployed as {{ include "backend.fullname" . }} ({{ .Values.replicaCount }} replica{{ if ne (int .Values.replicaCount) 1 }}s{{ end }}). {{- if .Values.migrationJob.enabled }} Migrations (backend/migrations) ran as a pre-install/pre-upgrade hook. {{- else }} migrationJob.enabled is false -- you must run backend/migrations against DATABASE_URL yourself before the API will work against an empty database. {{- end }} {{- if .Values.seedJob.enabled }} The initial admin account was created by the post-install seed Job. Check its logs for the username (`kubectl logs job/{{ include "backend.fullname" . }}-seed -n {{ .Release.Namespace }}`) -- it will NOT run again on upgrade, and re-enabling it once the admin already exists will fail the Job. {{- end }} This chart creates no ingress: routing is done by the ingressroute chart (charts/ingressroute), which claims "/api/" and "/uploads/" for this Service on the same host as the frontend. In-cluster, the API is reachable at: http://{{ include "backend.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.port }} {{- if eq .Values.env.MEDIA_STORAGE_DRIVER "local" }} MEDIA_STORAGE_DRIVER=local: uploaded files live on PersistentVolumeClaims (uploads: {{ if .Values.persistence.uploads.enabled }}{{ .Values.persistence.uploads.size }}{{ else }}DISABLED -- uploads will be lost on pod restart{{ end }}, verification: {{ if .Values.persistence.verification.enabled }}{{ .Values.persistence.verification.size }}{{ else }}DISABLED -- files will be lost on pod restart{{ end }}). This only works correctly with replicaCount=1 / autoscaling disabled. Switch to MEDIA_STORAGE_DRIVER=s3 before scaling beyond one replica. {{- end }}