feat(mealie): Adapt to the new multi container upstream release (#3858)
* feat(mealie): Adapt to the new multi container upstream release * update UI a bit * finish UI * well... also render things * fix configmap and pin images * quote * port * handle int... * moar ints * test again * don't change api_port due to an upstream bug (?) * test * whops * default port * /docs is used for healthcheck (even by the Dockerfile it self) * http probe on frontend
This commit is contained in:
@@ -22,7 +22,7 @@ name: mealie
|
|||||||
sources:
|
sources:
|
||||||
- https://github.com/truecharts/charts/tree/master/charts/stable/mealie
|
- https://github.com/truecharts/charts/tree/master/charts/stable/mealie
|
||||||
- https://github.com/hay-kot/mealie
|
- https://github.com/hay-kot/mealie
|
||||||
version: 9.0.3
|
version: 10.0.0
|
||||||
annotations:
|
annotations:
|
||||||
truecharts.org/catagories: |
|
truecharts.org/catagories: |
|
||||||
- utilities
|
- utilities
|
||||||
|
|||||||
@@ -12,12 +12,297 @@ questions:
|
|||||||
# Include{recreate}
|
# Include{recreate}
|
||||||
# Include{controllerExpert}
|
# Include{controllerExpert}
|
||||||
# Include{controllerExpertExtraArgs}
|
# Include{controllerExpertExtraArgs}
|
||||||
# Docker specific env
|
- variable: mealie_frontend
|
||||||
|
group: Container Configuration
|
||||||
|
label: Mealie Frontend Configuration
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: theme
|
||||||
|
label: Theme
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: light_primary
|
||||||
|
label: Light Primary
|
||||||
|
description: Light Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#E58325"
|
||||||
|
- variable: light_accent
|
||||||
|
label: Light Accent
|
||||||
|
description: Light Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#007A99"
|
||||||
|
- variable: light_secondary
|
||||||
|
label: Light Secondary
|
||||||
|
description: Light Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#973542"
|
||||||
|
- variable: light_success
|
||||||
|
label: Light Success
|
||||||
|
description: Light Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#43A047"
|
||||||
|
- variable: light_info
|
||||||
|
label: Light Info
|
||||||
|
description: Light Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#1976D2"
|
||||||
|
- variable: light_warning
|
||||||
|
label: Light Warning
|
||||||
|
description: Light Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#FF6D00"
|
||||||
|
- variable: light_error
|
||||||
|
label: Light Error
|
||||||
|
description: Light Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#EF5350"
|
||||||
|
- variable: dark_primary
|
||||||
|
label: Dark Primary
|
||||||
|
description: Dark Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#E58325"
|
||||||
|
- variable: dark_accent
|
||||||
|
label: Dark Accent
|
||||||
|
description: Dark Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#007A99"
|
||||||
|
- variable: dark_secondary
|
||||||
|
label: Dark Secondary
|
||||||
|
description: Dark Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#973542"
|
||||||
|
- variable: dark_success
|
||||||
|
label: Dark Success
|
||||||
|
description: Dark Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#43A047"
|
||||||
|
- variable: dark_info
|
||||||
|
label: Dark Info
|
||||||
|
description: Dark Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#1976D2"
|
||||||
|
- variable: dark_warning
|
||||||
|
label: Dark Warning
|
||||||
|
description: Dark Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#FF6D00"
|
||||||
|
- variable: dark_error
|
||||||
|
label: Dark Error
|
||||||
|
description: Dark Theme Config Variable
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "#EF5350"
|
||||||
|
- variable: mealie_frontend
|
||||||
|
group: Container Configuration
|
||||||
|
label: Mealie Frontend Configuration
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: general
|
||||||
|
label: General
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: allow_signup
|
||||||
|
label: Allow Sign up
|
||||||
|
description: Allow user sign-up without token
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
- variable: default_group
|
||||||
|
label: Default Group
|
||||||
|
description: The default group for users
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: Home
|
||||||
|
- variable: default_email
|
||||||
|
label: Default Email
|
||||||
|
description: The default username for the superuser
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: changeme@email.com
|
||||||
|
- variable: base_url
|
||||||
|
label: Base URL
|
||||||
|
description: Used for Notifications
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: token_time
|
||||||
|
label: Token Time
|
||||||
|
description: The time in hours that a login/auth token is valid
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 48
|
||||||
|
- variable: security
|
||||||
|
label: Security
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: max_login_attempts
|
||||||
|
label: Max Login Attempts
|
||||||
|
description: Maximum times a user can provide an invalid password before their account is locked
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 5
|
||||||
|
- variable: user_lockout_time
|
||||||
|
label: User Lockout Time
|
||||||
|
description: Time in hours for how long a users account is locked
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 24
|
||||||
|
- variable: webworkers
|
||||||
|
label: Web Workers
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: workers_per_core
|
||||||
|
label: Workers Per Core
|
||||||
|
description: Set the number of workers to the number of CPU cores multiplied by this value.
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 1
|
||||||
|
- variable: max_workers
|
||||||
|
label: Max Workers
|
||||||
|
description: Set the maximum number of workers to use. Default is not set meaning unlimited.
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 1
|
||||||
|
- variable: web_concurrency
|
||||||
|
label: Web Concurrency
|
||||||
|
description: Override the automatic definition of number of workers.
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 1
|
||||||
|
- variable: smtp
|
||||||
|
label: SMTP
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: user
|
||||||
|
label: User
|
||||||
|
description: Mail User
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: password
|
||||||
|
label: Password
|
||||||
|
description: Mail Password
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
private: true
|
||||||
|
default: ""
|
||||||
|
- variable: host
|
||||||
|
label: Host
|
||||||
|
description: Mail Host
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: port
|
||||||
|
label: Port
|
||||||
|
description: Mail Port
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 587
|
||||||
|
- variable: from_name
|
||||||
|
label: From Name
|
||||||
|
description: Mail From Name
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: Mealie
|
||||||
|
- variable: from_email
|
||||||
|
label: From Email
|
||||||
|
description: Mail From Email
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: auth_strategy
|
||||||
|
label: Auth Strategy
|
||||||
|
description: Mail Auth Strategy
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "TLS"
|
||||||
|
enum:
|
||||||
|
- value: TLS
|
||||||
|
description: TLS
|
||||||
|
- value: SSL
|
||||||
|
description: SSL
|
||||||
|
- value: NONE
|
||||||
|
description: NONE
|
||||||
|
- variable: ldap
|
||||||
|
label: LDAP
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: auth_enabled
|
||||||
|
label: Auth Enabled
|
||||||
|
description: Authenticate via an external LDAP server in addition to built-in Mealie auth
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
- variable: server_url
|
||||||
|
label: Server URL
|
||||||
|
description: LDAP server URL
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: tls_insecure
|
||||||
|
label: TLS Insecure
|
||||||
|
description: Do not verify server certificate when using secure LDAP
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
- variable: tls_cacertfile
|
||||||
|
label: TLS CA Cert File
|
||||||
|
description: File path to Certificate Authority used to verify server certificate
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: bind_template
|
||||||
|
label: Bind Template
|
||||||
|
description: Templated DN for users, {} will be replaced with the username.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: base_dn
|
||||||
|
label: Base DN
|
||||||
|
description: Starting point when searching for users authentication.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: admin_filter
|
||||||
|
label: Admin Filter
|
||||||
|
description: Optional LDAP filter, which tells Mealie the LDAP user .is an admin
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
# Include{containerConfig}
|
# Include{containerConfig}
|
||||||
# Include{serviceRoot}
|
# Include{serviceRoot}
|
||||||
- variable: main
|
- variable: main
|
||||||
label: "Main Service"
|
label: Main Service
|
||||||
description: "The Primary service on which the healthcheck runs, often the webUI"
|
description: The Primary service on which the healthcheck runs, often the webUI
|
||||||
schema:
|
schema:
|
||||||
additional_attrs: true
|
additional_attrs: true
|
||||||
type: dict
|
type: dict
|
||||||
@@ -25,33 +310,62 @@ questions:
|
|||||||
# Include{serviceSelectorLoadBalancer}
|
# Include{serviceSelectorLoadBalancer}
|
||||||
# Include{serviceSelectorExtras}
|
# Include{serviceSelectorExtras}
|
||||||
- variable: main
|
- variable: main
|
||||||
label: "Main Service Port Configuration"
|
label: Main Service Port Configuration
|
||||||
schema:
|
schema:
|
||||||
additional_attrs: true
|
additional_attrs: true
|
||||||
type: dict
|
type: dict
|
||||||
attrs:
|
attrs:
|
||||||
- variable: port
|
- variable: port
|
||||||
label: "Port"
|
label: Port
|
||||||
description: "This port exposes the container port on the service"
|
description: This port exposes the container port on the service
|
||||||
schema:
|
schema:
|
||||||
type: int
|
type: int
|
||||||
default: 10018
|
default: 10018
|
||||||
required: true
|
required: true
|
||||||
# Include{advancedPortHTTP}
|
# Include{advancedPortHTTP}
|
||||||
- variable: targetPort
|
- variable: targetPort
|
||||||
label: "Target Port"
|
label: Target Port
|
||||||
description: "The internal(!) port on the container the Application runs on"
|
description: The internal(!) port on the container the Application runs on
|
||||||
schema:
|
schema:
|
||||||
type: int
|
type: int
|
||||||
default: 80
|
default: 3000
|
||||||
|
- variable: api
|
||||||
|
label: API Service
|
||||||
|
description: The API Service
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
# Include{serviceSelectorClusterIP}
|
||||||
|
# Include{serviceSelectorExtras}
|
||||||
|
- variable: api
|
||||||
|
label: API Service Port Configuration
|
||||||
|
schema:
|
||||||
|
additional_attrs: true
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: port
|
||||||
|
label: Port
|
||||||
|
description: This port exposes the container port on the service
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 10019
|
||||||
|
required: true
|
||||||
|
# Include{advancedPortHTTP}
|
||||||
|
- variable: targetPort
|
||||||
|
label: Target Port
|
||||||
|
description: The internal(!) port on the container the Application runs on
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 9000
|
||||||
# Include{serviceExpertRoot}
|
# Include{serviceExpertRoot}
|
||||||
default: false
|
default: false
|
||||||
# Include{serviceExpert}
|
# Include{serviceExpert}
|
||||||
# Include{serviceList}
|
# Include{serviceList}
|
||||||
# Include{persistenceRoot}
|
# Include{persistenceRoot}
|
||||||
- variable: config
|
- variable: data
|
||||||
label: "App Config Storage"
|
label: App Data Storage
|
||||||
description: "Stores the Application Configuration."
|
description: Stores the Application Data.
|
||||||
schema:
|
schema:
|
||||||
additional_attrs: true
|
additional_attrs: true
|
||||||
type: dict
|
type: dict
|
||||||
@@ -61,7 +375,7 @@ questions:
|
|||||||
# Include{persistenceList}
|
# Include{persistenceList}
|
||||||
# Include{ingressRoot}
|
# Include{ingressRoot}
|
||||||
- variable: main
|
- variable: main
|
||||||
label: "Main Ingress"
|
label: Main Ingress
|
||||||
schema:
|
schema:
|
||||||
additional_attrs: true
|
additional_attrs: true
|
||||||
type: dict
|
type: dict
|
||||||
@@ -74,42 +388,42 @@ questions:
|
|||||||
# Include{security}
|
# Include{security}
|
||||||
# Include{securityContextAdvancedRoot}
|
# Include{securityContextAdvancedRoot}
|
||||||
- variable: privileged
|
- variable: privileged
|
||||||
label: "Privileged mode"
|
label: Privileged mode
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
- variable: readOnlyRootFilesystem
|
- variable: readOnlyRootFilesystem
|
||||||
label: "ReadOnly Root Filesystem"
|
label: ReadOnly Root Filesystem
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
- variable: allowPrivilegeEscalation
|
- variable: allowPrivilegeEscalation
|
||||||
label: "Allow Privilege Escalation"
|
label: Allow Privilege Escalation
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
- variable: runAsNonRoot
|
- variable: runAsNonRoot
|
||||||
label: "runAsNonRoot"
|
label: runAsNonRoot
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
# Include{securityContextAdvanced}
|
# Include{securityContextAdvanced}
|
||||||
# Include{podSecurityContextRoot}
|
# Include{podSecurityContextRoot}
|
||||||
- variable: runAsUser
|
- variable: runAsUser
|
||||||
label: "runAsUser"
|
label: runAsUser
|
||||||
description: "The UserID of the user running the application"
|
description: The UserID of the user running the application
|
||||||
schema:
|
schema:
|
||||||
type: int
|
type: int
|
||||||
default: 0
|
default: 0
|
||||||
- variable: runAsGroup
|
- variable: runAsGroup
|
||||||
label: "runAsGroup"
|
label: runAsGroup
|
||||||
description: "The groupID this App of the user running the application"
|
description: The groupID this App of the user running the application
|
||||||
schema:
|
schema:
|
||||||
type: int
|
type: int
|
||||||
default: 0
|
default: 0
|
||||||
- variable: fsGroup
|
- variable: fsGroup
|
||||||
label: "fsGroup"
|
label: fsGroup
|
||||||
description: "The group that should own ALL storage."
|
description: The group that should own ALL storage.
|
||||||
schema:
|
schema:
|
||||||
type: int
|
type: int
|
||||||
default: 568
|
default: 568
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{{- define "mealie.api" -}}
|
||||||
|
image: {{ .Values.apiImage.repository }}:{{ .Values.apiImage.tag }}
|
||||||
|
imagePullPolicy: {{ .Values.apiImage.pullPolicy }}
|
||||||
|
securityContext:
|
||||||
|
runAsUser: {{ .Values.podSecurityContext.runAsUser }}
|
||||||
|
runAsGroup: {{ .Values.podSecurityContext.runAsGroup }}
|
||||||
|
readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilesystem }}
|
||||||
|
runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }}
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: '{{ include "tc.common.names.fullname" . }}-api-secret'
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ include "tc.common.names.fullname" . }}-api-config'
|
||||||
|
volumeMounts:
|
||||||
|
- name: data
|
||||||
|
mountPath: "/app/data"
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /docs
|
||||||
|
port: {{ .Values.service.api.ports.api.targetPort }}
|
||||||
|
{{/* port: {{ .Values.service.api.ports.api.targetPort }} */}}
|
||||||
|
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
|
||||||
|
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
|
||||||
|
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /docs
|
||||||
|
port: {{ .Values.service.api.ports.api.targetPort }}
|
||||||
|
{{/* port: {{ .Values.service.api.ports.api.targetPort }} */}}
|
||||||
|
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
|
||||||
|
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
|
||||||
|
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
|
||||||
|
startupProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /docs
|
||||||
|
port: {{ .Values.service.api.ports.api.targetPort }}
|
||||||
|
{{/* port: {{ .Values.service.api.ports.api.targetPort }} */}}
|
||||||
|
initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }}
|
||||||
|
periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }}
|
||||||
|
failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
{{/* Define the configmap */}}
|
||||||
|
{{- define "mealie.config" -}}
|
||||||
|
|
||||||
|
{{- $frontendConfigName := printf "%s-frontend-config" (include "tc.common.names.fullname" .) }}
|
||||||
|
{{- $apiConfigName := printf "%s-api-config" (include "tc.common.names.fullname" .) }}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ $frontendConfigName }}
|
||||||
|
labels:
|
||||||
|
{{- include "tc.common.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
API_URL: http://localhost:{{ .Values.service.api.ports.api.targetPort }}
|
||||||
|
{{/* https://github.com/hay-kot/mealie/issues/1666 */}}
|
||||||
|
{{/* API_URL: http://localhost:{{ .Values.service.api.ports.api.port }} */}}
|
||||||
|
THEME_LIGHT_PRIMARY: {{ .Values.mealie_frontend.theme.light_primary | default "#E58325" | quote }}
|
||||||
|
THEME_LIGHT_ACCENT: {{ .Values.mealie_frontend.theme.light_accent | default "#007A99" | quote }}
|
||||||
|
THEME_LIGHT_SECONDARY: {{ .Values.mealie_frontend.theme.light_secondary | default "#973542" | quote }}
|
||||||
|
THEME_LIGHT_SUCCESS: {{ .Values.mealie_frontend.theme.light_success | default "#43A047" | quote }}
|
||||||
|
THEME_LIGHT_INFO: {{ .Values.mealie_frontend.theme.light_info | default "#1976D2" | quote }}
|
||||||
|
THEME_LIGHT_WARNING: {{ .Values.mealie_frontend.theme.light_warning | default "#FF6D00" | quote }}
|
||||||
|
THEME_LIGHT_ERROR: {{ .Values.mealie_frontend.theme.light_error | default "#EF5350" | quote }}
|
||||||
|
THEME_DARK_PRIMARY: {{ .Values.mealie_frontend.theme.dark_primary | default "#E58325" | quote }}
|
||||||
|
THEME_DARK_ACCENT: {{ .Values.mealie_frontend.theme.dark_accent | default "#007A99" | quote }}
|
||||||
|
THEME_DARK_SECONDARY: {{ .Values.mealie_frontend.theme.dark_secondary | default "#973542" | quote }}
|
||||||
|
THEME_DARK_SUCCESS: {{ .Values.mealie_frontend.theme.dark_success | default "#43A047" | quote }}
|
||||||
|
THEME_DARK_INFO: {{ .Values.mealie_frontend.theme.dark_info | default "#1976D2" | quote }}
|
||||||
|
THEME_DARK_WARNING: {{ .Values.mealie_frontend.theme.dark_warning | default "#FF6D00" | quote }}
|
||||||
|
THEME_DARK_ERROR: {{ .Values.mealie_frontend.theme.dark_error | default "#EF5350" | quote }}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ $apiConfigName }}
|
||||||
|
labels:
|
||||||
|
{{- include "tc.common.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
PUID: {{ .Values.security.PUID | quote }}
|
||||||
|
PGID: {{ .Values.podSecurityContext.fsGroup | quote }}
|
||||||
|
TZ: {{ .Values.TZ }}
|
||||||
|
DB_ENGINE: "postgres"
|
||||||
|
POSTGRES_PORT: "5432"
|
||||||
|
POSTGRES_USER: {{ .Values.postgresql.postgresqlUsername }}
|
||||||
|
POSTGRES_DB: {{ .Values.postgresql.postgresqlDatabase }}
|
||||||
|
POSTGRES_SERVER: {{ printf "%v-%v" .Release.Name "postgresql" }}
|
||||||
|
API_PORT: {{ .Values.service.api.ports.api.targetPort | quote }}
|
||||||
|
{{/* https://github.com/hay-kot/mealie/issues/1666 */}}
|
||||||
|
{{/* API_PORT: {{ .Values.service.api.ports.api.port | quote }} */}}
|
||||||
|
{{/* User Defined */}}
|
||||||
|
{{/* General */}}
|
||||||
|
ALLOW_SIGNUP: {{ .Values.mealie_backend.general.allow_signup | quote }}
|
||||||
|
API_DOCS: "true"
|
||||||
|
{{- with .Values.mealie_backend.general.default_group }}
|
||||||
|
DEFAULT_GROUP: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.general.default_email }}
|
||||||
|
DEFAULT_EMAIL: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.general.base_url }}
|
||||||
|
BASE_URL: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if hasKey .Values.mealie_backend.general "token_time" }}
|
||||||
|
{{- if or .Values.mealie_backend.general.token_time (eq 0 (int .Values.mealie_backend.general.token_time)) }}
|
||||||
|
TOKEN_TIME: {{ .Values.mealie_backend.general.token_time | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{/* Security */}}
|
||||||
|
{{- if hasKey .Values.mealie_backend.security "max_login_attempts" }}
|
||||||
|
{{- if or .Values.mealie_backend.security.max_login_attempts (eq 0 (int .Values.mealie_backend.security.max_login_attempts)) }}
|
||||||
|
SECURITY_MAX_LOGIN_ATTEMPTS: {{ .Values.mealie_backend.security.max_login_attempts | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if hasKey .Values.mealie_backend.security "user_lockout_time" }}
|
||||||
|
{{- if or .Values.mealie_backend.security.user_lockout_time (eq 0 (int .Values.mealie_backend.security.user_lockout_time)) }}
|
||||||
|
SECURITY_USER_LOCKOUT_TIME: {{ .Values.mealie_backend.security.user_lockout_time | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{/* Security */}}
|
||||||
|
{{- if hasKey .Values.mealie_backend.webworkers "workers_per_core" }}
|
||||||
|
{{- if or .Values.mealie_backend.webworkers.workers_per_core (eq 0 (int .Values.mealie_backend.webworkers.workers_per_core)) }}
|
||||||
|
WORKERS_PER_CORE: {{ .Values.mealie_backend.webworkers.workers_per_core | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if hasKey .Values.mealie_backend.webworkers "max_workers" }}
|
||||||
|
{{- if or .Values.mealie_backend.webworkers.max_workers (eq 0 (int .Values.mealie_backend.webworkers.max_workers)) }}
|
||||||
|
MAX_WORKERS: {{ .Values.mealie_backend.webworkers.max_workers | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if hasKey .Values.mealie_backend.webworkers "web_concurrency" }}
|
||||||
|
{{- if or .Values.mealie_backend.webworkers.web_concurrency (eq 0 (int .Values.mealie_backend.webworkers.web_concurrency)) }}
|
||||||
|
WEB_CONCURRENCY: {{ .Values.mealie_backend.webworkers.web_concurrency | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{/* SMTP */}}
|
||||||
|
{{- if hasKey .Values.mealie_backend.smtp "port" }}
|
||||||
|
{{- if or .Values.mealie_backend.smtp.port (eq 0 (int .Values.mealie_backend.smtp.port)) }}
|
||||||
|
SMTP_PORT: {{ .Values.mealie_backend.smtp.port | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.smtp.host }}
|
||||||
|
SMTP_HOST: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.smtp.from_name }}
|
||||||
|
SMTP_FROM_NAME: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.smtp.auth_strategy }}
|
||||||
|
SMTP_AUTH_STRATEGY: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.smtp.from_email }}
|
||||||
|
SMTP_FROM_EMAIL: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{/* SMTP */}}
|
||||||
|
LDAP_AUTH_ENABLED: {{ .Values.mealie_backend.ldap.auth_enabled | quote }}
|
||||||
|
LDAP_TLS_INSECURE: {{ .Values.mealie_backend.ldap.tls_insecure | quote }}
|
||||||
|
{{- with .Values.mealie_backend.ldap.server_url }}
|
||||||
|
LDAP_SERVER_URL: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.ldap.tls_cacertfile }}
|
||||||
|
LDAP_TLS_CACERTFILE: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.ldap.bind_template }}
|
||||||
|
LDAP_BIND_TEMPLATE: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.ldap.base_dn }}
|
||||||
|
LDAP_BASE_DN: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.ldap.admin_filter }}
|
||||||
|
LDAP_ADMIN_FILTER: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{{/* Define the secret */}}
|
||||||
|
{{- define "mealie.secret" -}}
|
||||||
|
|
||||||
|
{{- $apiSecretName := printf "%s-api-secret" (include "tc.common.names.fullname" .) }}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
{{/* This secrets are loaded on both main authentik container and worker */}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
type: Opaque
|
||||||
|
metadata:
|
||||||
|
name: {{ $apiSecretName }}
|
||||||
|
labels:
|
||||||
|
{{- include "tc.common.labels" . | nindent 4 }}
|
||||||
|
data:
|
||||||
|
POSTGRES_PASSWORD: {{ .Values.postgresql.postgresqlPassword | trimAll "\"" | b64enc }}
|
||||||
|
{{- with .Values.mealie_backend.smtp.user | b64enc }}
|
||||||
|
SMTP_USER: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.mealie_backend.smtp.password | b64enc }}
|
||||||
|
SMTP_PASSWORD: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -1 +1,13 @@
|
|||||||
{{ include "tc.common.loader.all" . }}
|
{{/* Make sure all variables are set properly */}}
|
||||||
|
{{- include "tc.common.loader.init" . }}
|
||||||
|
|
||||||
|
{{/* Render secret */}}
|
||||||
|
{{- include "mealie.secret" . }}
|
||||||
|
|
||||||
|
{{/* Render config */}}
|
||||||
|
{{- include "mealie.config" . }}
|
||||||
|
|
||||||
|
{{- $_ := set .Values.additionalContainers "api" (include "mealie.api" . | fromYaml) -}}
|
||||||
|
|
||||||
|
{{/* Render the templates */}}
|
||||||
|
{{ include "tc.common.loader.apply" . }}
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
image:
|
image:
|
||||||
repository: tccr.io/truecharts/mealie
|
repository: tccr.io/truecharts/mealie-frontend
|
||||||
tag: v0.5.6@sha256:e54cf37a3da0d6853197c200ddbb858de03e0f12752c1f862856376b0733af0a
|
tag: v1.0.0beta@sha256:be031b8c1c6a1698f18e7750a1482ca85f6c311bbb594cf8da46d0e206b0729a
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
apiImage:
|
||||||
|
repository: tccr.io/truecharts/mealie-api
|
||||||
|
tag: v1.0.0beta@sha256:4dad1521060d896c2e4782f57ca48007e831b2df497746637eb8f2d6a4a23c90
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
securityContext:
|
securityContext:
|
||||||
@@ -11,18 +16,91 @@ podSecurityContext:
|
|||||||
runAsUser: 0
|
runAsUser: 0
|
||||||
runAsGroup: 0
|
runAsGroup: 0
|
||||||
|
|
||||||
env:
|
mealie_frontend:
|
||||||
DB_ENGINE: postgres
|
theme:
|
||||||
POSTGRES_DB: "{{ .Values.postgresql.postgresqlDatabase }}"
|
light_primary: "#E58325"
|
||||||
POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}"
|
light_accent: "#007A99"
|
||||||
POSTGRES_PASSWORD:
|
light_secondary: "#973542"
|
||||||
secretKeyRef:
|
light_success: "#43A047"
|
||||||
name: dbcreds
|
light_info: "#1976D2"
|
||||||
key: postgresql-password
|
light_warning: "#FF6D00"
|
||||||
POSTGRES_SERVER:
|
light_error: "#EF5350"
|
||||||
secretKeyRef:
|
dark_primary: "#E58325"
|
||||||
name: dbcreds
|
dark_accent: "#007A99"
|
||||||
key: plainporthost
|
dark_secondary: "#973542"
|
||||||
|
dark_success: "#43A047"
|
||||||
|
dark_info: "#1976D2"
|
||||||
|
dark_warning: "#FF6D00"
|
||||||
|
dark_error: "#EF5350"
|
||||||
|
|
||||||
|
mealie_backend:
|
||||||
|
general:
|
||||||
|
allow_signup: true
|
||||||
|
default_group: Home
|
||||||
|
default_email: changeme@email.com
|
||||||
|
base_url: ""
|
||||||
|
token_time: 48
|
||||||
|
security:
|
||||||
|
max_login_attempts: 5
|
||||||
|
user_lockout_time: 24
|
||||||
|
webworkers:
|
||||||
|
workers_per_core: 1
|
||||||
|
max_workers: 1
|
||||||
|
web_concurrency: 1
|
||||||
|
smtp:
|
||||||
|
user: ""
|
||||||
|
password: ""
|
||||||
|
host: ""
|
||||||
|
port: 587
|
||||||
|
from_name: Mealie
|
||||||
|
from_email: ""
|
||||||
|
# TLS | SSL | NONE
|
||||||
|
auth_strategy: TLS
|
||||||
|
ldap:
|
||||||
|
auth_enabled: false
|
||||||
|
server_url: ""
|
||||||
|
tls_insecure: false
|
||||||
|
tls_cacertfile: ""
|
||||||
|
bind_template: ""
|
||||||
|
base_dn: ""
|
||||||
|
admin_filter: ""
|
||||||
|
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: '{{ include "tc.common.names.fullname" . }}-frontend-config'
|
||||||
|
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
type: HTTP
|
||||||
|
path: "/"
|
||||||
|
readiness:
|
||||||
|
type: HTTP
|
||||||
|
path: "/"
|
||||||
|
startup:
|
||||||
|
type: HTTP
|
||||||
|
path: "/"
|
||||||
|
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
ports:
|
||||||
|
main:
|
||||||
|
port: 10018
|
||||||
|
protocol: HTTP
|
||||||
|
targetPort: 3000
|
||||||
|
api:
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
api:
|
||||||
|
enabled: true
|
||||||
|
protocol: HTTP
|
||||||
|
port: 10019
|
||||||
|
targetPort: 9000
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
data:
|
||||||
|
enabled: true
|
||||||
|
mountPath: "/app/data"
|
||||||
|
|
||||||
postgresql:
|
postgresql:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -30,17 +108,5 @@ postgresql:
|
|||||||
postgresqlUsername: mealie
|
postgresqlUsername: mealie
|
||||||
postgresqlDatabase: mealie
|
postgresqlDatabase: mealie
|
||||||
|
|
||||||
service:
|
|
||||||
main:
|
|
||||||
ports:
|
|
||||||
main:
|
|
||||||
port: 10018
|
|
||||||
targetPort: 80
|
|
||||||
|
|
||||||
persistence:
|
|
||||||
config:
|
|
||||||
enabled: true
|
|
||||||
mountPath: "/app/data"
|
|
||||||
|
|
||||||
portal:
|
portal:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
@@ -209,6 +209,7 @@ words:
|
|||||||
- serverstransports
|
- serverstransports
|
||||||
- serviceexpert
|
- serviceexpert
|
||||||
- sgateway
|
- sgateway
|
||||||
|
- signup
|
||||||
- smallblock
|
- smallblock
|
||||||
- somefile
|
- somefile
|
||||||
- somethingelse
|
- somethingelse
|
||||||
@@ -259,6 +260,7 @@ words:
|
|||||||
- webpanel
|
- webpanel
|
||||||
- websecure
|
- websecure
|
||||||
- websockets
|
- websockets
|
||||||
|
- webworkers
|
||||||
- weejewel
|
- weejewel
|
||||||
- wger
|
- wger
|
||||||
- whisparr
|
- whisparr
|
||||||
|
|||||||
Reference in New Issue
Block a user