From ae55c9a3b06e645e01abba0738a6ccacfe30c66a Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Fri, 23 Sep 2022 23:30:43 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/mealie/10.0.0/CHANGELOG.md | 99 + stable/mealie/10.0.0/Chart.lock | 9 + stable/mealie/10.0.0/Chart.yaml | 30 + stable/mealie/10.0.0/README.md | 107 + stable/mealie/10.0.0/app-readme.md | 8 + .../mealie/10.0.0/charts/common-10.5.10.tgz | Bin 0 -> 48378 bytes .../10.0.0/charts/postgresql-8.0.78.tgz | Bin 0 -> 51868 bytes stable/mealie/10.0.0/ix_values.yaml | 112 + stable/mealie/10.0.0/questions.yaml | 2966 +++++++++++++++++ stable/mealie/10.0.0/templates/_api.tpl | 44 + stable/mealie/10.0.0/templates/_configmap.tpl | 135 + stable/mealie/10.0.0/templates/_secret.tpl | 24 + stable/mealie/10.0.0/templates/common.yaml | 13 + stable/mealie/10.0.0/values.yaml | 0 14 files changed, 3547 insertions(+) create mode 100644 stable/mealie/10.0.0/CHANGELOG.md create mode 100644 stable/mealie/10.0.0/Chart.lock create mode 100644 stable/mealie/10.0.0/Chart.yaml create mode 100644 stable/mealie/10.0.0/README.md create mode 100644 stable/mealie/10.0.0/app-readme.md create mode 100644 stable/mealie/10.0.0/charts/common-10.5.10.tgz create mode 100644 stable/mealie/10.0.0/charts/postgresql-8.0.78.tgz create mode 100644 stable/mealie/10.0.0/ix_values.yaml create mode 100644 stable/mealie/10.0.0/questions.yaml create mode 100644 stable/mealie/10.0.0/templates/_api.tpl create mode 100644 stable/mealie/10.0.0/templates/_configmap.tpl create mode 100644 stable/mealie/10.0.0/templates/_secret.tpl create mode 100644 stable/mealie/10.0.0/templates/common.yaml create mode 100644 stable/mealie/10.0.0/values.yaml diff --git a/stable/mealie/10.0.0/CHANGELOG.md b/stable/mealie/10.0.0/CHANGELOG.md new file mode 100644 index 00000000000..1fe37bff41d --- /dev/null +++ b/stable/mealie/10.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [mealie-10.0.0](https://github.com/truecharts/charts/compare/mealie-9.0.3...mealie-10.0.0) (2022-09-23) + +### Chore + +- Auto-update chart README [skip ci] + + ### Feat + +- Adapt to the new multi container upstream release ([#3858](https://github.com/truecharts/charts/issues/3858)) + + + + +## [mealie-9.0.3](https://github.com/truecharts/charts/compare/mealie-9.0.2...mealie-9.0.3) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [mealie-9.0.3](https://github.com/truecharts/charts/compare/mealie-9.0.2...mealie-9.0.3) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [mealie-9.0.3](https://github.com/truecharts/charts/compare/mealie-9.0.2...mealie-9.0.3) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [mealie-9.0.3](https://github.com/truecharts/charts/compare/mealie-9.0.2...mealie-9.0.3) (2022-09-20) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] diff --git a/stable/mealie/10.0.0/Chart.lock b/stable/mealie/10.0.0/Chart.lock new file mode 100644 index 00000000000..69bb440889c --- /dev/null +++ b/stable/mealie/10.0.0/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.5.10 +- name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.78 +digest: sha256:5f90f3b1700a44f84fb7bf8b1c844455aa921e7c3e7d188e5b64e38c51429266 +generated: "2022-09-23T23:29:00.750566168Z" diff --git a/stable/mealie/10.0.0/Chart.yaml b/stable/mealie/10.0.0/Chart.yaml new file mode 100644 index 00000000000..900331395a5 --- /dev/null +++ b/stable/mealie/10.0.0/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "1.0.0beta" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.5.10 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.78 +description: Mealie is a self hosted recipe manager and meal planner with a RestAPI backend +home: https://truecharts.org/docs/charts/stable/mealie +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mealie.png +keywords: + - grocy +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mealie +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/mealie + - https://github.com/hay-kot/mealie +version: 10.0.0 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/mealie/10.0.0/README.md b/stable/mealie/10.0.0/README.md new file mode 100644 index 00000000000..43b95d90fec --- /dev/null +++ b/stable/mealie/10.0.0/README.md @@ -0,0 +1,107 @@ +# mealie + +Mealie is a self hosted recipe manager and meal planner with a RestAPI backend + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [mealie](https://truecharts.org/docs/charts/stable/mealie) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.truecharts.org/ | postgresql | 8.0.78 | +| https://library-charts.truecharts.org | common | 10.5.10 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `mealie` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install mealie TrueCharts/mealie +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `mealie` deployment + +```console +helm uninstall mealie +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the values.yaml file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install mealie \ + --set env.TZ="America/New York" \ + TrueCharts/mealie +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install mealie TrueCharts/mealie -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/stable/mealie/10.0.0/app-readme.md b/stable/mealie/10.0.0/app-readme.md new file mode 100644 index 00000000000..f37d3627f24 --- /dev/null +++ b/stable/mealie/10.0.0/app-readme.md @@ -0,0 +1,8 @@ +Mealie is a self hosted recipe manager and meal planner with a RestAPI backend + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/stable/mealie](https://truecharts.org/docs/charts/stable/mealie) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/mealie/10.0.0/charts/common-10.5.10.tgz b/stable/mealie/10.0.0/charts/common-10.5.10.tgz new file mode 100644 index 0000000000000000000000000000000000000000..af170c75a6d72f3af41a3fe5f1fba3b07a19c437 GIT binary patch literal 48378 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 literal 0 HcmV?d00001 diff --git a/stable/mealie/10.0.0/charts/postgresql-8.0.78.tgz b/stable/mealie/10.0.0/charts/postgresql-8.0.78.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ef5433c52fa94e533df53e673aa9a3a4c003f8cd GIT binary patch literal 51868 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
KPcWi?AjRt8dcO>Kj{^;Y=)xFUwY} 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 literal 0 HcmV?d00001 diff --git a/stable/mealie/10.0.0/ix_values.yaml b/stable/mealie/10.0.0/ix_values.yaml new file mode 100644 index 00000000000..dec210d7666 --- /dev/null +++ b/stable/mealie/10.0.0/ix_values.yaml @@ -0,0 +1,112 @@ +image: + repository: tccr.io/truecharts/mealie-frontend + tag: v1.0.0beta@sha256:be031b8c1c6a1698f18e7750a1482ca85f6c311bbb594cf8da46d0e206b0729a + pullPolicy: IfNotPresent + +apiImage: + repository: tccr.io/truecharts/mealie-api + tag: v1.0.0beta@sha256:4dad1521060d896c2e4782f57ca48007e831b2df497746637eb8f2d6a4a23c90 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +mealie_frontend: + theme: + light_primary: "#E58325" + light_accent: "#007A99" + light_secondary: "#973542" + light_success: "#43A047" + light_info: "#1976D2" + light_warning: "#FF6D00" + light_error: "#EF5350" + dark_primary: "#E58325" + dark_accent: "#007A99" + 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: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: mealie + postgresqlDatabase: mealie + +portal: + enabled: true diff --git a/stable/mealie/10.0.0/questions.yaml b/stable/mealie/10.0.0/questions.yaml new file mode 100644 index 00000000000..3fe11f91db7 --- /dev/null +++ b/stable/mealie/10.0.0/questions.yaml @@ -0,0 +1,2966 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: Controller + description: Configure Workload Deployment + - name: Container Configuration + description: Additional Container Configuration + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: Controller + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: Controller + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: Show Advanced Controller Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: Please specify type of workload to deploy + label: (Advanced) Controller Type + schema: + type: string + required: true + enum: + - value: deployment + description: Deployment + - value: statefulset + description: Statefulset + - value: daemonset + description: Daemonset + default: deployment + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: strategy + description: Please specify type of workload to deploy + label: (Advanced) Update Strategy + schema: + type: string + required: true + enum: + - value: Recreate + description: "Recreate: Kill existing pods before creating new ones" + - value: RollingUpdate + description: "RollingUpdate: Create new pods and then kill old ones" + - value: OnDelete + description: "(Legacy) OnDelete: ignore .spec.template changes" + default: Recreate + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Controller Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Controller Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: customextraargs + group: Controller + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - 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: "" + - variable: TZ + label: Timezone + group: Container Configuration + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: Container Configuration + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: expertpodconf + group: Container Configuration + label: Show Expert Configuration + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: Enable TTY + description: Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: stdin + label: Enable STDIN + description: Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: termination + group: Container Configuration + label: Termination settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: Grace Period Seconds + schema: + type: int + default: 10 + - variable: podLabelsList + group: Container Configuration + label: Pod Labels + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: podAnnotationsList + group: Container Configuration + label: Pod Annotations + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main 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: 10018 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: Target Port + description: The internal(!) port on the container the Application runs on + schema: + type: int + default: 3000 + - variable: api + label: API Service + description: The API Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: ClusterIP + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - 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 + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: Target Port + description: The internal(!) port on the container the Application runs on + schema: + type: int + default: 9000 + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: dnsPolicy + group: Networking and Services + label: dnsPolicy + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ClusterFirst + description: ClusterFirst + - value: ClusterFirstWithHostNet + description: ClusterFirstWithHostNet + - value: None + description: None + - variable: dnsConfig + label: DNS Configuration + group: Networking and Services + description: Specify custom DNS configuration which will be applied to the pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: Name Servers + schema: + default: [] + type: list + items: + - variable: nameserver + label: Name Server + schema: + type: string + - variable: options + label: Options + schema: + default: [] + type: list + items: + - variable: option + label: Option Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: searches + label: Searches + schema: + default: [] + type: list + items: + - variable: search + label: Search Entry + schema: + type: string + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Data Storage + description: Stores the Application Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simplePVC + enum: + - value: simplePVC + description: PVC (simple) + - value: simpleHP + description: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 999Gi + - variable: hostPathType + label: (Advanced) hostPath Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) storageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name (Optional) + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simpleHP + enum: + - value: simplePVC + description: PVC (Simple) + - value: simpleHP + description: Host Path (Simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 999Gi + - variable: hostPathType + label: (Advanced) Host Path Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) StorageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: These middlewares enforce a number of best practices. + label: Enable Default Middlewares + schema: + type: boolean + default: true + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: capabilities + label: Capabilities + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: Drop Capability + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: Add Capability + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + + - variable: advancedresources + label: Set Custom Resource Limits/Requests (Advanced) + group: Resources and Devices + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: autoscaling +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: Advanced +# label: (Advanced) Network Policy +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: Policy Type +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: Default +# - value: ingress +# description: Ingress +# - value: egress +# description: Egress +# - value: ingress-egress +# description: Ingress and Egress +# - variable: egress +# label: Egress +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: To +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP +# - variable: ingress +# label: Ingress +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: From +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: Sock5 Server + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: promtail + label: Promtail + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: Loki URL + schema: + type: string + required: true + - variable: logs + label: Log Paths + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: path + label: Path + schema: + type: string + required: true + - variable: args + label: Promtail Command Line Arguments + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + required: true + - variable: envList + label: Promtail Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/docs/about/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/mealie/10.0.0/templates/_api.tpl b/stable/mealie/10.0.0/templates/_api.tpl new file mode 100644 index 00000000000..e4b30bd66b5 --- /dev/null +++ b/stable/mealie/10.0.0/templates/_api.tpl @@ -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 -}} diff --git a/stable/mealie/10.0.0/templates/_configmap.tpl b/stable/mealie/10.0.0/templates/_configmap.tpl new file mode 100644 index 00000000000..6fe7db65a57 --- /dev/null +++ b/stable/mealie/10.0.0/templates/_configmap.tpl @@ -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 -}} diff --git a/stable/mealie/10.0.0/templates/_secret.tpl b/stable/mealie/10.0.0/templates/_secret.tpl new file mode 100644 index 00000000000..a4b535c9079 --- /dev/null +++ b/stable/mealie/10.0.0/templates/_secret.tpl @@ -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 }} diff --git a/stable/mealie/10.0.0/templates/common.yaml b/stable/mealie/10.0.0/templates/common.yaml new file mode 100644 index 00000000000..bd88d41c606 --- /dev/null +++ b/stable/mealie/10.0.0/templates/common.yaml @@ -0,0 +1,13 @@ +{{/* 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" . }} diff --git a/stable/mealie/10.0.0/values.yaml b/stable/mealie/10.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d