Skip to content

Commit c88cc07

Browse files
committed
feat(mealie): deploy
1 parent 87af3ef commit c88cc07

5 files changed

Lines changed: 208 additions & 0 deletions

File tree

kubernetes/apps/default/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ resources:
2323
- ./karakeep/ks.yaml
2424
# - ./mediamanager/ks.yaml
2525
- ./media-smb/ks.yaml
26+
- ./mealie/ks.yaml
2627
- ./memos/ks.yaml
2728
- ./miniflux/ks.yaml
2829
# - ./netbox/ks.yaml
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/external-secrets.io/externalsecret_v1.json
3+
apiVersion: external-secrets.io/v1
4+
kind: ExternalSecret
5+
metadata:
6+
name: mealie
7+
spec:
8+
secretStoreRef:
9+
kind: ClusterSecretStore
10+
name: onepassword
11+
target:
12+
name: mealie
13+
dataFrom:
14+
- extract:
15+
key: mealie
16+
---
17+
# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/external-secrets.io/externalsecret_v1.json
18+
apiVersion: external-secrets.io/v1
19+
kind: ExternalSecret
20+
metadata:
21+
name: mealie-db
22+
spec:
23+
refreshInterval: "0"
24+
secretStoreRef:
25+
kind: ClusterSecretStore
26+
name: onepassword
27+
target:
28+
name: mealie-db
29+
template:
30+
data:
31+
POSTGRES_USER: mealie
32+
POSTGRES_PASSWORD: "{{ .DB_PASSWORD }}"
33+
POSTGRES_SERVER: pg18vc-rw.database.svc.cluster.local
34+
POSTGRES_PORT: "5432"
35+
POSTGRES_DB: mealie
36+
# --
37+
INIT_POSTGRES_DBNAME: mealie
38+
INIT_POSTGRES_HOST: pg18vc-rw.database.svc.cluster.local
39+
INIT_POSTGRES_PASS: "{{ .DB_PASSWORD }}"
40+
INIT_POSTGRES_USER: mealie
41+
dataFrom:
42+
- sourceRef:
43+
generatorRef:
44+
apiVersion: generators.external-secrets.io/v1alpha1
45+
kind: Password
46+
name: password32
47+
rewrite:
48+
- regexp:
49+
source: "password"
50+
target: "DB_PASSWORD"
51+
---
52+
# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/external-secrets.io/externalsecret_v1.json
53+
apiVersion: external-secrets.io/v1
54+
kind: ExternalSecret
55+
metadata:
56+
name: mealie-initdb
57+
spec:
58+
secretStoreRef:
59+
kind: ClusterSecretStore
60+
name: onepassword
61+
target:
62+
name: mealie-initdb
63+
data:
64+
- secretKey: INIT_POSTGRES_SUPER_PASS
65+
remoteRef:
66+
key: cnpg-pg18vc
67+
property: password
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s-labs/helm-charts/refs/heads/main/charts/other/app-template/schemas/helmrelease-helm-v2.schema.json
3+
apiVersion: helm.toolkit.fluxcd.io/v2
4+
kind: HelmRelease
5+
metadata:
6+
name: mealie
7+
spec:
8+
interval: 1h
9+
chartRef:
10+
kind: OCIRepository
11+
name: app-template
12+
namespace: flux-system
13+
driftDetection:
14+
mode: enabled
15+
install:
16+
remediation:
17+
retries: -1
18+
upgrade:
19+
cleanupOnFail: true
20+
remediation:
21+
retries: 3
22+
values:
23+
controllers:
24+
mealie:
25+
annotations:
26+
reloader.stakater.com/auto: "true"
27+
initContainers:
28+
init-db:
29+
image:
30+
repository: ghcr.io/home-operations/postgres-init
31+
tag: 18.2.0@sha256:ae89578925b480f5972f237dda2f7a37efe36aff500d3e7bd1d3a6a3181e4191
32+
envFrom:
33+
- secretRef:
34+
name: mealie-db
35+
- secretRef:
36+
name: mealie-initdb
37+
containers:
38+
mealie:
39+
image:
40+
repository: ghcr.io/mealie-recipes/mealie
41+
tag: v3.11.0@sha256:d99fc2844c04288526d6cbecc9ac1b6c32d8ea6054236d56857107bbaf70ea5c
42+
env:
43+
ALLOW_PASSWORD_LOGIN: "true"
44+
ALLOW_SIGNUP: "false"
45+
API_PORT: &port 9000
46+
BASE_URL: https://mealie.kantai.xyz
47+
DB_ENGINE: postgres
48+
OIDC_ADMIN_GROUP: mealie_admins
49+
OIDC_AUTH_ENABLED: "true"
50+
OIDC_CONFIGURATION_URL: https://pid.kantai.xyz/.well-known/openid-configuration
51+
OIDC_PROVIDER_NAME: Pocket ID
52+
OIDC_REMEMBER_ME: "true"
53+
OIDC_SIGNUP_ENABLED: "true"
54+
OPENAI_MODEL: gpt-5-mini
55+
TZ: America/Los_Angeles
56+
envFrom:
57+
- secretRef:
58+
name: mealie
59+
- secretRef:
60+
name: mealie-db
61+
probes:
62+
liveness: &probe
63+
enabled: true
64+
custom: true
65+
spec:
66+
httpGet:
67+
path: /api/app/about
68+
port: *port
69+
readiness: *probe
70+
securityContext:
71+
allowPrivilegeEscalation: false
72+
capabilities: { drop: ["ALL"] }
73+
readOnlyRootFilesystem: true
74+
pod:
75+
securityContext:
76+
runAsNonRoot: true
77+
runAsUser: 911
78+
runAsGroup: 911
79+
fsGroup: 911
80+
fsGroupChangePolicy: OnRootMismatch
81+
persistence:
82+
data:
83+
existingClaim: "${APP}"
84+
advancedMounts:
85+
mealie:
86+
mealie:
87+
- path: /app/data
88+
route:
89+
mealie:
90+
hostnames:
91+
- mealie.kantai.xyz
92+
parentRefs:
93+
- name: envoy-internal
94+
namespace: network
95+
rules:
96+
- backendRefs:
97+
- identifier: mealie
98+
port: *port
99+
matches:
100+
- path:
101+
type: PathPrefix
102+
value: /
103+
service:
104+
mealie:
105+
controller: mealie
106+
ports:
107+
http:
108+
port: *port
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
# yaml-language-server: $schema=https://json.schemastore.org/kustomization
3+
apiVersion: kustomize.config.k8s.io/v1beta1
4+
kind: Kustomization
5+
resources:
6+
- ./externalsecret.yaml
7+
- ./helmrelease.yaml
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
# yaml-language-server: $schema=https://raw.githubusercontent.com/fluxcd-community/flux2-schemas/main/kustomization-kustomize-v1.json
3+
apiVersion: kustomize.toolkit.fluxcd.io/v1
4+
kind: Kustomization
5+
metadata:
6+
name: &app mealie
7+
spec:
8+
commonMetadata:
9+
labels:
10+
app.kubernetes.io/name: *app
11+
components:
12+
- ../../../../components/volsync
13+
path: ./kubernetes/apps/default/mealie/app
14+
prune: true
15+
sourceRef:
16+
kind: GitRepository
17+
name: flux-system
18+
namespace: flux-system
19+
interval: 1h
20+
retryInterval: 2m
21+
timeout: 5m
22+
postBuild:
23+
substitute:
24+
APP: *app
25+
VOLSYNC_CAPACITY: 100Mi

0 commit comments

Comments
 (0)