apiVersion: v1 kind: Namespace metadata: name: mealie --- apiVersion: v1 kind: Secret metadata: name: mealie-secrets namespace: mealie type: Opaque data: POSTGRES_PASSWORD: RmJsV0xPTlM4alVjNUE= SMTP_PASSWORD: XylSUURvK2ZiXig0eF1eLg== --- apiVersion: v1 kind: ConfigMap metadata: name: mealie-config namespace: mealie data: BASE_URL: "https://mealie.khongisa.co.za" TRUSTED_PROXIES: "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.255.58.144" ALLOW_SIGNUP: "true" PUID: "1000" PGID: "1000" TZ: "Africa/Johannesburg" SMTP_HOST: "mail.mngoma.africa" SMTP_PORT: "465" SMTP_FROM_NAME: "Mealie Recipes" SMTP_FROM_EMAIL: "mealie@mngoma.africa" SMTP_USER: "mealie@mngoma.africa" SMTP_AUTH_STRATEGY: "SSL" 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:52: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