Alvin Wang e07a5e1dfa Initial commit: k3s homelab infrastructure
Helm charts for media stack (Plex, Sonarr, Radarr, etc.), dashboards
(Glance, Homepage), paperless-ngx, mealie, traefik ingress, MetalLB,
and utilities. Includes SOPS-encrypted secrets and bootstrap script.
2026-04-19 19:22:22 -04:00

102 lines
2.3 KiB
YAML

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mealie-data
labels:
app: mealie
spec:
accessModes: [ReadWriteOnce]
storageClassName: {{ .Values.storageClass }}
resources:
requests:
storage: {{ .Values.storageSize }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mealie
labels:
app: mealie
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: mealie
template:
metadata:
labels:
app: mealie
spec:
containers:
- name: mealie
image: {{ .Values.image }}
ports:
- containerPort: 9000
resources:
limits:
memory: {{ .Values.resources.limits.memory }}
env:
- name: PUID
value: {{ .Values.puid | quote }}
- name: PGID
value: {{ .Values.pgid | quote }}
- name: TZ
value: {{ .Values.tz | quote }}
- name: MAX_WORKERS
value: "1"
- name: WEB_CONCURRENCY
value: "1"
- name: ALLOW_SIGNUP
value: "false"
- name: BASE_URL
value: https://mealie.{{ .Values.domain }}
- name: OPENAI_BASE_URL
value: {{ .Values.ai.baseUrl }}
- name: OPENAI_MODEL
value: {{ .Values.ai.model }}
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secretName }}
key: OPENAI_API_KEY
volumeMounts:
- name: data
mountPath: /app/data
volumes:
- name: data
persistentVolumeClaim:
claimName: mealie-data
---
apiVersion: v1
kind: Service
metadata:
name: mealie
spec:
selector:
app: mealie
ports:
- port: 9000
targetPort: 9000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mealie
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls.certresolver: {{ .Values.certResolver }}
spec:
rules:
- host: mealie.{{ .Values.domain }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mealie
port:
number: 9000