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