From ab1c9cb481285e5f8fb9db61d3604302d3664f61 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Fri, 9 Sep 2022 20:28:12 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/nextcloud/15.3.10/CHANGELOG.md | 99 + stable/nextcloud/15.3.10/Chart.lock | 15 + stable/nextcloud/15.3.10/Chart.yaml | 45 + stable/nextcloud/15.3.10/README.md | 112 + stable/nextcloud/15.3.10/app-readme.md | 8 + .../charts/collabora-online-12.1.37.tgz | Bin 0 -> 59257 bytes .../15.3.10/charts/common-10.5.6.tgz | Bin 0 -> 48176 bytes .../15.3.10/charts/postgresql-8.0.69.tgz | Bin 0 -> 56436 bytes .../nextcloud/15.3.10/charts/redis-3.0.67.tgz | Bin 0 -> 57080 bytes stable/nextcloud/15.3.10/ci/basic-values.yaml | 11 + stable/nextcloud/15.3.10/ix_values.yaml | 457 +++ stable/nextcloud/15.3.10/questions.yaml | 2884 +++++++++++++++++ .../15.3.10/templates/_configmap.tpl | 36 + .../nextcloud/15.3.10/templates/_cronjob.tpl | 64 + stable/nextcloud/15.3.10/templates/_hpb.tpl | 164 + .../15.3.10/templates/_imaginary.tpl | 40 + stable/nextcloud/15.3.10/templates/_nginx.tpl | 54 + .../nextcloud/15.3.10/templates/common.yaml | 22 + stable/nextcloud/15.3.10/values.yaml | 0 stable/traefik/13.3.6/CHANGELOG.md | 99 + stable/traefik/13.3.6/Chart.lock | 6 + stable/traefik/13.3.6/Chart.yaml | 31 + stable/traefik/13.3.6/README.md | 110 + stable/traefik/13.3.6/app-readme.md | 8 + .../traefik/13.3.6/charts/common-10.5.7.tgz | Bin 0 -> 48175 bytes stable/traefik/13.3.6/crds/ingressroute.yaml | 209 ++ .../traefik/13.3.6/crds/ingressroutetcp.yaml | 169 + .../traefik/13.3.6/crds/ingressrouteudp.yaml | 87 + stable/traefik/13.3.6/crds/middlewares.yaml | 587 ++++ .../traefik/13.3.6/crds/middlewarestcp.yaml | 61 + .../13.3.6/crds/serverstransports.yaml | 108 + stable/traefik/13.3.6/crds/tlsoptions.yaml | 92 + stable/traefik/13.3.6/crds/tlsstores.yaml | 68 + .../traefik/13.3.6/crds/traefikservices.yaml | 289 ++ stable/traefik/13.3.6/ix_values.yaml | 387 +++ stable/traefik/13.3.6/questions.yaml | 2817 ++++++++++++++++ stable/traefik/13.3.6/templates/_args.tpl | 166 + stable/traefik/13.3.6/templates/_helpers.tpl | 22 + .../13.3.6/templates/_ingressclass.tpl | 24 + .../13.3.6/templates/_ingressroute.tpl | 25 + .../traefik/13.3.6/templates/_portalhook.tpl | 26 + .../traefik/13.3.6/templates/_tlsoptions.tpl | 12 + stable/traefik/13.3.6/templates/common.yaml | 24 + .../middlewares/basic-middleware.yaml | 62 + .../templates/middlewares/basicauth.yaml | 34 + .../13.3.6/templates/middlewares/chain.yaml | 21 + .../templates/middlewares/forwardauth.yaml | 30 + .../templates/middlewares/ipwhitelist.yaml | 33 + .../templates/middlewares/ratelimit.yaml | 19 + .../templates/middlewares/redirectScheme.yaml | 19 + .../templates/middlewares/redirectregex.yaml | 20 + .../middlewares/stripPrefixRegex.yaml | 20 + .../templates/middlewares/tc-chains.yaml | 29 + .../templates/middlewares/tc-headers.yaml | 62 + .../templates/middlewares/tc-nextcloud.yaml | 25 + .../templates/middlewares/theme-park.yaml | 26 + stable/traefik/13.3.6/values.yaml | 0 57 files changed, 9838 insertions(+) create mode 100644 stable/nextcloud/15.3.10/CHANGELOG.md create mode 100644 stable/nextcloud/15.3.10/Chart.lock create mode 100644 stable/nextcloud/15.3.10/Chart.yaml create mode 100644 stable/nextcloud/15.3.10/README.md create mode 100644 stable/nextcloud/15.3.10/app-readme.md create mode 100644 stable/nextcloud/15.3.10/charts/collabora-online-12.1.37.tgz create mode 100644 stable/nextcloud/15.3.10/charts/common-10.5.6.tgz create mode 100644 stable/nextcloud/15.3.10/charts/postgresql-8.0.69.tgz create mode 100644 stable/nextcloud/15.3.10/charts/redis-3.0.67.tgz create mode 100644 stable/nextcloud/15.3.10/ci/basic-values.yaml create mode 100644 stable/nextcloud/15.3.10/ix_values.yaml create mode 100644 stable/nextcloud/15.3.10/questions.yaml create mode 100644 stable/nextcloud/15.3.10/templates/_configmap.tpl create mode 100644 stable/nextcloud/15.3.10/templates/_cronjob.tpl create mode 100644 stable/nextcloud/15.3.10/templates/_hpb.tpl create mode 100644 stable/nextcloud/15.3.10/templates/_imaginary.tpl create mode 100644 stable/nextcloud/15.3.10/templates/_nginx.tpl create mode 100644 stable/nextcloud/15.3.10/templates/common.yaml create mode 100644 stable/nextcloud/15.3.10/values.yaml create mode 100644 stable/traefik/13.3.6/CHANGELOG.md create mode 100644 stable/traefik/13.3.6/Chart.lock create mode 100644 stable/traefik/13.3.6/Chart.yaml create mode 100644 stable/traefik/13.3.6/README.md create mode 100644 stable/traefik/13.3.6/app-readme.md create mode 100644 stable/traefik/13.3.6/charts/common-10.5.7.tgz create mode 100644 stable/traefik/13.3.6/crds/ingressroute.yaml create mode 100644 stable/traefik/13.3.6/crds/ingressroutetcp.yaml create mode 100644 stable/traefik/13.3.6/crds/ingressrouteudp.yaml create mode 100644 stable/traefik/13.3.6/crds/middlewares.yaml create mode 100644 stable/traefik/13.3.6/crds/middlewarestcp.yaml create mode 100644 stable/traefik/13.3.6/crds/serverstransports.yaml create mode 100644 stable/traefik/13.3.6/crds/tlsoptions.yaml create mode 100644 stable/traefik/13.3.6/crds/tlsstores.yaml create mode 100644 stable/traefik/13.3.6/crds/traefikservices.yaml create mode 100644 stable/traefik/13.3.6/ix_values.yaml create mode 100644 stable/traefik/13.3.6/questions.yaml create mode 100644 stable/traefik/13.3.6/templates/_args.tpl create mode 100644 stable/traefik/13.3.6/templates/_helpers.tpl create mode 100644 stable/traefik/13.3.6/templates/_ingressclass.tpl create mode 100644 stable/traefik/13.3.6/templates/_ingressroute.tpl create mode 100644 stable/traefik/13.3.6/templates/_portalhook.tpl create mode 100644 stable/traefik/13.3.6/templates/_tlsoptions.tpl create mode 100644 stable/traefik/13.3.6/templates/common.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/basic-middleware.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/basicauth.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/chain.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/forwardauth.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/ipwhitelist.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/ratelimit.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/redirectScheme.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/redirectregex.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/stripPrefixRegex.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/tc-chains.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/tc-headers.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/tc-nextcloud.yaml create mode 100644 stable/traefik/13.3.6/templates/middlewares/theme-park.yaml create mode 100644 stable/traefik/13.3.6/values.yaml diff --git a/stable/nextcloud/15.3.10/CHANGELOG.md b/stable/nextcloud/15.3.10/CHANGELOG.md new file mode 100644 index 00000000000..44104cbf91f --- /dev/null +++ b/stable/nextcloud/15.3.10/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [nextcloud-15.3.10](https://github.com/truecharts/charts/compare/nextcloud-15.3.9...nextcloud-15.3.10) (2022-09-09) + +### Chore + +- doc polishing ([#3725](https://github.com/truecharts/charts/issues/3725)) + + + + +## [nextcloud-15.3.9](https://github.com/truecharts/charts/compare/nextcloud-15.3.8...nextcloud-15.3.9) (2022-09-07) + +### Chore + +- Auto-update chart README [skip ci] + - update docker general non-major ([#3710](https://github.com/truecharts/charts/issues/3710)) + + + + +## [nextcloud-15.3.9](https://github.com/truecharts/charts/compare/nextcloud-15.3.8...nextcloud-15.3.9) (2022-09-06) + +### Chore + +- update docker general non-major ([#3710](https://github.com/truecharts/charts/issues/3710)) + + + + +## [nextcloud-15.3.8](https://github.com/truecharts/charts/compare/nextcloud-15.3.7...nextcloud-15.3.8) (2022-09-03) + +### Chore + +- update docker general non-major ([#3668](https://github.com/truecharts/charts/issues/3668)) + + + + +## [nextcloud-15.3.7](https://github.com/truecharts/charts/compare/nextcloud-15.3.6...nextcloud-15.3.7) (2022-09-02) + +### Chore + +- update docker general non-major ([#3660](https://github.com/truecharts/charts/issues/3660)) + + ### Docs + +- add more docs + + + + +## [nextcloud-15.3.6](https://github.com/truecharts/charts/compare/nextcloud-15.3.4...nextcloud-15.3.6) (2022-08-30) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) + - update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) + + + + +## [nextcloud-15.3.5](https://github.com/truecharts/charts/compare/nextcloud-15.3.4...nextcloud-15.3.5) (2022-08-30) + +### Chore + +- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) + + + + +## [nextcloud-15.3.4](https://github.com/truecharts/charts/compare/nextcloud-15.3.3...nextcloud-15.3.4) (2022-08-30) + +### Chore + +- update helm general non-major ([#3624](https://github.com/truecharts/charts/issues/3624)) + + + + +## [nextcloud-15.3.3](https://github.com/truecharts/charts/compare/nextcloud-15.3.1...nextcloud-15.3.3) (2022-08-29) + +### Chore + +- update docker general non-major ([#3620](https://github.com/truecharts/charts/issues/3620)) + - update helm general non-major ([#3621](https://github.com/truecharts/charts/issues/3621)) + - update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) + + + + +## [nextcloud-15.3.1](https://github.com/truecharts/charts/compare/nextcloud-15.3.0...nextcloud-15.3.1) (2022-08-27) + + + + diff --git a/stable/nextcloud/15.3.10/Chart.lock b/stable/nextcloud/15.3.10/Chart.lock new file mode 100644 index 00000000000..cc39c0c6e99 --- /dev/null +++ b/stable/nextcloud/15.3.10/Chart.lock @@ -0,0 +1,15 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.5.6 +- name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.69 +- name: collabora-online + repository: https://charts.truecharts.org/ + version: 12.1.37 +- name: redis + repository: https://charts.truecharts.org + version: 3.0.67 +digest: sha256:1ce785eec10e00f242264eb8c336077ce9e98dc51bddb8a33a098b773911b711 +generated: "2022-09-09T20:21:41.315526143Z" diff --git a/stable/nextcloud/15.3.10/Chart.yaml b/stable/nextcloud/15.3.10/Chart.yaml new file mode 100644 index 00000000000..049cdbf660c --- /dev/null +++ b/stable/nextcloud/15.3.10/Chart.yaml @@ -0,0 +1,45 @@ +apiVersion: v2 +appVersion: "24.0.4" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.5.6 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.69 + - condition: collabora.enabled + name: collabora-online + repository: https://charts.truecharts.org/ + version: 12.1.37 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 3.0.67 +deprecated: false +description: A private cloud server that puts the control and security of your own data back into your hands. +home: https://truecharts.org/docs/charts/stable/nextcloud +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nextcloud.png +keywords: + - nextcloud + - storage + - http + - web + - php +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: nextcloud +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/nextcloud + - https://github.com/nextcloud/docker + - https://github.com/nextcloud/helm +type: application +version: 15.3.10 +annotations: + truecharts.org/catagories: | + - cloud + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/nextcloud/15.3.10/README.md b/stable/nextcloud/15.3.10/README.md new file mode 100644 index 00000000000..789ebc81b06 --- /dev/null +++ b/stable/nextcloud/15.3.10/README.md @@ -0,0 +1,112 @@ +# nextcloud + +![Version: 15.3.10](https://img.shields.io/badge/Version-15.3.10-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 24.0.4](https://img.shields.io/badge/AppVersion-24.0.4-informational?style=flat-square) + +A private cloud server that puts the control and security of your own data back into your hands. + +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: [nextcloud](https://truecharts.org/docs/charts/stable/nextcloud) + +**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/ | collabora-online | 12.1.37 | +| https://charts.truecharts.org/ | postgresql | 8.0.69 | +| https://charts.truecharts.org | redis | 3.0.67 | +| https://library-charts.truecharts.org | common | 10.5.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Installing-an-App). + +### Helm + +To install the chart with the release name `nextcloud` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install nextcloud TrueCharts/nextcloud +``` + +## 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/Quick-Start%20Guides/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `nextcloud` deployment + +```console +helm uninstall nextcloud +``` + +## 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 nextcloud \ + --set env.TZ="America/New York" \ + TrueCharts/nextcloud +``` + +#### 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 nextcloud TrueCharts/nextcloud -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/Quick-Start%20Guides/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/stable/nextcloud/15.3.10/app-readme.md b/stable/nextcloud/15.3.10/app-readme.md new file mode 100644 index 00000000000..47480dc3484 --- /dev/null +++ b/stable/nextcloud/15.3.10/app-readme.md @@ -0,0 +1,8 @@ +A private cloud server that puts the control and security of your own data back into your hands. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/stable/nextcloud](https://truecharts.org/docs/charts/stable/nextcloud) + +--- + +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/nextcloud/15.3.10/charts/collabora-online-12.1.37.tgz b/stable/nextcloud/15.3.10/charts/collabora-online-12.1.37.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1bc8ed9d61cb3870d9ea753d4a651685901bfda2 GIT binary patch literal 59257 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%0D#1AX%ulOWWbBnc9F790F-J%0)!zJSZ8b00| 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 literal 0 HcmV?d00001 diff --git a/stable/nextcloud/15.3.10/charts/postgresql-8.0.69.tgz b/stable/nextcloud/15.3.10/charts/postgresql-8.0.69.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0b98e94f79de5ced188840c935a844dd80ec2f41 GIT binary patch literal 56436 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ȺEoYoP>ko#QZUK8dQ{_ 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

YaXLVht~MeFRBZ4l;^CdIHOkj}LesY<{T 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 literal 0 HcmV?d00001 diff --git a/stable/nextcloud/15.3.10/ci/basic-values.yaml b/stable/nextcloud/15.3.10/ci/basic-values.yaml new file mode 100644 index 00000000000..0e1ca145546 --- /dev/null +++ b/stable/nextcloud/15.3.10/ci/basic-values.yaml @@ -0,0 +1,11 @@ +env: + # IP used for exposing nextcloud + # Often the service or nodePort IP + AccessIP: "127.0.0.1" + +service: + main: + ports: + main: + port: 8080 + targetPort: 8080 diff --git a/stable/nextcloud/15.3.10/ix_values.yaml b/stable/nextcloud/15.3.10/ix_values.yaml new file mode 100644 index 00000000000..a3cb4aaf669 --- /dev/null +++ b/stable/nextcloud/15.3.10/ix_values.yaml @@ -0,0 +1,457 @@ +image: + repository: tccr.io/truecharts/nextcloud-fpm + pullPolicy: IfNotPresent + tag: 24.0.4@sha256:2ec9476042f3e0734168ce62df0891811bc21965639a0d24483d3e2fca9596e0 + +nginxImage: + repository: tccr.io/truecharts/nginx-unprivileged + pullPolicy: IfNotPresent + tag: 1.23.1@sha256:b608a81e03a65c9b16e6b813f83af22d3feb968465a89d32c45c6554c41d97de + +imaginaryImage: + repository: h2non/imaginary + pullPolicy: IfNotPresent + tag: 1.2.4@sha256:7facb4221047a5e79b9e902f380247f4e5bf4376400d0badbeb738d3e1c2f654 + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + fsGroup: 33 + +service: + main: + ports: + main: + port: 10020 + targetPort: 8080 + backend: + enabled: true + ports: + hpb: + enabled: true + port: 7867 + targetPort: 7867 + hpb-metrics: + enabled: true + port: 7868 + targetPort: 7868 + fpm: + enabled: true + port: 9000 + targetPort: 9000 + imaginary: + enabled: true + port: 9090 + targetPort: 9090 + +hostAliases: + - ip: '{{ .Values.env.AccessIP | default "127.0.0.1" }}' + hostnames: + - "{{ if .Values.ingress.main.enabled }}{{ with (first .Values.ingress.main.hosts) }}{{ .host }}{{ end }}{{ else }}placeholder.fakedomain.dns{{ end }}" + +secretEnv: + NEXTCLOUD_ADMIN_USER: "admin" + NEXTCLOUD_ADMIN_PASSWORD: "adminpass" + +probes: + liveness: + custom: true + spec: + initialDelaySeconds: 25 + httpGet: + path: /status.php + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + + readiness: + custom: true + spec: + initialDelaySeconds: 25 + httpGet: + path: /status.php + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + + startup: + custom: true + spec: + initialDelaySeconds: 25 + httpGet: + path: /status.php + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + +initContainers: + prestart: + image: '{{ include "tc.common.images.selector" . }}' + securityContext: + runAsUser: 0 + runAsGroup: 0 + privileged: true + command: + - "/bin/sh" + - "-c" + - | + /bin/bash <<'EOF' + echo "Forcing permissions on userdata folder..." + if nfs4xdr_getfacl && nfs4xdr_getfacl | grep -qv "Failed to get NFSv4 ACL"; then + echo "NFSv4 ACLs detected, Trying to override permissions using nfs4_setfacl..." + nfs4_setfacl -R -a A:g:33:RWX "/var/www/html/data" + else + echo "No NFSv4 ACLs detected, trying to override permissions using chown/chmod..." + echo "checking ownership..." + if [ $(stat -c %g .) -eq 33 ]; then + echo "Ownership already set to 33, skipping..." + else + echo "Changing ownership to group 33..." + chown -R :33 "/var/www/html/data" + fi + chmod 770 /var/www/html/data + fi + EOF + + volumeMounts: + - name: data + mountPath: "/var/www/html/data" + - name: html + mountPath: "/var/www/html" + +env: + # IP used for exposing nextcloud + # Often the service or nodePort IP + # Defaults to the main serviceName for CI purposes. + AccessIP: + NEXTCLOUD_INIT_HTACCESS: true + PHP_MEMORY_LIMIT: 1G + PHP_UPLOAD_LIMIT: 10G + NEXTCLOUD_CHUNKSIZE: "31457280" + TRUSTED_PROXIES: "172.16.0.0/16 127.0.0.1" + POSTGRES_DB: "{{ .Values.postgresql.postgresqlDatabase }}" + POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}" + NC_check_data_directory_permissions: "true" + POSTGRES_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + POSTGRES_HOST: + secretKeyRef: + name: dbcreds + key: plainporthost + REDIS_HOST: + secretKeyRef: + name: rediscreds + key: plainhost + REDIS_HOST_PASSWORD: + secretKeyRef: + name: rediscreds + key: redis-password + +envFrom: + - configMapRef: + name: nextcloudconfig + +persistence: + html: + enabled: true + mountPath: "/var/www/html" + data: + enabled: true + mountPath: "/var/www/html/data" + varrun: + enabled: true + cache: + enabled: true + type: emptyDir + mountPath: /var/cache/nginx + medium: Memory + nginx: + enabled: "true" + mountPath: "/etc/nginx" + noMount: true + readOnly: true + type: "custom" + volumeSpec: + configMap: + name: '{{ include "tc.common.names.fullname" . }}-nginx' + items: + - key: nginx.conf + path: nginx.conf + +configmap: + nginx: + enabled: true + data: + nginx.conf: |- + worker_processes auto; + + error_log /var/log/nginx/error.log warn; + pid /var/run/nginx.pid; + + + events { + worker_connections 1024; + } + + + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + # Prevent nginx HTTP Server Detection + server_tokens off; + + keepalive_timeout 65; + + #gzip on; + + upstream php-handler { + server 127.0.0.1:9000; + } + + server { + listen 8080; + absolute_redirect off; + + # Forward Notify_Push "High Performance Backend" to it's own container + location ^~ /push/ { + proxy_pass http://127.0.0.1:7867/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + # HSTS settings + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + + # set max upload size + client_max_body_size {{ .Values.env.PHP_UPLOAD_LIMIT | default "512M" }}; + fastcgi_buffers 64 4K; + + # Enable gzip but do not remove ETag headers + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + # Pagespeed is not supported by Nextcloud, so if your server is built + # with the `ngx_pagespeed` module, uncomment this line to disable it. + #pagespeed off; + + # HTTP response headers borrowed from Nextcloud `.htaccess` + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "none" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + # Path to the root of your installation + root /var/www/html; + + # Specify how to handle directories -- specifying `/index.php$request_uri` + # here as the fallback means that Nginx always exhibits the desired behaviour + # when a client requests a path that corresponds to a directory that exists + # on the server. In particular, if that directory contains an index.php file, + # that file is correctly served; if it doesn't, then the request is passed to + # the front-end controller. This consistent behaviour means that we don't need + # to specify custom rules for certain paths (e.g. images and other assets, + # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus + # `try_files $uri $uri/ /index.php$request_uri` + # always provides the desired behaviour. + index index.php index.html /index.php$request_uri; + + # Rule borrowed from `.htaccess` to handle Microsoft DAV clients + location = / { + if ( $http_user_agent ~ ^DavClnt ) { + return 302 /remote.php/webdav/$is_args$args; + } + } + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + # Make a regex exception for `/.well-known` so that clients can still + # access it despite the existence of the regex rule + # `location ~ /(\.|autotest|...)` which would otherwise handle requests + # for `/.well-known`. + location ^~ /.well-known { + # The rules in this block are an adaptation of the rules + # in `.htaccess` that concern `/.well-known`. + + location = /.well-known/carddav { return 301 /remote.php/dav/; } + location = /.well-known/caldav { return 301 /remote.php/dav/; } + + # according to the documentation these two lines are not necessary, but some users are still recieving errors + location = /.well-known/webfinger { return 301 /index.php$uri; } + location = /.well-known/nodeinfo { return 301 /index.php$uri; } + + location /.well-known/acme-challenge { try_files $uri $uri/ =404; } + location /.well-known/pki-validation { try_files $uri $uri/ =404; } + + # Let Nextcloud's API for `/.well-known` URIs handle all other + # requests by passing them to the front-end controller. + return 301 /index.php$request_uri; + } + + # Rules borrowed from `.htaccess` to hide certain paths from clients + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } + + # Ensure this block, which passes PHP files to the PHP process, is above the blocks + # which handle static assets (as seen below). If this block is not declared first, + # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` + # to the URI, resulting in a HTTP 500 error response. + location ~ \.php(?:$|/) { + # Required for legacy support + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; + + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + set $path_info $fastcgi_path_info; + + try_files $fastcgi_script_name =404; + + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + #fastcgi_param HTTPS on; + + fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice + fastcgi_param front_controller_active true; # Enable pretty urls + fastcgi_pass php-handler; + + fastcgi_intercept_errors on; + fastcgi_request_buffering off; + + proxy_send_timeout 300s; + proxy_read_timeout 300s; + fastcgi_send_timeout 300s; + fastcgi_read_timeout 300s; + } + + location ~ \.(?:css|js|svg|gif)$ { + try_files $uri /index.php$request_uri; + expires 6M; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + location ~ \.woff2?$ { + try_files $uri /index.php$request_uri; + expires 7d; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + # Rule borrowed from `.htaccess` + location /remote { + return 301 /remote.php$request_uri; + } + + location / { + try_files $uri $uri/ /index.php$request_uri; + } + } + } + +cronjob: + enabled: true + generatePreviews: true + schedule: "*/5 * * * *" + annotations: {} + failedJobsHistoryLimit: 5 + successfulJobsHistoryLimit: 2 + +hpb: + enabled: true + +nextcloud: + # https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + default_phone_region: "" + +imaginary: + enabled: true + preview_max_x: 2048 + preview_max_y: 2048 + preview_max_memory: 512 + preview_max_filesize_image: 150 + preview_png: true + preview_jpeg: true + preview_gif: true + preview_bmp: true + preview_xbitmap: true + preview_mp3: true + preview_markdown: true + preview_opendoc: true + preview_txt: true + preview_krita: true + preview_illustrator: false + preview_heic: false + preview_movie: false + preview_msoffice2003: false + preview_msoffice2007: false + preview_msofficedoc: false + preview_pdf: false + preview_photoshop: false + preview_postscript: false + preview_staroffice: false + preview_svg: false + preview_tiff: false + preview_font: false + +collabora: + enabled: false + env: + aliasgroup1: + configMapRef: + name: nextcloudconfig + key: aliasgroup1 + dictionaries: "de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" + extra_params: "--o:welcome.enable=false --o:logging.level=information --o:user_interface.mode=notebookbar --o:ssl.termination=true --o:ssl.enable=false " + server_name: "" + DONT_GEN_SSL_CERT: true + +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: nextcloud + postgresqlDatabase: nextcloud + +redis: + enabled: true + existingSecret: "rediscreds" + +portal: + enabled: true diff --git a/stable/nextcloud/15.3.10/questions.yaml b/stable/nextcloud/15.3.10/questions.yaml new file mode 100644 index 00000000000..ce8717053ee --- /dev/null +++ b/stable/nextcloud/15.3.10/questions.yaml @@ -0,0 +1,2884 @@ +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: secretEnv + group: "Container Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: NEXTCLOUD_ADMIN_USER + label: "NEXTCLOUD_ADMIN_USER (First Install Only)" + description: "Sets the initial nextcloud's admin username, changing this variable after first launch will NOT change admin's username" + schema: + type: string + required: true + default: "REPLACETHIS" + - variable: NEXTCLOUD_ADMIN_PASSWORD + label: "NEXTCLOUD_ADMIN_PASSWORD (First Install Only)" + description: "Sets the initial nextcloud's admin password, changing this variable after first launch will NOT change admin's password" + schema: + type: string + private: true + required: true + default: "REPLACETHIS" + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: TRUSTED_PROXIES + label: "Trusted Proxies (First Install Only - Advanced)" + description: "Sets nextcloud Trusted Proxies" + schema: + type: string + default: "172.16.0.0/16 127.0.0.1" + - variable: PHP_MEMORY_LIMIT + label: "PHP_MEMORY_LIMIT" + description: "Sets php memory_limit setting" + schema: + type: string + default: "1G" + - variable: PHP_UPLOAD_LIMIT + label: "PHP_UPLOAD_LIMIT" + description: "Sets php upload_max_filesize and post_max_size settings" + schema: + type: string + default: "10G" + - variable: AccessIP + label: "Access IP" + description: "Set to the IP-Address used to reach Nextcloud. Most often the Service or NodePort IP (Ensure this is correct!)" + schema: + type: string + required: true + $ref: + - "definitions/nodeIP" + - variable: nextcloud + group: "Container Configuration" + label: "Nextcloud Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: default_phone_region + label: "Default Phone Region" + description: "Sets the default phone region in ISO_3166-1 format (e.g. US). https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements" + schema: + type: string + valid_chars: '^[A-Z]{2}$' + default: "US" + - variable: imaginary + group: "Container Configuration" + label: "Preview Generation Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: preview_max_x + label: "Preview Max X" + description: "The maximum width, in pixels, of a preview." + schema: + type: int + required: true + default: 2048 + - variable: preview_max_y + label: "Preview Max Y" + description: "The maximum height, in pixels, of a preview." + schema: + type: int + required: true + default: 2048 + - variable: preview_max_memory + label: "Preview Max Memory" + description: "Max memory in MB for generating image previews." + schema: + type: int + required: true + default: 512 + - variable: preview_max_filesize_image + label: "Preview Max Filesize Image" + description: "Max file size in MB for generating image previews." + schema: + type: int + required: true + default: 150 + - variable: preview_png + label: "Generate previews for PNG" + schema: + type: boolean + default: true + - variable: preview_jpeg + label: "Generate previews for JPEG " + schema: + type: boolean + default: true + - variable: preview_gif + label: "Generate previews for GIF" + schema: + type: boolean + default: true + - variable: preview_bmp + label: "Generate previews for BMP" + schema: + type: boolean + default: true + - variable: preview_xbitmap + label: "Generate previews for XBitmap" + schema: + type: boolean + default: true + - variable: preview_mp3 + label: "Generate previews for MP3" + schema: + type: boolean + default: true + - variable: preview_markdown + label: "Generate previews for MarkDown" + schema: + type: boolean + default: true + - variable: preview_opendoc + label: "Generate previews for OpenDocument" + schema: + type: boolean + default: true + - variable: preview_txt + label: "Generate previews for TXT" + schema: + type: boolean + default: true + - variable: preview_krita + label: "Generate previews for Krita" + schema: + type: boolean + default: true + - variable: preview_illustrator + label: "Generate previews for Illustrator" + schema: + type: boolean + default: false + - variable: preview_heic + label: "Generate previews for HEIC" + schema: + type: boolean + default: false + - variable: preview_movie + label: "Generate previews for Movie" + schema: + type: boolean + default: false + - variable: preview_msoffice2003 + label: "Generate previews for MSOffice2003" + schema: + type: boolean + default: false + - variable: preview_msoffice2007 + label: "Generate previews for MSOffice2007" + schema: + type: boolean + default: false + - variable: preview_msofficedoc + label: "Generate previews for MSOfficeDoc" + schema: + type: boolean + default: false + - variable: preview_pdf + label: "Generate previews for PDF" + schema: + type: boolean + default: false + - variable: preview_photoshop + label: "Generate previews for Photoshop" + schema: + type: boolean + default: false + - variable: preview_postscript + label: "Generate previews for Postscript" + schema: + type: boolean + default: false + - variable: preview_staroffice + label: "Generate previews for StarOffice" + schema: + type: boolean + default: false + - variable: preview_svg + label: "Generate previews for SVG" + schema: + type: boolean + default: false + - variable: preview_tiff + label: "Generate previews for TIFF" + schema: + type: boolean + default: false + - variable: preview_font + label: "Generate previews for Font" + schema: + type: boolean + default: false + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: Simple + enum: + - value: Simple + description: Simple + - value: ClusterIP + description: ClusterIP + - value: NodePort + description: NodePort (Advanced) + - value: LoadBalancer + description: LoadBalancer (Advanced) + - variable: loadBalancerIP + label: LoadBalancer IP + description: LoadBalancerIP + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: (Advanced) Specify the IP Policy + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: (Advanced) IP Families + description: (Advanced) The IP Families that should be used + schema: + show_if: [["type", "!=", "Simple"]] + 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: 10020 + 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: 8080 + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: Simple + enum: + - value: Simple + description: Simple + - value: NodePort + description: NodePort + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: LoadBalancerIP + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: External IP + 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: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort + schema: + type: int + min: 9000 + max: 65535 + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: html + label: "App html Storage" + description: "Stores the Application html." + 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: data + label: "UserData Storage" + description: "Stores the User 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: true + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - 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: 33 + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: NodePort + enum: + - value: NodePort + description: NodePort + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: LoadBalancerIP + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: Leave Empty to Disable + label: "nodePort" + 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/nextcloud/15.3.10/templates/_configmap.tpl b/stable/nextcloud/15.3.10/templates/_configmap.tpl new file mode 100644 index 00000000000..abe500d31e8 --- /dev/null +++ b/stable/nextcloud/15.3.10/templates/_configmap.tpl @@ -0,0 +1,36 @@ +{{/* Define the configmap */}} +{{- define "nextcloud.configmap" -}} + +{{- $hosts := "" }} +{{- if .Values.ingress.main.enabled }} +{{- range .Values.ingress }} +{{- range $index, $host := .hosts }} + {{- if $index }} + {{ $hosts = ( printf "%v %v" $hosts $host.host ) }} + {{- else }} + {{ $hosts = ( printf "%s" $host.host ) }} + {{- end }} +{{- end }} +{{- end }} +{{- end }} + + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nextcloudconfig +data: + {{- $aliasgroup1 := ( printf "http://%s" ( .Values.env.AccessIP | default ( printf "%v-%v" .Release.Name "nextcloud" ) ) ) }} + {{- if .Values.ingress.main.enabled }} + {{- with (first .Values.ingress.main.hosts) }} + {{- $aliasgroup1 = ( printf "https://%s" .host ) }} + {{- end }} + {{- end }} + aliasgroup1: {{ $aliasgroup1 }} + NEXTCLOUD_TRUSTED_DOMAINS: {{ ( printf "%v %v %v %v %v %v %v %v" "test.fakedomain.dns" "localhost" "127.0.0.1" ( printf "%v:%v" "127.0.0.1" .Values.service.main.ports.main.port ) ( .Values.env.AccessIP | default "localhost" ) ( printf "%v-%v" .Release.Name "nextcloud" ) ( printf "%v-%v" .Release.Name "nextcloud-backend" ) $hosts ) | quote }} + {{- if .Values.ingress.main.enabled }} + APACHE_DISABLE_REWRITE_IP: "1" + {{- end }} + +{{- end -}} diff --git a/stable/nextcloud/15.3.10/templates/_cronjob.tpl b/stable/nextcloud/15.3.10/templates/_cronjob.tpl new file mode 100644 index 00000000000..302f3b83aae --- /dev/null +++ b/stable/nextcloud/15.3.10/templates/_cronjob.tpl @@ -0,0 +1,64 @@ +{{/* Define the cronjob */}} +{{- define "nextcloud.cronjob" -}} +{{- if .Values.cronjob.enabled -}} +{{- $jobName := include "tc.common.names.fullname" . }} + +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ printf "%s-cronjob" $jobName }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +spec: + schedule: "{{ .Values.cronjob.schedule }}" + concurrencyPolicy: Forbid + {{- with .Values.cronjob.failedJobsHistoryLimit }} + failedJobsHistoryLimit: {{ . }} + {{- end }} + {{- with .Values.cronjob.successfulJobsHistoryLimit }} + successfulJobsHistoryLimit: {{ . }} + {{- end }} + jobTemplate: + metadata: + spec: + template: + metadata: + spec: + restartPolicy: Never + {{- with (include "tc.common.controller.volumes" . | trim) }} + volumes: + {{- nindent 12 . }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + image: '{{ include "tc.common.images.selector" . }}' + imagePullPolicy: {{ default .Values.image.pullPolicy }} + command: + - "/bin/sh" + - "-c" + - | + /bin/bash <<'EOF' + echo "running nextcloud cronjob..." + php -f /var/www/html/cron.php + echo "cronjob finished" + {{- if .Values.cronjob.generatePreviews }} + echo "Pre-generating Previews..." + php /var/www/html/occ preview:pre-generate + echo "Previews generated." + {{- end }} + EOF + # Will mount configuration files as www-data (id: 33) by default for nextcloud + {{- with (include "tc.common.controller.volumeMounts" . | trim) }} + volumeMounts: + {{ nindent 16 . }} + {{- end }} + securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true + resources: +{{ toYaml .Values.resources | indent 16 }} +{{- end -}} +{{- end -}} diff --git a/stable/nextcloud/15.3.10/templates/_hpb.tpl b/stable/nextcloud/15.3.10/templates/_hpb.tpl new file mode 100644 index 00000000000..5b7b18a15fa --- /dev/null +++ b/stable/nextcloud/15.3.10/templates/_hpb.tpl @@ -0,0 +1,164 @@ +{{/* Define the hbp container */}} +{{- define "nextcloud.hpb" -}} +{{- $jobName := include "tc.common.names.fullname" . }} +image: '{{ include "tc.common.images.selector" . }}' +imagePullPolicy: '{{ .Values.image.pullPolicy }}' +securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true +{{- with (include "tc.common.controller.volumeMounts" . | trim) }} +volumeMounts: + {{ nindent 2 . }} +{{- end }} +ports: + - containerPort: 7867 +readinessProbe: + httpGet: + path: /push/test/cookie + port: 7867 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} +livenessProbe: + httpGet: + path: /push/test/cookie + port: 7867 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} +startupProbe: + httpGet: + path: /push/test/cookie + port: 7867 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} +command: + - "/bin/sh" + - "-c" + - | + /bin/bash <<'EOF' + set -m + echo "Waiting for notify_push file to be available..." + until [ -f /var/www/html/custom_apps/notify_push/bin/x86_64/notify_push ] + do + sleep 10 + echo "Notify_push app not found... waiting..." + done + echo "Waiting for Nextcloud to start..." + until $(curl --output /dev/null --silent --head --fail -H "Host: test.fakedomain.dns" http://127.0.0.1:8080/status.php); do + echo "Nextcloud not responding... waiting..." + sleep 10 + done + until $(curl --silent --fail -H "Host: test.fakedomain.dns" http://127.0.0.1:8080/status.php | jq --raw-output '.installed' | grep "true"); do + echo "Nextcloud not installed... waiting..." + sleep 10 + done + echo "Nextcloud instance with Notify_push found... Launching High Performance Backend..." + /var/www/html/custom_apps/notify_push/bin/x86_64/notify_push /var/www/html/config/config.php & + + {{- $accessurl := ( printf "http://%v:%v" ( .Values.env.AccessIP | default ( printf "%v-%v" .Release.Name "nextcloud" ) ) .Values.service.main.ports.main.port ) }} + {{- if .Values.ingress.main.enabled }} + {{- with (first .Values.ingress.main.hosts) }} + {{- $accessurl = ( printf "https://%s" .host ) }} + {{- end }} + {{- end }} + + echo "Configuring CLI url..." + php /var/www/html/occ config:system:set overwrite.cli.url --value='{{ $accessurl }}/' + + {{- if .Values.imaginary.enabled }} + echo "Imaginary High Performance Previews enabled, enabling it on Nextcloud..." + php /var/www/html/occ config:system:set preview_imaginary_url --value='http://127.0.0.1:9090' + php /var/www/html/occ config:system:set preview_max_x --value='{{ .Values.imaginary.preview_max_x }}' + php /var/www/html/occ config:system:set preview_max_y --value='{{ .Values.imaginary.preview_max_y }}' + php /var/www/html/occ config:system:set preview_max_memory --value='{{ .Values.imaginary.preview_max_memory }}' + php /var/www/html/occ config:system:set preview_max_filesize_image --value='{{ .Values.imaginary.preview_max_filesize_image }}' + # Remove all preview providers and re-add only selected + php /var/www/html/occ config:system:delete enabledPreviewProviders + # Add imaginary always + {{ $c := 0 }} # Initialize counter + php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Imaginary'{{ $c = add1 $c }} + {{ if .Values.imaginary.preview_png }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\PNG'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_jpeg }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\JPEG'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_gif }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\GIF'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_bmp }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\BMP'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_xbitmap }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\XBitmap'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_mp3 }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MP3'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_markdown }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MarkDown'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_opendoc }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\OpenDocument'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_txt }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\TXT'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_krita }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Krita'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_illustrator }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Illustrator'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_heic }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\HEIC'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_movie }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Movie'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_msoffice2003 }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MSOffice2003'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_msoffice2007 }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MSOffice2007'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_msofficedoc }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MSOfficeDoc'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_pdf }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\PDF'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_photoshop }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Photoshop'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_postscript }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Postscript'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_staroffice }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\StarOffice'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_svg }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\SVG'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_tiff }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\TIFF'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_font }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Font'{{ $c = add1 $c }}{{ end }} + {{- end }} + + # Set default phone region + {{- with .Values.nextcloud.default_phone_region | upper }} + php /var/www/html/occ config:system:set default_phone_region --value='{{ . }}' + {{- end }} + + echo "Configuring High Performance Backend for url: {{ $accessurl }}" + php /var/www/html/occ config:app:set notify_push base_endpoint --value='{{ $accessurl }}/push' + fg + EOF +env: + - name: NEXTCLOUD_URL + value: 'http://127.0.0.1:8080' + - name: METRICS_PORT + value: '7868' + - name: TRUSTED_PROXIES + value: "{{ .Values.env.TRUSTED_PROXIES }}" + - name: POSTGRES_DB + value: "{{ .Values.postgresql.postgresqlDatabase }}" + - name: POSTGRES_USER + value: "{{ .Values.postgresql.postgresqlUsername }}" + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: dbcreds + key: postgresql-password + - name: POSTGRES_HOST + valueFrom: + secretKeyRef: + name: dbcreds + key: plainporthost + - name: REDIS_HOST + valueFrom: + secretKeyRef: + name: rediscreds + key: plainhost + - name: REDIS_HOST_PASSWORD + valueFrom: + secretKeyRef: + name: rediscreds + key: redis-password +envFrom: + - configMapRef: + name: nextcloudconfig +{{- end -}} diff --git a/stable/nextcloud/15.3.10/templates/_imaginary.tpl b/stable/nextcloud/15.3.10/templates/_imaginary.tpl new file mode 100644 index 00000000000..57a72c43024 --- /dev/null +++ b/stable/nextcloud/15.3.10/templates/_imaginary.tpl @@ -0,0 +1,40 @@ +{{/* Define the imaginary container */}} +{{- define "nextcloud.imaginary" -}} +image: {{ .Values.imaginaryImage.repository }}:{{ .Values.imaginaryImage.tag }} +imagePullPolicy: '{{ .Values.image.pullPolicy }}' +securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true +ports: + - containerPort: 9090 +args: ["-enable-url-source"] +env: + - name: 'PORT' + value: '9090' +readinessProbe: + httpGet: + path: / + port: 9090 + initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} +livenessProbe: + httpGet: + path: / + port: 9090 + initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} +startupProbe: + httpGet: + path: / + port: 9090 + initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} +{{- end -}} diff --git a/stable/nextcloud/15.3.10/templates/_nginx.tpl b/stable/nextcloud/15.3.10/templates/_nginx.tpl new file mode 100644 index 00000000000..df427f44bd8 --- /dev/null +++ b/stable/nextcloud/15.3.10/templates/_nginx.tpl @@ -0,0 +1,54 @@ +{{/* Define the nginx container */}} +{{- define "nextcloud.nginx" -}} +image: {{ .Values.nginxImage.repository }}:{{ .Values.nginxImage.tag }} +imagePullPolicy: '{{ .Values.image.pullPolicy }}' +securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true +{{- with (include "tc.common.controller.volumeMounts" . | trim) }} +volumeMounts: + {{ nindent 2 . }} +{{- end }} + - mountPath: /etc/nginx/nginx.conf + name: nginx + readOnly: true + subPath: nginx.conf +ports: + - containerPort: 8080 + +readinessProbe: + httpGet: + path: /robots.txt + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} +livenessProbe: + httpGet: + path: /robots.txt + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} +startupProbe: + httpGet: + path: /robots.txt + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} +{{- end -}} diff --git a/stable/nextcloud/15.3.10/templates/common.yaml b/stable/nextcloud/15.3.10/templates/common.yaml new file mode 100644 index 00000000000..9314524b1a2 --- /dev/null +++ b/stable/nextcloud/15.3.10/templates/common.yaml @@ -0,0 +1,22 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{/* Render configmap for nextcloud */}} +{{- include "nextcloud.configmap" . }} + +{{- $newMiddlewares := append .Values.ingress.main.fixedMiddlewares "tc-nextcloud-chain" }} +{{- $_ := set .Values.ingress.main "fixedMiddlewares" $newMiddlewares -}} + +{{- $_ := set .Values.additionalContainers "nginx" (include "nextcloud.nginx" . | fromYaml) -}} +{{- if .Values.imaginary.enabled -}} +{{- $_ := set .Values.additionalContainers "imaginary" (include "nextcloud.imaginary" . | fromYaml) -}} +{{- end -}} +{{- if .Values.hpb.enabled -}} +{{- $_ := set .Values.additionalContainers "hpb" (include "nextcloud.hpb" . | fromYaml) -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} + +{{/* Render cronjob for nextcloud */}} +{{- include "nextcloud.cronjob" . }} diff --git a/stable/nextcloud/15.3.10/values.yaml b/stable/nextcloud/15.3.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/traefik/13.3.6/CHANGELOG.md b/stable/traefik/13.3.6/CHANGELOG.md new file mode 100644 index 00000000000..418358d1036 --- /dev/null +++ b/stable/traefik/13.3.6/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [traefik-13.3.6](https://github.com/truecharts/charts/compare/traefik-13.3.5...traefik-13.3.6) (2022-09-09) + +### Chore + +- move docs from website repo ([#3722](https://github.com/truecharts/charts/issues/3722)) + + + + +## [traefik-13.3.5](https://github.com/truecharts/charts/compare/traefik-13.3.4...traefik-13.3.5) (2022-09-04) + +### Chore + +- update docker general non-major ([#3681](https://github.com/truecharts/charts/issues/3681)) + + + + +## [traefik-13.3.4](https://github.com/truecharts/charts/compare/traefik-13.3.3...traefik-13.3.4) (2022-09-03) + +### Fix + +- fix serviceaccount creation on few apps ([#3665](https://github.com/truecharts/charts/issues/3665)) + + + + +## [traefik-13.3.3](https://github.com/truecharts/charts/compare/traefik-13.3.1...traefik-13.3.3) (2022-08-30) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) + - update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) + + + + +## [traefik-13.3.2](https://github.com/truecharts/charts/compare/traefik-13.3.1...traefik-13.3.2) (2022-08-30) + +### Chore + +- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) + + + + +## [traefik-13.3.1](https://github.com/truecharts/charts/compare/traefik-13.3.0...traefik-13.3.1) (2022-08-29) + +### Chore + +- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) + + + + +## [traefik-13.3.0](https://github.com/truecharts/charts/compare/traefik-13.2.3...traefik-13.3.0) (2022-08-27) + +### Feat + +- add support for proxyProtocol ([#3593](https://github.com/truecharts/charts/issues/3593)) + + + + +## [traefik-13.2.3](https://github.com/truecharts/charts/compare/traefik-13.2.2...traefik-13.2.3) (2022-08-25) + + + + +## [traefik-13.2.2](https://github.com/truecharts/charts/compare/traefik-13.2.1...traefik-13.2.2) (2022-08-23) + +### Chore + +- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) + + + + +## [traefik-13.2.1](https://github.com/truecharts/charts/compare/traefik-13.1.10...traefik-13.2.1) (2022-08-22) + +### Chore + +- Auto-update chart README [skip ci] + + + + +## [traefik-13.2.0](https://github.com/truecharts/charts/compare/traefik-13.1.10...traefik-13.2.0) (2022-08-21) + + + + +## [traefik-13.1.10](https://github.com/truecharts/charts/compare/traefik-13.1.9...traefik-13.1.10) (2022-08-14) + diff --git a/stable/traefik/13.3.6/Chart.lock b/stable/traefik/13.3.6/Chart.lock new file mode 100644 index 00000000000..8a9f562b847 --- /dev/null +++ b/stable/traefik/13.3.6/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.5.7 +digest: sha256:b72267dc4ec6ba94956fa8ad26ab0a92f7eaf6f95558581564b160ff9dc54606 +generated: "2022-09-09T20:21:27.935873501Z" diff --git a/stable/traefik/13.3.6/Chart.yaml b/stable/traefik/13.3.6/Chart.yaml new file mode 100644 index 00000000000..baa9bb5a584 --- /dev/null +++ b/stable/traefik/13.3.6/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "2.8.4" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.5.7 +deprecated: false +description: Traefik is a flexible reverse proxy and Ingress Provider. +home: https://truecharts.org/docs/charts/stable/traefik +icon: https://truecharts.org/img/hotlink-ok/chart-icons/traefik.png +keywords: + - traefik + - ingress +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: traefik +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/traefik + - https://github.com/traefik/traefik + - https://github.com/traefik/traefik-helm-chart + - https://traefik.io/ +type: application +version: 13.3.6 +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/traefik/13.3.6/README.md b/stable/traefik/13.3.6/README.md new file mode 100644 index 00000000000..45fff29f5a2 --- /dev/null +++ b/stable/traefik/13.3.6/README.md @@ -0,0 +1,110 @@ +# traefik + +![Version: 13.3.6](https://img.shields.io/badge/Version-13.3.6-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.8.4](https://img.shields.io/badge/AppVersion-2.8.4-informational?style=flat-square) + +Traefik is a flexible reverse proxy and Ingress Provider. + +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: [traefik](https://truecharts.org/docs/charts/stable/traefik) + +**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://library-charts.truecharts.org | common | 10.5.7 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/Installing-an-App). + +### Helm + +To install the chart with the release name `traefik` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install traefik TrueCharts/traefik +``` + +## 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/Quick-Start%20Guides/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `traefik` deployment + +```console +helm uninstall traefik +``` + +## 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 traefik \ + --set env.TZ="America/New York" \ + TrueCharts/traefik +``` + +#### 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 traefik TrueCharts/traefik -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/Quick-Start%20Guides/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Quick-Start%20Guides/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/docs/about/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/13.3.6/app-readme.md b/stable/traefik/13.3.6/app-readme.md new file mode 100644 index 00000000000..b76832bd9a2 --- /dev/null +++ b/stable/traefik/13.3.6/app-readme.md @@ -0,0 +1,8 @@ +Traefik is a flexible reverse proxy and Ingress Provider. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/stable/traefik](https://truecharts.org/docs/charts/stable/traefik) + +--- + +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/traefik/13.3.6/charts/common-10.5.7.tgz b/stable/traefik/13.3.6/charts/common-10.5.7.tgz new file mode 100644 index 0000000000000000000000000000000000000000..20a5750c094827ceafd7aded2f15dbf36e36c0e8 GIT binary patch literal 48175 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 + schema: + type: string + required: true + - variable: appName + label: App Name + description: Lower case, name of the app to be themed. +
Go to https://docs.theme-park.dev/themes/ to see supported apps. + schema: + type: string + required: true + - variable: themeName + label: Theme Name + description: Lower case, name of the theme to be applied. +
Go to https://docs.theme-park.dev/theme-options/ to see supported themes. + schema: + type: string + required: true + - variable: baseUrl + label: Base URL + description: Replace `https://theme-park.dev` URL for self-hosting reference. + schema: + type: string + required: true + default: https://theme-park.dev + - variable: addons + label: Addons + schema: + type: list + default: [] + items: + - variable: addonEntry + label: "Addon" + description: Currently only supports 'darker' and '4k-logo' for *arr apps. +
Go to https://docs.theme-park.dev/themes/addons/ for Addon information. +
Go to https://github.com/packruler/traefik-themepark for more context on plugin + schema: + type: string + required: true + default: "" + - variable: service + group: "Networking and Services" + label: "Configure Service Entrypoint" + 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: Simple + enum: + - value: Simple + description: Simple + - value: ClusterIP + description: ClusterIP + - value: NodePort + description: NodePort (Advanced) + - value: LoadBalancer + description: LoadBalancer (Advanced) + - variable: loadBalancerIP + label: LoadBalancer IP + description: LoadBalancerIP + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: (Advanced) Specify the IP Policy + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: (Advanced) IP Families + description: (Advanced) The IP Families that should be used + schema: + show_if: [["type", "!=", "Simple"]] + 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 Entrypoint Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - 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: port + label: "Entrypoints Port" + schema: + type: int + default: 9000 + required: true + - variable: tcp + label: "TCP Service" + description: "The tcp Entrypoint 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: Simple + enum: + - value: Simple + description: Simple + - value: ClusterIP + description: ClusterIP + - value: NodePort + description: NodePort (Advanced) + - value: LoadBalancer + description: LoadBalancer (Advanced) + - variable: loadBalancerIP + label: LoadBalancer IP + description: LoadBalancerIP + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: (Advanced) Specify the IP Policy + schema: + show_if: [["type", "!=", "Simple"]] + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: (Advanced) IP Families + description: (Advanced) The IP Families that should be used + schema: + show_if: [["type", "!=", "Simple"]] + 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: web + label: "web Entrypoint Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 9080 + 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 + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + default: "websecure" + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + - variable: websecure + label: "websecure Entrypoints Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 9443 + 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: HTTPS + 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 + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + - variable: tls + label: "websecure Entrypoints Configuration" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + hidden: true + - variable: portsList + label: "Additional TCP Entrypoints" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom Entrypoints" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Entrypoints Name" + schema: + type: string + default: "" + - variable: protocol + label: "Entrypoints Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: tls + label: "websecure Entrypoints Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + - 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: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - 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: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 568 + - 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: NodePort + enum: + - value: NodePort + description: NodePort + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: LoadBalancerIP + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: Leave Empty to Disable + label: "nodePort" + 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/traefik/13.3.6/templates/_args.tpl b/stable/traefik/13.3.6/templates/_args.tpl new file mode 100644 index 00000000000..68c640bf0df --- /dev/null +++ b/stable/traefik/13.3.6/templates/_args.tpl @@ -0,0 +1,166 @@ +{{/* Define the args */}} +{{- define "traefik.args" -}} +args: + {{/* merge all ports */}} + {{- $ports := dict }} + {{- range $.Values.service }} + {{- range $name, $value := .ports }} + {{- $_ := set $ports $name $value }} + {{- end }} + {{- end }} + {{/* start of actual arguments */}} + {{- with .Values.globalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- range $name, $config := $ports }} + {{- if $config }} + {{- if or ( eq $config.protocol "HTTP" ) ( eq $config.protocol "HTTPS" ) ( eq $config.protocol "TCP" ) }} + {{- $_ := set $config "protocol" "TCP" }} + {{- end }} + - "--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default "tcp" $config.protocol | lower }}" + {{- end }} + {{- end }} + - "--api.dashboard=true" + - "--ping=true" + {{- if .Values.metrics }} + {{- if .Values.metrics.datadog }} + - "--metrics.datadog=true" + - "--metrics.datadog.address={{ .Values.metrics.datadog.address }}" + {{- end }} + {{- if .Values.metrics.influxdb }} + - "--metrics.influxdb=true" + - "--metrics.influxdb.address={{ .Values.metrics.influxdb.address }}" + - "--metrics.influxdb.protocol={{ .Values.metrics.influxdb.protocol }}" + {{- end }} + {{- if .Values.metrics.prometheus }} + - "--metrics.prometheus=true" + - "--metrics.prometheus.entrypoint={{ .Values.metrics.prometheus.entryPoint }}" + {{- end }} + {{- if .Values.metrics.statsd }} + - "--metrics.statsd=true" + - "--metrics.statsd.address={{ .Values.metrics.statsd.address }}" + {{- end }} + {{- end }} + {{- if .Values.providers.kubernetesCRD.enabled }} + - "--providers.kubernetescrd" + {{- end }} + {{- if .Values.providers.kubernetesIngress.enabled }} + - "--providers.kubernetesingress" + {{- if .Values.providers.kubernetesIngress.publishedService.enabled }} + - "--providers.kubernetesingress.ingressendpoint.publishedservice={{ template "providers.kubernetesIngress.publishedServicePath" . }}" + {{- end }} + {{- if .Values.providers.kubernetesIngress.labelSelector }} + - "--providers.kubernetesingress.labelSelector={{ .Values.providers.kubernetesIngress.labelSelector }}" + {{- end }} + {{- end }} + {{- if and .Values.rbac.enabled .Values.rbac.namespaced }} + {{- if .Values.providers.kubernetesCRD.enabled }} + - "--providers.kubernetescrd.namespaces={{ template "providers.kubernetesCRD.namespaces" . }}" + {{- end }} + {{- if .Values.providers.kubernetesIngress.enabled }} + - "--providers.kubernetesingress.namespaces={{ template "providers.kubernetesIngress.namespaces" . }}" + {{- end }} + {{- end }} + {{- if .Values.ingressClass.enabled }} + - "--providers.kubernetesingress.ingressclass={{ .Release.Name }}" + {{- end }} + {{- range $entrypoint, $config := $ports }} + {{/* add args for proxyProtocol support */}} + {{- if $config.proxyProtocol }} + {{- if $config.proxyProtocol.enabled }} + {{- if $config.proxyProtocol.insecureMode }} + - "--entrypoints.{{ $entrypoint }}.proxyProtocol.insecure" + {{- end }} + {{- if not ( empty $config.proxyProtocol.trustedIPs ) }} + - "--entrypoints.{{ $entrypoint }}.proxyProtocol.trustedIPs={{ join "," $config.proxyProtocol.trustedIPs }}" + {{- end }} + {{- end }} + {{- end }} + {{/* add args for forwardedHeaders support */}} + {{- if $config.forwardedHeaders.enabled }} + {{- if not ( empty $config.forwardedHeaders.trustedIPs ) }} + - "--entrypoints.{{ $entrypoint }}.forwardedHeaders.trustedIPs={{ join "," $config.forwardedHeaders.trustedIPs }}" + {{- end }} + {{- if $config.forwardedHeaders.insecureMode }} + - "--entrypoints.{{ $entrypoint }}.forwardedHeaders.insecure" + {{- end }} + {{- end }} + {{/* end forwardedHeaders configuration */}} + {{- if $config.redirectTo }} + {{- $toPort := index $ports $config.redirectTo }} + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.port }}" + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" + {{- else if $config.redirectPort }} + {{ if gt $config.redirectPort 0.0 }} + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $config.redirectPort }}" + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" + {{- end }} + {{- end }} + {{- if or ( $config.tls ) ( eq $config.protocol "HTTPS" ) }} + {{- if or ( $config.tls.enabled ) ( eq $config.protocol "HTTPS" ) }} + - "--entrypoints.{{ $entrypoint }}.http.tls=true" + {{- if $config.tls.options }} + - "--entrypoints.{{ $entrypoint }}.http.tls.options={{ $config.tls.options }}" + {{- end }} + {{- if $config.tls.certResolver }} + - "--entrypoints.{{ $entrypoint }}.http.tls.certResolver={{ $config.tls.certResolver }}" + {{- end }} + {{- if $config.tls.domains }} + {{- range $index, $domain := $config.tls.domains }} + {{- if $domain.main }} + - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].main={{ $domain.main }}" + {{- end }} + {{- if $domain.sans }} + - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].sans={{ join "," $domain.sans }}" + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- with .Values.logs }} + - "--log.format={{ .general.format }}" + {{- if ne .general.level "ERROR" }} + - "--log.level={{ .general.level | upper }}" + {{- end }} + {{- if .access.enabled }} + - "--accesslog=true" + - "--accesslog.format={{ .access.format }}" + {{- if .access.bufferingsize }} + - "--accesslog.bufferingsize={{ .access.bufferingsize }}" + {{- end }} + {{- if .access.filters }} + {{- if .access.filters.statuscodes }} + - "--accesslog.filters.statuscodes={{ .access.filters.statuscodes }}" + {{- end }} + {{- if .access.filters.retryattempts }} + - "--accesslog.filters.retryattempts" + {{- end }} + {{- if .access.filters.minduration }} + - "--accesslog.filters.minduration={{ .access.filters.minduration }}" + {{- end }} + {{- end }} + - "--accesslog.fields.defaultmode={{ .access.fields.general.defaultmode }}" + {{- range $fieldname, $fieldaction := .access.fields.general.names }} + - "--accesslog.fields.names.{{ $fieldname }}={{ $fieldaction }}" + {{- end }} + - "--accesslog.fields.headers.defaultmode={{ .access.fields.headers.defaultmode }}" + {{- range $fieldname, $fieldaction := .access.fields.headers.names }} + - "--accesslog.fields.headers.names.{{ $fieldname }}={{ $fieldaction }}" + {{- end }} + {{- end }} + {{- end }} + {{/* theme.park */}} + {{- if .Values.middlewares.themePark }} + - "--experimental.plugins.traefik-themepark.modulename=github.com/packruler/traefik-themepark" + - "--experimental.plugins.traefik-themepark.version={{ .Values.middlewares.themeParkVersion }}" + {{- end }} + {{/* End of theme.park */}} + {{- with .Values.additionalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} +{{- end -}} diff --git a/stable/traefik/13.3.6/templates/_helpers.tpl b/stable/traefik/13.3.6/templates/_helpers.tpl new file mode 100644 index 00000000000..ab55e4e7ec6 --- /dev/null +++ b/stable/traefik/13.3.6/templates/_helpers.tpl @@ -0,0 +1,22 @@ +{{/* +Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. +By convention this will simply use the / to match the name of the +service generated. +Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` +*/}} +{{- define "providers.kubernetesIngress.publishedServicePath" -}} +{{- $fullName := include "tc.common.names.fullname" . -}} +{{- $defServiceName := printf "%s/%s-tcp" .Release.Namespace $fullName -}} +{{- $servicePath := default $defServiceName .Values.providers.kubernetesIngress.publishedService.pathOverride }} +{{- print $servicePath | trimSuffix "-" -}} +{{- end -}} + +{{/* +Construct a comma-separated list of whitelisted namespaces +*/}} +{{- define "providers.kubernetesIngress.namespaces" -}} +{{- default .Release.Namespace (join "," .Values.providers.kubernetesIngress.namespaces) }} +{{- end -}} +{{- define "providers.kubernetesCRD.namespaces" -}} +{{- default .Release.Namespace (join "," .Values.providers.kubernetesCRD.namespaces) }} +{{- end -}} diff --git a/stable/traefik/13.3.6/templates/_ingressclass.tpl b/stable/traefik/13.3.6/templates/_ingressclass.tpl new file mode 100644 index 00000000000..909e249d6a5 --- /dev/null +++ b/stable/traefik/13.3.6/templates/_ingressclass.tpl @@ -0,0 +1,24 @@ +{{/* Define the ingressClass */}} +{{- define "traefik.ingressClass" -}} +--- +{{ if .Values.ingressClass.enabled }} + {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} +apiVersion: networking.k8s.io/v1 + {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} +apiVersion: networking.k8s.io/v1beta1 + {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} +apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} + {{- else }} + {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} + {{- end }} +kind: IngressClass +metadata: + annotations: + ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} + name: {{ .Release.Name }} +spec: + controller: traefik.io/ingress-controller +{{- end }} +{{- end }} diff --git a/stable/traefik/13.3.6/templates/_ingressroute.tpl b/stable/traefik/13.3.6/templates/_ingressroute.tpl new file mode 100644 index 00000000000..7f012c92350 --- /dev/null +++ b/stable/traefik/13.3.6/templates/_ingressroute.tpl @@ -0,0 +1,25 @@ +{{/* Define the ingressRoute */}} +{{- define "traefik.ingressRoute" -}} +{{ if .Values.ingressRoute.dashboard.enabled }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: {{ include "tc.common.names.fullname" . }}-dashboard + annotations: + {{- with .Values.ingressRoute.dashboard.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +spec: + entryPoints: + - main + routes: + - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) + kind: Rule + services: + - name: api@internal + kind: TraefikService +{{ end }} +{{- end -}} diff --git a/stable/traefik/13.3.6/templates/_portalhook.tpl b/stable/traefik/13.3.6/templates/_portalhook.tpl new file mode 100644 index 00000000000..e3586c5d4e9 --- /dev/null +++ b/stable/traefik/13.3.6/templates/_portalhook.tpl @@ -0,0 +1,26 @@ +{{/* Define the portalHook */}} +{{- define "traefik.portalhook" -}} +{{- if .Values.portalhook.enabled }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: portalhook + namespace: {{ $namespace }} +data: + {{- $ports := dict }} + {{- range $.Values.service }} + {{- range $name, $value := .ports }} + {{- $_ := set $ports $name $value }} + {{- end }} + {{- end }} + {{- range $name, $value := $ports }} + {{ $name }}: {{ $value.port | quote }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/stable/traefik/13.3.6/templates/_tlsoptions.tpl b/stable/traefik/13.3.6/templates/_tlsoptions.tpl new file mode 100644 index 00000000000..3e5aad3bee9 --- /dev/null +++ b/stable/traefik/13.3.6/templates/_tlsoptions.tpl @@ -0,0 +1,12 @@ +{{/* Define the tlsOptions */}} +{{- define "traefik.tlsOptions" -}} +{{- range $name, $config := .Values.tlsOptions }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: TLSOption +metadata: + name: {{ $name }} +spec: + {{- toYaml $config | nindent 2 }} +{{- end }} +{{- end -}} diff --git a/stable/traefik/13.3.6/templates/common.yaml b/stable/traefik/13.3.6/templates/common.yaml new file mode 100644 index 00000000000..d078b251c20 --- /dev/null +++ b/stable/traefik/13.3.6/templates/common.yaml @@ -0,0 +1,24 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{- if .Values.metrics }} +{{- if .Values.metrics.prometheus }} +{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} +{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} +{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9180" -}} +{{- end }} +{{- end }} + +{{- $newArgs := (include "traefik.args" . | fromYaml) }} +{{- $_ := set .Values "newArgs" $newArgs -}} +{{- $mergedargs := concat .Values.args .Values.newArgs.args }} +{{- $_ := set .Values "args" $mergedargs -}} + +{{- include "traefik.portalhook" . }} +{{- include "traefik.tlsOptions" . }} +{{- include "traefik.ingressRoute" . }} +{{- include "traefik.ingressClass" . }} + + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/stable/traefik/13.3.6/templates/middlewares/basic-middleware.yaml b/stable/traefik/13.3.6/templates/middlewares/basic-middleware.yaml new file mode 100644 index 00000000000..9ba8e5c5d93 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/basic-middleware.yaml @@ -0,0 +1,62 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: compress + namespace: {{ $namespace }} +spec: + compress: {} +--- +# Here, an average of 300 requests per second is allowed. +# In addition, a burst of 200 requests is allowed. +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: basic-ratelimit + namespace: {{ $namespace }} +spec: + rateLimit: + average: 600 + burst: 400 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: basic-secure-headers + namespace: {{ $namespace }} +spec: + headers: + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + accessControlMaxAge: 100 + stsSeconds: 63072000 + # stsIncludeSubdomains: false + # stsPreload: false + forceSTSHeader: true + contentTypeNosniff: true + browserXssFilter: true + referrerPolicy: same-origin + customRequestHeaders: + X-Forwarded-Proto: "https" + customResponseHeaders: + server: '' +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: chain-basic + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: basic-ratelimit + - name: basic-secure-headers + - name: compress diff --git a/stable/traefik/13.3.6/templates/middlewares/basicauth.yaml b/stable/traefik/13.3.6/templates/middlewares/basicauth.yaml new file mode 100644 index 00000000000..ccb541742f0 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/basicauth.yaml @@ -0,0 +1,34 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} +--- +{{- $users := list }} +{{ range $index, $userdata := $middlewareData.users }} + {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} +{{ end }} + +apiVersion: v1 +kind: Secret +metadata: + name: {{printf "%v-%v" $middlewareData.name "secret" }} + namespace: {{ $namespace }} +type: Opaque +stringData: + users: | + {{- range $index, $user := $users }} + {{ printf "%s" $user }} + {{- end }} +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + basicAuth: + secret: {{printf "%v-%v" $middlewareData.name "secret" }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/chain.yaml b/stable/traefik/13.3.6/templates/middlewares/chain.yaml new file mode 100644 index 00000000000..f87994f7956 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/chain.yaml @@ -0,0 +1,21 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.chain }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + chain: + middlewares: + {{ range $index, $middleware := .middlewares }} + - name: {{ printf "%v-%v@%v" $namespace $middleware "kubernetescrd" }} + {{ end }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/forwardauth.yaml b/stable/traefik/13.3.6/templates/middlewares/forwardauth.yaml new file mode 100644 index 00000000000..7a3e32fdbf7 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/forwardauth.yaml @@ -0,0 +1,30 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + forwardAuth: + address: {{ $middlewareData.address }} + {{- with $middlewareData.authResponseHeaders }} + authResponseHeaders: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with $middlewareData.authRequestHeaders }} + authRequestHeaders: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if $middlewareData.authResponseHeadersRegex }} + authResponseHeadersRegex: {{ $middlewareData.authResponseHeadersRegex }} + {{- end }} + {{- if $middlewareData.trustForwardHeader }} + trustForwardHeader: true + {{- end }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/ipwhitelist.yaml b/stable/traefik/13.3.6/templates/middlewares/ipwhitelist.yaml new file mode 100644 index 00000000000..1179245017e --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/ipwhitelist.yaml @@ -0,0 +1,33 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.ipWhiteList }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + ipWhiteList: + sourceRange: + {{- range $middlewareData.sourceRange }} + - {{ . }} + {{- end }} + {{- if $middlewareData.ipStrategy }} + ipStrategy: + {{- if $middlewareData.ipStrategy.depth }} + depth: {{ $middlewareData.ipStrategy.depth }} + {{- end }} + {{- if $middlewareData.ipStrategy.excludedIPs }} + excludedIPs: + {{- range $middlewareData.ipStrategy.excludedIPs }} + - {{ . }} + {{- end }} + {{- end }} + {{- end }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/ratelimit.yaml b/stable/traefik/13.3.6/templates/middlewares/ratelimit.yaml new file mode 100644 index 00000000000..144b9d8bf38 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/ratelimit.yaml @@ -0,0 +1,19 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + rateLimit: + average: {{ $middlewareData.average }} + burst: {{ $middlewareData.burst }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/redirectScheme.yaml b/stable/traefik/13.3.6/templates/middlewares/redirectScheme.yaml new file mode 100644 index 00000000000..f2413f84e19 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/redirectScheme.yaml @@ -0,0 +1,19 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + redirectScheme: + scheme: {{ $middlewareData.scheme }} + permanent: {{ $middlewareData.permanent }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/redirectregex.yaml b/stable/traefik/13.3.6/templates/middlewares/redirectregex.yaml new file mode 100644 index 00000000000..46e3e724dd6 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/redirectregex.yaml @@ -0,0 +1,20 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.redirectRegex }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + redirectRegex: + regex: {{ $middlewareData.regex | quote }} + replacement: {{ $middlewareData.replacement | quote }} + permanent: {{ $middlewareData.permanent }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/stripPrefixRegex.yaml b/stable/traefik/13.3.6/templates/middlewares/stripPrefixRegex.yaml new file mode 100644 index 00000000000..007c166ff39 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/stripPrefixRegex.yaml @@ -0,0 +1,20 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} + +{{ range $index, $middlewareData := .Values.middlewares.stripPrefixRegex }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + stripPrefixRegex: + regex: + {{- range $middlewareData.regex }} + - {{ . | quote }} + {{- end }} +{{ end }} diff --git a/stable/traefik/13.3.6/templates/middlewares/tc-chains.yaml b/stable/traefik/13.3.6/templates/middlewares/tc-chains.yaml new file mode 100644 index 00000000000..409766daa89 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/tc-chains.yaml @@ -0,0 +1,29 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-opencors-chain + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: basic-ratelimit + - name: tc-opencors-headers + - name: compress +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-closedcors-chain + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: basic-ratelimit + - name: tc-closedcors-headers + - name: compress diff --git a/stable/traefik/13.3.6/templates/middlewares/tc-headers.yaml b/stable/traefik/13.3.6/templates/middlewares/tc-headers.yaml new file mode 100644 index 00000000000..a0462f1fd73 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/tc-headers.yaml @@ -0,0 +1,62 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-opencors-headers + namespace: {{ $namespace }} +spec: + headers: + accessControlAllowHeaders: + - '*' + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + - POST + accessControlAllowOriginList: + - '*' + accessControlMaxAge: 100 + browserXssFilter: true + contentTypeNosniff: true + customRequestHeaders: + X-Forwarded-Proto: https + customResponseHeaders: + server: "" + forceSTSHeader: true + referrerPolicy: same-origin + sslForceHost: true + sslRedirect: true + stsSeconds: 63072000 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-closedcors-headers + namespace: {{ $namespace }} +spec: + headers: + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + accessControlMaxAge: 100 + sslRedirect: true + stsSeconds: 63072000 + # stsIncludeSubdomains: false + # stsPreload: false + forceSTSHeader: true + contentTypeNosniff: true + browserXssFilter: true + sslForceHost: true + referrerPolicy: same-origin + customRequestHeaders: + X-Forwarded-Proto: "https" + customResponseHeaders: + server: '' diff --git a/stable/traefik/13.3.6/templates/middlewares/tc-nextcloud.yaml b/stable/traefik/13.3.6/templates/middlewares/tc-nextcloud.yaml new file mode 100644 index 00000000000..6a3019d56c5 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/tc-nextcloud.yaml @@ -0,0 +1,25 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-nextcloud-redirectregex-dav + namespace: {{ $namespace }} +spec: + redirectRegex: + regex: "https://(.*)/.well-known/(card|cal)dav" + replacement: "https://${1}/remote.php/dav/" +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-nextcloud-chain + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: tc-nextcloud-redirectregex-dav diff --git a/stable/traefik/13.3.6/templates/middlewares/theme-park.yaml b/stable/traefik/13.3.6/templates/middlewares/theme-park.yaml new file mode 100644 index 00000000000..92a4257e279 --- /dev/null +++ b/stable/traefik/13.3.6/templates/middlewares/theme-park.yaml @@ -0,0 +1,26 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{- range $index, $middlewareData := .Values.middlewares.themePark }} + +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + plugin: + traefik-themepark: + app: {{ $middlewareData.appName }} + theme: {{ $middlewareData.themeName }} + baseUrl: {{ $middlewareData.baseUrl }} + {{- if $middlewareData.addons }} + addons: + {{- range $middlewareData.addons }} + - {{ . | quote }} + {{- end }} + {{- end }} +{{- end }} diff --git a/stable/traefik/13.3.6/values.yaml b/stable/traefik/13.3.6/values.yaml new file mode 100644 index 00000000000..e69de29bb2d