apiVersion: v1 kind: Namespace metadata: name: mealie --- apiVersion: v1 kind: Secret metadata: name: mealie-secrets namespace: mealie type: Opaque data: # Password Value: RmJsV0xPTlM4alVjNUE= POSTGRES_PASSWORD: RmJsV0xPTlM4alVjNUE= --- apiVersion: v1 kind: ConfigMap metadata: name: mealie-config namespace: mealie data: # Core Settings ALLOW_SIGNUP: "true" PUID: "1000" PGID: "1000" TZ: "Africa/Johannesburg" # Database Settings DB_ENGINE: "postgres" POSTGRES_USER: "mealie_user" POSTGRES_DB: "mealie" POSTGRES_SERVER: "192.168.1.170" POSTGRES_PORT: "5432" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mealie-data-pvc namespace: mealie spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: mealie namespace: mealie spec: replicas: 1 selector: matchLabels: app: mealie template: metadata: labels: app: mealie annotations: last-updated: "2026-04-24T17:20:00" spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/control-plane operator: DoesNotExist containers: - name: mealie image: ghcr.io/mealie-recipes/mealie:latest ports: - containerPort: 9000 envFrom: - configMapRef: name: mealie-config - secretRef: name: mealie-secrets volumeMounts: - name: mealie-data mountPath: /app/data volumes: - name: mealie-data persistentVolumeClaim: claimName: mealie-data-pvc --- apiVersion: v1 kind: Service metadata: name: mealie-service namespace: mealie spec: type: NodePort selector: app: mealie ports: - protocol: TCP port: 80 targetPort: 9000 nodePort: 33007