migate mealie

This commit is contained in:
Morten Olsen
2026-01-02 13:22:34 +01:00
parent d150b96082
commit bec0a6face
7 changed files with 82 additions and 148 deletions

View File

@@ -1,3 +1,7 @@
apiVersion: v2
version: 1.0.0
name: mealie
dependencies:
- name: common
version: 1.0.0
repository: file://../../common

View File

@@ -1,10 +1 @@
apiVersion: homelab.mortenolsen.pro/v1
kind: OidcClient
metadata:
name: "{{ .Release.Name }}"
spec:
environment: "{{ .Values.globals.environment }}"
redirectUris:
- path: /login
subdomain: "{{ .Values.subdomain }}"
matchingMode: strict
{{ include "common.oidc" . }}

View File

@@ -1,73 +1 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
replicas: 1
revisionHistoryLimit: 0
selector:
matchLabels:
app: "{{ .Release.Name }}"
template:
metadata:
labels:
app: "{{ .Release.Name }}"
spec:
containers:
- name: "{{ .Release.Name }}"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: 9000
name: http
env:
- name: TZ
value: "{{ .Values.globals.timezone }}"
- name: BASE_URL
value: https://{{ .Values.subdomain }}.{{ .Values.globals.domain }}
- name: ALLOW_SIGNUP
value: "false"
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: OIDC_AUTH_ENABLED
value: "true"
- name: OIDC_SIGNUP_ENABLED
value: "true"
- name: OIDC_USER_GROUP
value: "mealie-users"
- name: OIDC_ADMIN_GROUP
value: "admin"
- name: OIDC_AUTO_REDIRECT
value: "true"
- name: OIDC_PROVIDER_NAME
value: Authentik
- name: OIDC_REMEMBER_ME
value: "true"
- name: OIDC_SIGNING_ALGORITHM
value: RS256
- name: OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: clientId
- name: OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: clientSecret
- name: OIDC_CONFIGURATION_URL
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-client"
key: configuration
volumeMounts:
- mountPath: /app/data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-data"
{{ include "common.deployment" . }}

View File

@@ -1,11 +1 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: '{{ .Release.Name }}-data'
spec:
accessModes:
- 'ReadWriteOnce'
resources:
requests:
storage: '1Gi'
storageClassName: '{{ .Values.globals.environment }}'
{{ include "common.pvc" . }}

View File

@@ -1,15 +1 @@
apiVersion: v1
kind: Service
metadata:
name: "{{ .Release.Name }}"
labels:
app: "{{ .Release.Name }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 9000
protocol: TCP
name: http
selector:
app: "{{ .Release.Name }}"
{{ include "common.service" . }}

View File

@@ -1,39 +1 @@
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-public"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.public }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: "{{ .Release.Name }}-private"
namespace: "{{ .Release.Namespace }}"
spec:
gateways:
- "{{ .Values.globals.istio.gateways.private }}"
- mesh
hosts:
- "{{ .Values.subdomain }}.{{ .Values.globals.domain }}"
- mesh
http:
- route:
- destination:
host: "{{ .Release.Name }}"
port:
number: 80
{{ include "common.virtualService" . }}

View File

@@ -1,4 +1,77 @@
subdomain: mealie
image:
repository: ghcr.io/mealie-recipes/mealie
tag: latest@sha256:8c5c7765ca5f7f3070f08482aca8102c2b43193777fe958e06d86b153ec18f5f
pullPolicy: IfNotPresent
# Deployment configuration
deployment:
strategy: Recreate
replicas: 1
# Container configuration
container:
port: 9000
healthProbe:
type: tcpSocket
port: http # Use named port
# Service configuration
service:
port: 80
type: ClusterIP
# Volume configuration
volumes:
- name: data
mountPath: /app/data
persistentVolumeClaim: data
# Persistent volume claims
persistentVolumeClaims:
- name: data
size: 1Gi
# VirtualService configuration
virtualService:
enabled: true
gateways:
public: true
private: true
# OIDC client configuration
oidc:
enabled: true
redirectUris:
- "/login"
subjectMode: user_username
# Environment variables
env:
TZ:
value: "{timezone}"
BASE_URL:
value: "https://{subdomain}.{domain}"
ALLOW_SIGNUP: "false"
PUID: "1000"
PGID: "1000"
OIDC_AUTH_ENABLED: "true"
OIDC_SIGNUP_ENABLED: "true"
OIDC_USER_GROUP: "mealie-users"
OIDC_ADMIN_GROUP: "admin"
OIDC_AUTO_REDIRECT: "true"
OIDC_PROVIDER_NAME: Authentik
OIDC_REMEMBER_ME: "true"
OIDC_SIGNING_ALGORITHM: RS256
OIDC_CLIENT_ID:
valueFrom:
secretKeyRef:
name: "{release}-oidc-credentials"
key: clientId
OIDC_CLIENT_SECRET:
valueFrom:
secretKeyRef:
name: "{release}-oidc-credentials"
key: clientSecret
OIDC_CONFIGURATION_URL: "https://auth.{domain}/application/o/{namespace}-{release}/.well-known/openid-configuration" # TODO: fix!