From 02ecf32620690982594841ec8534b64b336020d5 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sat, 23 Jul 2022 12:07:07 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- .../mariadb/{3.0.41 => 3.0.42}/CHANGELOG.md | 18 +- .../{memcached => mariadb}/3.0.42/Chart.lock | 2 +- .../mariadb/{3.0.41 => 3.0.42}/Chart.yaml | 2 +- .../mariadb/{3.0.41 => 3.0.42}/README.md | 2 +- .../mariadb/{3.0.41 => 3.0.42}/app-readme.md | 0 .../charts/common-10.4.6.tgz | Bin .../mariadb/{3.0.41 => 3.0.42}/ix_values.yaml | 2 +- .../mariadb/{3.0.41 => 3.0.42}/questions.yaml | 0 .../{3.0.41 => 3.0.42}/templates/common.yaml | 0 .../mariadb/{3.0.41 => 3.0.42}/values.yaml | 0 dependency/memcached/3.0.42/CHANGELOG.md | 99 - dependency/memcached/3.0.43/CHANGELOG.md | 99 + .../3.0.41 => memcached/3.0.43}/Chart.lock | 2 +- .../memcached/{3.0.42 => 3.0.43}/Chart.yaml | 2 +- .../memcached/{3.0.42 => 3.0.43}/README.md | 2 +- .../{3.0.42 => 3.0.43}/app-readme.md | 0 .../charts/common-10.4.6.tgz | Bin .../{3.0.42 => 3.0.43}/ix_values.yaml | 2 +- .../{3.0.42 => 3.0.43}/questions.yaml | 0 .../{3.0.42 => 3.0.43}/templates/common.yaml | 0 .../memcached/{3.0.42 => 3.0.43}/values.yaml | 0 .../{8.0.43 => 8.0.44}/CHANGELOG.md | 2 +- .../postgresql/{8.0.43 => 8.0.44}/Chart.lock | 2 +- .../postgresql/{8.0.43 => 8.0.44}/Chart.yaml | 2 +- .../postgresql/{8.0.43 => 8.0.44}/README.md | 2 +- .../{8.0.43 => 8.0.44}/app-readme.md | 0 .../charts/common-10.4.6.tgz | Bin .../{8.0.43 => 8.0.44}/ix_values.yaml | 2 +- .../{8.0.43 => 8.0.44}/questions.yaml | 0 .../{8.0.43 => 8.0.44}/templates/common.yaml | 0 .../postgresql/{8.0.43 => 8.0.44}/values.yaml | 0 .../redis/{3.0.42 => 3.0.43}/CHANGELOG.md | 18 +- .../redis/{3.0.42 => 3.0.43}/Chart.lock | 2 +- .../redis/{3.0.42 => 3.0.43}/Chart.yaml | 2 +- dependency/redis/{3.0.42 => 3.0.43}/README.md | 2 +- .../redis/{3.0.42 => 3.0.43}/app-readme.md | 0 .../charts/common-10.4.6.tgz | Bin .../redis/{3.0.42 => 3.0.43}/ix_values.yaml | 2 +- .../redis/{3.0.42 => 3.0.43}/questions.yaml | 0 .../{3.0.42 => 3.0.43}/templates/common.yaml | 0 .../redis/{3.0.42 => 3.0.43}/values.yaml | 0 .../minecraft-bungeecord/0.0.4/Chart.lock | 6 - .../{0.0.4 => 0.0.5}/CHANGELOG.md | 9 + .../minecraft-bungeecord/0.0.5/Chart.lock | 6 + .../{0.0.4 => 0.0.5}/Chart.yaml | 2 +- .../{0.0.4 => 0.0.5}/README.md | 2 +- .../{0.0.4 => 0.0.5}/app-readme.md | 0 .../{0.0.4 => 0.0.5}/charts/common-10.4.6.tgz | Bin .../{0.0.4 => 0.0.5}/ci/base-values.yaml | 0 .../{0.0.4 => 0.0.5}/ci/j11-values.yaml | 0 .../{0.0.4 => 0.0.5}/ci/j8-values.yaml | 0 .../{0.0.4 => 0.0.5}/ix_values.yaml | 2 +- .../{0.0.4 => 0.0.5}/questions.yaml | 0 .../{0.0.4 => 0.0.5}/templates/common.yaml | 0 .../{0.0.4 => 0.0.5}/values.yaml | 0 stable/authelia/11.0.27/CHANGELOG.md | 99 + stable/authelia/11.0.27/Chart.lock | 12 + stable/authelia/11.0.27/Chart.yaml | 46 + stable/authelia/11.0.27/README.md | 110 + stable/authelia/11.0.27/app-readme.md | 8 + .../11.0.27}/charts/common-10.4.6.tgz | Bin .../11.0.27/charts/postgresql-8.0.43.tgz | Bin 0 -> 60646 bytes .../authelia/11.0.27/charts/redis-3.0.42.tgz | Bin 0 -> 56258 bytes stable/authelia/11.0.27/ix_values.yaml | 622 +++ stable/authelia/11.0.27/questions.yaml | 3340 +++++++++++++++++ .../authelia/11.0.27/templates/_configmap.tpl | 248 ++ .../authelia/11.0.27/templates/_secrets.tpl | 67 + stable/authelia/11.0.27/templates/common.yaml | 74 + .../6.1.4 => authelia/11.0.27}/values.yaml | 0 stable/calibre-web/11.0.25/CHANGELOG.md | 99 + stable/calibre-web/11.0.25/Chart.lock | 6 + stable/calibre-web/11.0.25/Chart.yaml | 32 + stable/calibre-web/11.0.25/README.md | 108 + stable/calibre-web/11.0.25/app-readme.md | 8 + .../11.0.25}/charts/common-10.4.6.tgz | Bin stable/calibre-web/11.0.25/ix_values.yaml | 24 + stable/calibre-web/11.0.25/questions.yaml | 2430 ++++++++++++ .../calibre-web/11.0.25/templates/common.yaml | 1 + .../11.0.25}/values.yaml | 0 stable/k8s-gateway/6.1.4/Chart.lock | 6 - .../k8s-gateway/{6.1.4 => 6.1.5}/CHANGELOG.md | 18 +- stable/k8s-gateway/6.1.5/Chart.lock | 6 + .../k8s-gateway/{6.1.4 => 6.1.5}/Chart.yaml | 2 +- stable/k8s-gateway/{6.1.4 => 6.1.5}/README.md | 2 +- .../{6.1.4 => 6.1.5}/app-readme.md | 0 .../6.1.5/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../{6.1.4 => 6.1.5}/ix_values.yaml | 2 +- .../{6.1.4 => 6.1.5}/questions.yaml | 0 .../{6.1.4 => 6.1.5}/templates/_configmap.tpl | 0 .../{6.1.4 => 6.1.5}/templates/common.yaml | 0 stable/k8s-gateway/6.1.5/values.yaml | 0 stable/nextcloud/15.2.25/CHANGELOG.md | 99 + stable/nextcloud/15.2.25/Chart.lock | 15 + stable/nextcloud/15.2.25/Chart.yaml | 46 + stable/nextcloud/15.2.25/README.md | 111 + stable/nextcloud/15.2.25/app-readme.md | 8 + .../charts/collabora-online-12.1.20.tgz | Bin 0 -> 57537 bytes .../15.2.25/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../15.2.25/charts/postgresql-8.0.43.tgz | Bin 0 -> 60646 bytes .../nextcloud/15.2.25/charts/redis-3.0.42.tgz | Bin 0 -> 56258 bytes stable/nextcloud/15.2.25/ci/basic-values.yaml | 11 + stable/nextcloud/15.2.25/ix_values.yaml | 423 +++ stable/nextcloud/15.2.25/questions.yaml | 2665 +++++++++++++ .../15.2.25/templates/_configmap.tpl | 36 + .../nextcloud/15.2.25/templates/_cronjob.tpl | 64 + stable/nextcloud/15.2.25/templates/_hpb.tpl | 133 + .../15.2.25/templates/_imaginary.tpl | 40 + stable/nextcloud/15.2.25/templates/_nginx.tpl | 54 + .../nextcloud/15.2.25/templates/common.yaml | 22 + stable/nextcloud/15.2.25/values.yaml | 0 stable/pihole/6.0.23/Chart.lock | 6 - stable/pihole/{6.0.23 => 6.0.24}/CHANGELOG.md | 18 +- stable/pihole/6.0.24/Chart.lock | 6 + stable/pihole/{6.0.23 => 6.0.24}/Chart.yaml | 2 +- stable/pihole/{6.0.23 => 6.0.24}/README.md | 2 +- .../pihole/{6.0.23 => 6.0.24}/app-readme.md | 0 stable/pihole/6.0.24/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes .../pihole/{6.0.23 => 6.0.24}/ix_values.yaml | 2 +- .../pihole/{6.0.23 => 6.0.24}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{6.0.23 => 6.0.24}/templates/common.yaml | 0 stable/pihole/6.0.24/values.yaml | 0 stable/traefik/13.1.3/CHANGELOG.md | 99 + stable/traefik/13.1.3/Chart.lock | 6 + stable/traefik/13.1.3/Chart.yaml | 30 + stable/traefik/13.1.3/README.md | 109 + stable/traefik/13.1.3/app-readme.md | 8 + .../traefik/13.1.3/charts/common-10.4.6.tgz | Bin 0 -> 47360 bytes stable/traefik/13.1.3/crds/ingressroute.yaml | 209 ++ .../traefik/13.1.3/crds/ingressroutetcp.yaml | 169 + .../traefik/13.1.3/crds/ingressrouteudp.yaml | 87 + stable/traefik/13.1.3/crds/middlewares.yaml | 587 +++ .../traefik/13.1.3/crds/middlewarestcp.yaml | 61 + .../13.1.3/crds/serverstransports.yaml | 108 + stable/traefik/13.1.3/crds/tlsoptions.yaml | 92 + stable/traefik/13.1.3/crds/tlsstores.yaml | 68 + .../traefik/13.1.3/crds/traefikservices.yaml | 289 ++ stable/traefik/13.1.3/ix_values.yaml | 364 ++ stable/traefik/13.1.3/questions.yaml | 2632 +++++++++++++ stable/traefik/13.1.3/templates/_args.tpl | 155 + stable/traefik/13.1.3/templates/_helpers.tpl | 22 + .../13.1.3/templates/_ingressclass.tpl | 24 + .../13.1.3/templates/_ingressroute.tpl | 25 + .../traefik/13.1.3/templates/_portalhook.tpl | 26 + .../traefik/13.1.3/templates/_tlsoptions.tpl | 12 + stable/traefik/13.1.3/templates/common.yaml | 24 + .../middlewares/basic-middleware.yaml | 64 + .../templates/middlewares/basicauth.yaml | 34 + .../13.1.3/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 | 20 + stable/traefik/13.1.3/values.yaml | 0 160 files changed, 16851 insertions(+), 179 deletions(-) rename dependency/mariadb/{3.0.41 => 3.0.42}/CHANGELOG.md (90%) rename dependency/{memcached => mariadb}/3.0.42/Chart.lock (80%) rename dependency/mariadb/{3.0.41 => 3.0.42}/Chart.yaml (98%) rename dependency/mariadb/{3.0.41 => 3.0.42}/README.md (98%) rename dependency/mariadb/{3.0.41 => 3.0.42}/app-readme.md (100%) rename dependency/mariadb/{3.0.41 => 3.0.42}/charts/common-10.4.6.tgz (100%) rename dependency/mariadb/{3.0.41 => 3.0.42}/ix_values.yaml (97%) rename dependency/mariadb/{3.0.41 => 3.0.42}/questions.yaml (100%) rename dependency/mariadb/{3.0.41 => 3.0.42}/templates/common.yaml (100%) rename dependency/mariadb/{3.0.41 => 3.0.42}/values.yaml (100%) delete mode 100644 dependency/memcached/3.0.42/CHANGELOG.md create mode 100644 dependency/memcached/3.0.43/CHANGELOG.md rename dependency/{mariadb/3.0.41 => memcached/3.0.43}/Chart.lock (80%) rename dependency/memcached/{3.0.42 => 3.0.43}/Chart.yaml (98%) rename dependency/memcached/{3.0.42 => 3.0.43}/README.md (98%) rename dependency/memcached/{3.0.42 => 3.0.43}/app-readme.md (100%) rename dependency/memcached/{3.0.42 => 3.0.43}/charts/common-10.4.6.tgz (100%) rename dependency/memcached/{3.0.42 => 3.0.43}/ix_values.yaml (65%) rename dependency/memcached/{3.0.42 => 3.0.43}/questions.yaml (100%) rename dependency/memcached/{3.0.42 => 3.0.43}/templates/common.yaml (100%) rename dependency/memcached/{3.0.42 => 3.0.43}/values.yaml (100%) rename dependency/postgresql/{8.0.43 => 8.0.44}/CHANGELOG.md (100%) rename dependency/postgresql/{8.0.43 => 8.0.44}/Chart.lock (80%) rename dependency/postgresql/{8.0.43 => 8.0.44}/Chart.yaml (97%) rename dependency/postgresql/{8.0.43 => 8.0.44}/README.md (98%) rename dependency/postgresql/{8.0.43 => 8.0.44}/app-readme.md (100%) rename dependency/postgresql/{8.0.43 => 8.0.44}/charts/common-10.4.6.tgz (100%) rename dependency/postgresql/{8.0.43 => 8.0.44}/ix_values.yaml (97%) rename dependency/postgresql/{8.0.43 => 8.0.44}/questions.yaml (100%) rename dependency/postgresql/{8.0.43 => 8.0.44}/templates/common.yaml (100%) rename dependency/postgresql/{8.0.43 => 8.0.44}/values.yaml (100%) rename dependency/redis/{3.0.42 => 3.0.43}/CHANGELOG.md (91%) rename dependency/redis/{3.0.42 => 3.0.43}/Chart.lock (80%) rename dependency/redis/{3.0.42 => 3.0.43}/Chart.yaml (97%) rename dependency/redis/{3.0.42 => 3.0.43}/README.md (98%) rename dependency/redis/{3.0.42 => 3.0.43}/app-readme.md (100%) rename dependency/redis/{3.0.42 => 3.0.43}/charts/common-10.4.6.tgz (100%) rename dependency/redis/{3.0.42 => 3.0.43}/ix_values.yaml (98%) rename dependency/redis/{3.0.42 => 3.0.43}/questions.yaml (100%) rename dependency/redis/{3.0.42 => 3.0.43}/templates/common.yaml (100%) rename dependency/redis/{3.0.42 => 3.0.43}/values.yaml (100%) delete mode 100644 incubator/minecraft-bungeecord/0.0.4/Chart.lock rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/CHANGELOG.md (77%) create mode 100644 incubator/minecraft-bungeecord/0.0.5/Chart.lock rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/Chart.yaml (98%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/README.md (98%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/app-readme.md (100%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/charts/common-10.4.6.tgz (100%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/ci/base-values.yaml (100%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/ci/j11-values.yaml (100%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/ci/j8-values.yaml (100%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/ix_values.yaml (94%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/questions.yaml (100%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/templates/common.yaml (100%) rename incubator/minecraft-bungeecord/{0.0.4 => 0.0.5}/values.yaml (100%) create mode 100644 stable/authelia/11.0.27/CHANGELOG.md create mode 100644 stable/authelia/11.0.27/Chart.lock create mode 100644 stable/authelia/11.0.27/Chart.yaml create mode 100644 stable/authelia/11.0.27/README.md create mode 100644 stable/authelia/11.0.27/app-readme.md rename stable/{k8s-gateway/6.1.4 => authelia/11.0.27}/charts/common-10.4.6.tgz (100%) create mode 100644 stable/authelia/11.0.27/charts/postgresql-8.0.43.tgz create mode 100644 stable/authelia/11.0.27/charts/redis-3.0.42.tgz create mode 100644 stable/authelia/11.0.27/ix_values.yaml create mode 100644 stable/authelia/11.0.27/questions.yaml create mode 100644 stable/authelia/11.0.27/templates/_configmap.tpl create mode 100644 stable/authelia/11.0.27/templates/_secrets.tpl create mode 100644 stable/authelia/11.0.27/templates/common.yaml rename stable/{k8s-gateway/6.1.4 => authelia/11.0.27}/values.yaml (100%) create mode 100644 stable/calibre-web/11.0.25/CHANGELOG.md create mode 100644 stable/calibre-web/11.0.25/Chart.lock create mode 100644 stable/calibre-web/11.0.25/Chart.yaml create mode 100644 stable/calibre-web/11.0.25/README.md create mode 100644 stable/calibre-web/11.0.25/app-readme.md rename stable/{pihole/6.0.23 => calibre-web/11.0.25}/charts/common-10.4.6.tgz (100%) create mode 100644 stable/calibre-web/11.0.25/ix_values.yaml create mode 100644 stable/calibre-web/11.0.25/questions.yaml create mode 100644 stable/calibre-web/11.0.25/templates/common.yaml rename stable/{pihole/6.0.23 => calibre-web/11.0.25}/values.yaml (100%) delete mode 100644 stable/k8s-gateway/6.1.4/Chart.lock rename stable/k8s-gateway/{6.1.4 => 6.1.5}/CHANGELOG.md (89%) create mode 100644 stable/k8s-gateway/6.1.5/Chart.lock rename stable/k8s-gateway/{6.1.4 => 6.1.5}/Chart.yaml (97%) rename stable/k8s-gateway/{6.1.4 => 6.1.5}/README.md (98%) rename stable/k8s-gateway/{6.1.4 => 6.1.5}/app-readme.md (100%) create mode 100644 stable/k8s-gateway/6.1.5/charts/common-10.4.6.tgz rename stable/k8s-gateway/{6.1.4 => 6.1.5}/ix_values.yaml (97%) rename stable/k8s-gateway/{6.1.4 => 6.1.5}/questions.yaml (100%) rename stable/k8s-gateway/{6.1.4 => 6.1.5}/templates/_configmap.tpl (100%) rename stable/k8s-gateway/{6.1.4 => 6.1.5}/templates/common.yaml (100%) create mode 100644 stable/k8s-gateway/6.1.5/values.yaml create mode 100644 stable/nextcloud/15.2.25/CHANGELOG.md create mode 100644 stable/nextcloud/15.2.25/Chart.lock create mode 100644 stable/nextcloud/15.2.25/Chart.yaml create mode 100644 stable/nextcloud/15.2.25/README.md create mode 100644 stable/nextcloud/15.2.25/app-readme.md create mode 100644 stable/nextcloud/15.2.25/charts/collabora-online-12.1.20.tgz create mode 100644 stable/nextcloud/15.2.25/charts/common-10.4.6.tgz create mode 100644 stable/nextcloud/15.2.25/charts/postgresql-8.0.43.tgz create mode 100644 stable/nextcloud/15.2.25/charts/redis-3.0.42.tgz create mode 100644 stable/nextcloud/15.2.25/ci/basic-values.yaml create mode 100644 stable/nextcloud/15.2.25/ix_values.yaml create mode 100644 stable/nextcloud/15.2.25/questions.yaml create mode 100644 stable/nextcloud/15.2.25/templates/_configmap.tpl create mode 100644 stable/nextcloud/15.2.25/templates/_cronjob.tpl create mode 100644 stable/nextcloud/15.2.25/templates/_hpb.tpl create mode 100644 stable/nextcloud/15.2.25/templates/_imaginary.tpl create mode 100644 stable/nextcloud/15.2.25/templates/_nginx.tpl create mode 100644 stable/nextcloud/15.2.25/templates/common.yaml create mode 100644 stable/nextcloud/15.2.25/values.yaml delete mode 100644 stable/pihole/6.0.23/Chart.lock rename stable/pihole/{6.0.23 => 6.0.24}/CHANGELOG.md (90%) create mode 100644 stable/pihole/6.0.24/Chart.lock rename stable/pihole/{6.0.23 => 6.0.24}/Chart.yaml (97%) rename stable/pihole/{6.0.23 => 6.0.24}/README.md (98%) rename stable/pihole/{6.0.23 => 6.0.24}/app-readme.md (100%) create mode 100644 stable/pihole/6.0.24/charts/common-10.4.6.tgz rename stable/pihole/{6.0.23 => 6.0.24}/ix_values.yaml (90%) rename stable/pihole/{6.0.23 => 6.0.24}/questions.yaml (100%) rename stable/pihole/{6.0.23 => 6.0.24}/templates/_configmap.tpl (100%) rename stable/pihole/{6.0.23 => 6.0.24}/templates/common.yaml (100%) create mode 100644 stable/pihole/6.0.24/values.yaml create mode 100644 stable/traefik/13.1.3/CHANGELOG.md create mode 100644 stable/traefik/13.1.3/Chart.lock create mode 100644 stable/traefik/13.1.3/Chart.yaml create mode 100644 stable/traefik/13.1.3/README.md create mode 100644 stable/traefik/13.1.3/app-readme.md create mode 100644 stable/traefik/13.1.3/charts/common-10.4.6.tgz create mode 100644 stable/traefik/13.1.3/crds/ingressroute.yaml create mode 100644 stable/traefik/13.1.3/crds/ingressroutetcp.yaml create mode 100644 stable/traefik/13.1.3/crds/ingressrouteudp.yaml create mode 100644 stable/traefik/13.1.3/crds/middlewares.yaml create mode 100644 stable/traefik/13.1.3/crds/middlewarestcp.yaml create mode 100644 stable/traefik/13.1.3/crds/serverstransports.yaml create mode 100644 stable/traefik/13.1.3/crds/tlsoptions.yaml create mode 100644 stable/traefik/13.1.3/crds/tlsstores.yaml create mode 100644 stable/traefik/13.1.3/crds/traefikservices.yaml create mode 100644 stable/traefik/13.1.3/ix_values.yaml create mode 100644 stable/traefik/13.1.3/questions.yaml create mode 100644 stable/traefik/13.1.3/templates/_args.tpl create mode 100644 stable/traefik/13.1.3/templates/_helpers.tpl create mode 100644 stable/traefik/13.1.3/templates/_ingressclass.tpl create mode 100644 stable/traefik/13.1.3/templates/_ingressroute.tpl create mode 100644 stable/traefik/13.1.3/templates/_portalhook.tpl create mode 100644 stable/traefik/13.1.3/templates/_tlsoptions.tpl create mode 100644 stable/traefik/13.1.3/templates/common.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/basic-middleware.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/basicauth.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/chain.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/forwardauth.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/ipwhitelist.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/ratelimit.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/redirectScheme.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/redirectregex.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/stripPrefixRegex.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/tc-chains.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/tc-headers.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/tc-nextcloud.yaml create mode 100644 stable/traefik/13.1.3/templates/middlewares/theme-park.yaml create mode 100644 stable/traefik/13.1.3/values.yaml diff --git a/dependency/mariadb/3.0.41/CHANGELOG.md b/dependency/mariadb/3.0.42/CHANGELOG.md similarity index 90% rename from dependency/mariadb/3.0.41/CHANGELOG.md rename to dependency/mariadb/3.0.42/CHANGELOG.md index a204937177..200a380188 100644 --- a/dependency/mariadb/3.0.41/CHANGELOG.md +++ b/dependency/mariadb/3.0.42/CHANGELOG.md @@ -2,6 +2,15 @@ +## [mariadb-3.0.42](https://github.com/truecharts/apps/compare/mariadb-3.0.41...mariadb-3.0.42) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + ## [mariadb-3.0.41](https://github.com/truecharts/apps/compare/mariadb-3.0.40...mariadb-3.0.41) (2022-07-22) ### Chore @@ -88,12 +97,3 @@ - regenerate catalog and update template - - -## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - - diff --git a/dependency/memcached/3.0.42/Chart.lock b/dependency/mariadb/3.0.42/Chart.lock similarity index 80% rename from dependency/memcached/3.0.42/Chart.lock rename to dependency/mariadb/3.0.42/Chart.lock index 4be74f982d..4796acfade 100644 --- a/dependency/memcached/3.0.42/Chart.lock +++ b/dependency/mariadb/3.0.42/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://library-charts.truecharts.org version: 10.4.6 digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 -generated: "2022-07-22T23:05:34.537647685Z" +generated: "2022-07-23T11:58:38.010705589Z" diff --git a/dependency/mariadb/3.0.41/Chart.yaml b/dependency/mariadb/3.0.42/Chart.yaml similarity index 98% rename from dependency/mariadb/3.0.41/Chart.yaml rename to dependency/mariadb/3.0.42/Chart.yaml index a06cbdff24..5a3d63ecd8 100644 --- a/dependency/mariadb/3.0.41/Chart.yaml +++ b/dependency/mariadb/3.0.42/Chart.yaml @@ -24,7 +24,7 @@ sources: - https://github.com/prometheus/mysqld_exporter - https://mariadb.org type: application -version: 3.0.41 +version: 3.0.42 annotations: truecharts.org/catagories: | - database diff --git a/dependency/mariadb/3.0.41/README.md b/dependency/mariadb/3.0.42/README.md similarity index 98% rename from dependency/mariadb/3.0.41/README.md rename to dependency/mariadb/3.0.42/README.md index 454947796f..1d02f2d955 100644 --- a/dependency/mariadb/3.0.41/README.md +++ b/dependency/mariadb/3.0.42/README.md @@ -1,6 +1,6 @@ # mariadb -![Version: 3.0.41](https://img.shields.io/badge/Version-3.0.41-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 10.8.3](https://img.shields.io/badge/AppVersion-10.8.3-informational?style=flat-square) +![Version: 3.0.42](https://img.shields.io/badge/Version-3.0.42-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 10.8.3](https://img.shields.io/badge/AppVersion-10.8.3-informational?style=flat-square) Fast, reliable, scalable, and easy to use open-source relational database system. diff --git a/dependency/mariadb/3.0.41/app-readme.md b/dependency/mariadb/3.0.42/app-readme.md similarity index 100% rename from dependency/mariadb/3.0.41/app-readme.md rename to dependency/mariadb/3.0.42/app-readme.md diff --git a/dependency/mariadb/3.0.41/charts/common-10.4.6.tgz b/dependency/mariadb/3.0.42/charts/common-10.4.6.tgz similarity index 100% rename from dependency/mariadb/3.0.41/charts/common-10.4.6.tgz rename to dependency/mariadb/3.0.42/charts/common-10.4.6.tgz diff --git a/dependency/mariadb/3.0.41/ix_values.yaml b/dependency/mariadb/3.0.42/ix_values.yaml similarity index 97% rename from dependency/mariadb/3.0.41/ix_values.yaml rename to dependency/mariadb/3.0.42/ix_values.yaml index a19c3b7df7..51e54d286c 100644 --- a/dependency/mariadb/3.0.41/ix_values.yaml +++ b/dependency/mariadb/3.0.42/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/mariadb pullPolicy: IfNotPresent - tag: v10.8.3@sha256:ebb58d2e01448bef261ff6af2ff8a9f1642b1c3aa220fc730d26df697bbed79f + tag: v10.8.3@sha256:f29871317a5c327b0df45dc886acdfd641c12cb28a973a3e20cb331d47a330b1 controller: # -- Set the controller type. diff --git a/dependency/mariadb/3.0.41/questions.yaml b/dependency/mariadb/3.0.42/questions.yaml similarity index 100% rename from dependency/mariadb/3.0.41/questions.yaml rename to dependency/mariadb/3.0.42/questions.yaml diff --git a/dependency/mariadb/3.0.41/templates/common.yaml b/dependency/mariadb/3.0.42/templates/common.yaml similarity index 100% rename from dependency/mariadb/3.0.41/templates/common.yaml rename to dependency/mariadb/3.0.42/templates/common.yaml diff --git a/dependency/mariadb/3.0.41/values.yaml b/dependency/mariadb/3.0.42/values.yaml similarity index 100% rename from dependency/mariadb/3.0.41/values.yaml rename to dependency/mariadb/3.0.42/values.yaml diff --git a/dependency/memcached/3.0.42/CHANGELOG.md b/dependency/memcached/3.0.42/CHANGELOG.md deleted file mode 100644 index 4fc7a11103..0000000000 --- a/dependency/memcached/3.0.42/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -# Changelog - - - -## [memcached-3.0.42](https://github.com/truecharts/apps/compare/memcached-3.0.41...memcached-3.0.42) (2022-07-22) - -### Chore - -- Bump all charts to generate config and container references due to huge increase of repository - - - -## [memcached-3.0.41](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.41) (2022-07-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) -- update helm chart common to v10.4.6 - -### Feat - -- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) - - - -## [memcached-3.0.41](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.41) (2022-07-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) -- update helm chart common to v10.4.6 - -### Feat - -- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) - - - -## [memcached-3.0.41](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.41) (2022-07-21) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) -- update helm chart common to v10.4.6 - -### Feat - -- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) - - - -## [memcached-3.0.40](https://github.com/truecharts/apps/compare/memcached-3.0.39...memcached-3.0.40) (2022-07-20) - -### Chore - -- update helm chart common to v10.4.6 - -### Feat - -- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) - - - -## [memcached-3.0.39](https://github.com/truecharts/apps/compare/memcached-3.0.38...memcached-3.0.39) (2022-07-20) - -### Chore - -- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) - - - -## [memcached-3.0.38](https://github.com/truecharts/apps/compare/memcached-3.0.37...memcached-3.0.38) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - - - -## [memcached-3.0.37](https://github.com/truecharts/apps/compare/memcached-3.0.36...memcached-3.0.37) (2022-07-15) - -### Chore - -- update docker general non-major ([#3184](https://github.com/truecharts/apps/issues/3184)) - - - - -## [memcached-3.0.35](https://github.com/truecharts/apps/compare/memcached-3.0.33...memcached-3.0.35) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts diff --git a/dependency/memcached/3.0.43/CHANGELOG.md b/dependency/memcached/3.0.43/CHANGELOG.md new file mode 100644 index 0000000000..54d8e76824 --- /dev/null +++ b/dependency/memcached/3.0.43/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [postgresql-8.0.44](https://github.com/truecharts/apps/compare/postgresql-8.0.43...postgresql-8.0.44) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + +## [postgresql-8.0.43](https://github.com/truecharts/apps/compare/postgresql-8.0.42...postgresql-8.0.43) (2022-07-22) + +### Chore + +- Bump all charts to generate config and container references due to huge increase of repository + + + +## [postgresql-8.0.42](https://github.com/truecharts/apps/compare/postgresql-8.0.41...postgresql-8.0.42) (2022-07-22) + +### Chore + +- update docker general non-major ([#3258](https://github.com/truecharts/apps/issues/3258)) + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-21) + +### Chore + +- Auto-update chart README [skip ci] +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [postgresql-8.0.41](https://github.com/truecharts/apps/compare/postgresql-8.0.40...postgresql-8.0.41) (2022-07-20) + +### Chore + +- update helm chart common to v10.4.6 + +### Feat + +- force the use of TCCR in CI ([#3226](https://github.com/truecharts/apps/issues/3226)) + + + +## [postgresql-8.0.40](https://github.com/truecharts/apps/compare/postgresql-8.0.39...postgresql-8.0.40) (2022-07-20) + +### Chore + +- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) + + + +## [postgresql-8.0.39](https://github.com/truecharts/apps/compare/postgresql-8.0.38...postgresql-8.0.39) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [postgresql-8.0.38](https://github.com/truecharts/apps/compare/postgresql-8.0.37...postgresql-8.0.38) (2022-07-17) + +### Chore + +- update docker general non-major ([#3198](https://github.com/truecharts/apps/issues/3198)) + + + +## [postgresql-8.0.37](https://github.com/truecharts/apps/compare/postgresql-8.0.36...postgresql-8.0.37) (2022-07-14) + +### Fix + +- regenerate catalog and update template diff --git a/dependency/mariadb/3.0.41/Chart.lock b/dependency/memcached/3.0.43/Chart.lock similarity index 80% rename from dependency/mariadb/3.0.41/Chart.lock rename to dependency/memcached/3.0.43/Chart.lock index 11ddff2d05..af6e679925 100644 --- a/dependency/mariadb/3.0.41/Chart.lock +++ b/dependency/memcached/3.0.43/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://library-charts.truecharts.org version: 10.4.6 digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 -generated: "2022-07-22T23:05:34.485654827Z" +generated: "2022-07-23T11:58:37.732412592Z" diff --git a/dependency/memcached/3.0.42/Chart.yaml b/dependency/memcached/3.0.43/Chart.yaml similarity index 98% rename from dependency/memcached/3.0.42/Chart.yaml rename to dependency/memcached/3.0.43/Chart.yaml index 111572f990..0883631698 100644 --- a/dependency/memcached/3.0.42/Chart.yaml +++ b/dependency/memcached/3.0.43/Chart.yaml @@ -22,7 +22,7 @@ sources: - https://github.com/bitnami/bitnami-docker-memcached - http://memcached.org/ type: application -version: 3.0.42 +version: 3.0.43 annotations: truecharts.org/catagories: | - database diff --git a/dependency/memcached/3.0.42/README.md b/dependency/memcached/3.0.43/README.md similarity index 98% rename from dependency/memcached/3.0.42/README.md rename to dependency/memcached/3.0.43/README.md index 14b776391d..165cbdeb44 100644 --- a/dependency/memcached/3.0.42/README.md +++ b/dependency/memcached/3.0.43/README.md @@ -1,6 +1,6 @@ # memcached -![Version: 3.0.42](https://img.shields.io/badge/Version-3.0.42-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.15](https://img.shields.io/badge/AppVersion-1.6.15-informational?style=flat-square) +![Version: 3.0.43](https://img.shields.io/badge/Version-3.0.43-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.15](https://img.shields.io/badge/AppVersion-1.6.15-informational?style=flat-square) Memcached is a memory-backed database caching solution diff --git a/dependency/memcached/3.0.42/app-readme.md b/dependency/memcached/3.0.43/app-readme.md similarity index 100% rename from dependency/memcached/3.0.42/app-readme.md rename to dependency/memcached/3.0.43/app-readme.md diff --git a/dependency/memcached/3.0.42/charts/common-10.4.6.tgz b/dependency/memcached/3.0.43/charts/common-10.4.6.tgz similarity index 100% rename from dependency/memcached/3.0.42/charts/common-10.4.6.tgz rename to dependency/memcached/3.0.43/charts/common-10.4.6.tgz diff --git a/dependency/memcached/3.0.42/ix_values.yaml b/dependency/memcached/3.0.43/ix_values.yaml similarity index 65% rename from dependency/memcached/3.0.42/ix_values.yaml rename to dependency/memcached/3.0.43/ix_values.yaml index 7a8483a529..c7b77d6f68 100644 --- a/dependency/memcached/3.0.42/ix_values.yaml +++ b/dependency/memcached/3.0.43/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/memcached pullPolicy: IfNotPresent - tag: v1.6.15@sha256:33973f411fb8647f8f086f8a4b7018f4a40ddd377a73c85972068aad632400f5 + tag: v1.6.15@sha256:410d28ed37565ce4712b1f0e61c6367d0fbccfe22d908d810e87b082a15e41a6 service: main: diff --git a/dependency/memcached/3.0.42/questions.yaml b/dependency/memcached/3.0.43/questions.yaml similarity index 100% rename from dependency/memcached/3.0.42/questions.yaml rename to dependency/memcached/3.0.43/questions.yaml diff --git a/dependency/memcached/3.0.42/templates/common.yaml b/dependency/memcached/3.0.43/templates/common.yaml similarity index 100% rename from dependency/memcached/3.0.42/templates/common.yaml rename to dependency/memcached/3.0.43/templates/common.yaml diff --git a/dependency/memcached/3.0.42/values.yaml b/dependency/memcached/3.0.43/values.yaml similarity index 100% rename from dependency/memcached/3.0.42/values.yaml rename to dependency/memcached/3.0.43/values.yaml diff --git a/dependency/postgresql/8.0.43/CHANGELOG.md b/dependency/postgresql/8.0.44/CHANGELOG.md similarity index 100% rename from dependency/postgresql/8.0.43/CHANGELOG.md rename to dependency/postgresql/8.0.44/CHANGELOG.md index 8383476c34..77252477b3 100644 --- a/dependency/postgresql/8.0.43/CHANGELOG.md +++ b/dependency/postgresql/8.0.44/CHANGELOG.md @@ -2,6 +2,7 @@ + ## [postgresql-8.0.43](https://github.com/truecharts/apps/compare/postgresql-8.0.42...postgresql-8.0.43) (2022-07-22) ### Chore @@ -96,4 +97,3 @@ ### Fix - bump to ensure .helmignore is present on all Charts - diff --git a/dependency/postgresql/8.0.43/Chart.lock b/dependency/postgresql/8.0.44/Chart.lock similarity index 80% rename from dependency/postgresql/8.0.43/Chart.lock rename to dependency/postgresql/8.0.44/Chart.lock index 3853931447..aca810cc23 100644 --- a/dependency/postgresql/8.0.43/Chart.lock +++ b/dependency/postgresql/8.0.44/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://library-charts.truecharts.org version: 10.4.6 digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 -generated: "2022-07-22T23:05:56.861329292Z" +generated: "2022-07-23T11:58:38.004616811Z" diff --git a/dependency/postgresql/8.0.43/Chart.yaml b/dependency/postgresql/8.0.44/Chart.yaml similarity index 97% rename from dependency/postgresql/8.0.43/Chart.yaml rename to dependency/postgresql/8.0.44/Chart.yaml index 134d83ac53..6dd74cbb51 100644 --- a/dependency/postgresql/8.0.43/Chart.yaml +++ b/dependency/postgresql/8.0.44/Chart.yaml @@ -22,7 +22,7 @@ name: postgresql sources: - https://www.postgresql.org/ type: application -version: 8.0.43 +version: 8.0.44 annotations: truecharts.org/catagories: | - database diff --git a/dependency/postgresql/8.0.43/README.md b/dependency/postgresql/8.0.44/README.md similarity index 98% rename from dependency/postgresql/8.0.43/README.md rename to dependency/postgresql/8.0.44/README.md index aa74d1b939..ead0f8fee7 100644 --- a/dependency/postgresql/8.0.43/README.md +++ b/dependency/postgresql/8.0.44/README.md @@ -1,6 +1,6 @@ # postgresql -![Version: 8.0.43](https://img.shields.io/badge/Version-8.0.43-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 14.4.0](https://img.shields.io/badge/AppVersion-14.4.0-informational?style=flat-square) +![Version: 8.0.44](https://img.shields.io/badge/Version-8.0.44-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 14.4.0](https://img.shields.io/badge/AppVersion-14.4.0-informational?style=flat-square) PostgresSQL diff --git a/dependency/postgresql/8.0.43/app-readme.md b/dependency/postgresql/8.0.44/app-readme.md similarity index 100% rename from dependency/postgresql/8.0.43/app-readme.md rename to dependency/postgresql/8.0.44/app-readme.md diff --git a/dependency/postgresql/8.0.43/charts/common-10.4.6.tgz b/dependency/postgresql/8.0.44/charts/common-10.4.6.tgz similarity index 100% rename from dependency/postgresql/8.0.43/charts/common-10.4.6.tgz rename to dependency/postgresql/8.0.44/charts/common-10.4.6.tgz diff --git a/dependency/postgresql/8.0.43/ix_values.yaml b/dependency/postgresql/8.0.44/ix_values.yaml similarity index 97% rename from dependency/postgresql/8.0.43/ix_values.yaml rename to dependency/postgresql/8.0.44/ix_values.yaml index 3872acfb9e..7acdaf4380 100644 --- a/dependency/postgresql/8.0.43/ix_values.yaml +++ b/dependency/postgresql/8.0.44/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/postgresql pullPolicy: IfNotPresent - tag: v14.4.0@sha256:1b1f02b94a647df8a0473de36c553366f474c87119cab8a3c91582194acc7b2e + tag: v14.4.0@sha256:bf74ee94ccd68994bc8a4f72d5df239007bce7dbc11baf4dd6ca416838dcface controller: # -- Set the controller type. diff --git a/dependency/postgresql/8.0.43/questions.yaml b/dependency/postgresql/8.0.44/questions.yaml similarity index 100% rename from dependency/postgresql/8.0.43/questions.yaml rename to dependency/postgresql/8.0.44/questions.yaml diff --git a/dependency/postgresql/8.0.43/templates/common.yaml b/dependency/postgresql/8.0.44/templates/common.yaml similarity index 100% rename from dependency/postgresql/8.0.43/templates/common.yaml rename to dependency/postgresql/8.0.44/templates/common.yaml diff --git a/dependency/postgresql/8.0.43/values.yaml b/dependency/postgresql/8.0.44/values.yaml similarity index 100% rename from dependency/postgresql/8.0.43/values.yaml rename to dependency/postgresql/8.0.44/values.yaml diff --git a/dependency/redis/3.0.42/CHANGELOG.md b/dependency/redis/3.0.43/CHANGELOG.md similarity index 91% rename from dependency/redis/3.0.42/CHANGELOG.md rename to dependency/redis/3.0.43/CHANGELOG.md index a2bcd9dc9b..733d8460aa 100644 --- a/dependency/redis/3.0.42/CHANGELOG.md +++ b/dependency/redis/3.0.43/CHANGELOG.md @@ -2,6 +2,15 @@ +## [redis-3.0.43](https://github.com/truecharts/apps/compare/redisinsight-0.0.11...redis-3.0.43) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + ## [redis-3.0.42](https://github.com/truecharts/apps/compare/redis-3.0.41...redis-3.0.42) (2022-07-22) ### Chore @@ -88,12 +97,3 @@ - update docker general non-major ([#3198](https://github.com/truecharts/apps/issues/3198)) - -## [redis-3.0.37](https://github.com/truecharts/apps/compare/redis-3.0.36...redis-3.0.37) (2022-07-14) - -### Fix - -- regenerate catalog and update template - - - diff --git a/dependency/redis/3.0.42/Chart.lock b/dependency/redis/3.0.43/Chart.lock similarity index 80% rename from dependency/redis/3.0.42/Chart.lock rename to dependency/redis/3.0.43/Chart.lock index 5407497005..97b53637e9 100644 --- a/dependency/redis/3.0.42/Chart.lock +++ b/dependency/redis/3.0.43/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://library-charts.truecharts.org version: 10.4.6 digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 -generated: "2022-07-22T23:05:56.867034627Z" +generated: "2022-07-23T11:58:38.082503152Z" diff --git a/dependency/redis/3.0.42/Chart.yaml b/dependency/redis/3.0.43/Chart.yaml similarity index 97% rename from dependency/redis/3.0.42/Chart.yaml rename to dependency/redis/3.0.43/Chart.yaml index 1c4eae1efa..894ae42a40 100644 --- a/dependency/redis/3.0.42/Chart.yaml +++ b/dependency/redis/3.0.43/Chart.yaml @@ -22,7 +22,7 @@ sources: - https://github.com/bitnami/bitnami-docker-redis - http://redis.io/ type: application -version: 3.0.42 +version: 3.0.43 annotations: truecharts.org/catagories: | - database diff --git a/dependency/redis/3.0.42/README.md b/dependency/redis/3.0.43/README.md similarity index 98% rename from dependency/redis/3.0.42/README.md rename to dependency/redis/3.0.43/README.md index aafc1193b0..0749c7a5c3 100644 --- a/dependency/redis/3.0.42/README.md +++ b/dependency/redis/3.0.43/README.md @@ -1,6 +1,6 @@ # redis -![Version: 3.0.42](https://img.shields.io/badge/Version-3.0.42-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 7.0.4](https://img.shields.io/badge/AppVersion-7.0.4-informational?style=flat-square) +![Version: 3.0.43](https://img.shields.io/badge/Version-3.0.43-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 7.0.4](https://img.shields.io/badge/AppVersion-7.0.4-informational?style=flat-square) Open source, advanced key-value store. diff --git a/dependency/redis/3.0.42/app-readme.md b/dependency/redis/3.0.43/app-readme.md similarity index 100% rename from dependency/redis/3.0.42/app-readme.md rename to dependency/redis/3.0.43/app-readme.md diff --git a/dependency/redis/3.0.42/charts/common-10.4.6.tgz b/dependency/redis/3.0.43/charts/common-10.4.6.tgz similarity index 100% rename from dependency/redis/3.0.42/charts/common-10.4.6.tgz rename to dependency/redis/3.0.43/charts/common-10.4.6.tgz diff --git a/dependency/redis/3.0.42/ix_values.yaml b/dependency/redis/3.0.43/ix_values.yaml similarity index 98% rename from dependency/redis/3.0.42/ix_values.yaml rename to dependency/redis/3.0.43/ix_values.yaml index d1a6bc267a..95d5e15c7c 100644 --- a/dependency/redis/3.0.42/ix_values.yaml +++ b/dependency/redis/3.0.43/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/redis pullPolicy: IfNotPresent - tag: v7.0.4@sha256:fd9a25142860d1c19042730a135d25e48bc1e287b6bb29290bd742c059321d48 + tag: v7.0.4@sha256:7bfc6e94efebcd62bae37d9960ff22fb95d22567f9db735c899afb12d9eb058d controller: # -- Set the controller type. diff --git a/dependency/redis/3.0.42/questions.yaml b/dependency/redis/3.0.43/questions.yaml similarity index 100% rename from dependency/redis/3.0.42/questions.yaml rename to dependency/redis/3.0.43/questions.yaml diff --git a/dependency/redis/3.0.42/templates/common.yaml b/dependency/redis/3.0.43/templates/common.yaml similarity index 100% rename from dependency/redis/3.0.42/templates/common.yaml rename to dependency/redis/3.0.43/templates/common.yaml diff --git a/dependency/redis/3.0.42/values.yaml b/dependency/redis/3.0.43/values.yaml similarity index 100% rename from dependency/redis/3.0.42/values.yaml rename to dependency/redis/3.0.43/values.yaml diff --git a/incubator/minecraft-bungeecord/0.0.4/Chart.lock b/incubator/minecraft-bungeecord/0.0.4/Chart.lock deleted file mode 100644 index 8f9969227e..0000000000 --- a/incubator/minecraft-bungeecord/0.0.4/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.4.6 -digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 -generated: "2022-07-22T23:26:30.175949032Z" diff --git a/incubator/minecraft-bungeecord/0.0.4/CHANGELOG.md b/incubator/minecraft-bungeecord/0.0.5/CHANGELOG.md similarity index 77% rename from incubator/minecraft-bungeecord/0.0.4/CHANGELOG.md rename to incubator/minecraft-bungeecord/0.0.5/CHANGELOG.md index f6dae03c54..9f18e2d5b7 100644 --- a/incubator/minecraft-bungeecord/0.0.4/CHANGELOG.md +++ b/incubator/minecraft-bungeecord/0.0.5/CHANGELOG.md @@ -2,6 +2,15 @@ +## [minecraft-bungeecord-0.0.5](https://github.com/truecharts/apps/compare/minecraft-bungeecord-0.0.4...minecraft-bungeecord-0.0.5) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + ## [minecraft-bungeecord-0.0.4](https://github.com/truecharts/apps/compare/minecraft-bungeecord-0.0.2...minecraft-bungeecord-0.0.4) (2022-07-22) ### Chore diff --git a/incubator/minecraft-bungeecord/0.0.5/Chart.lock b/incubator/minecraft-bungeecord/0.0.5/Chart.lock new file mode 100644 index 0000000000..2379a31fd7 --- /dev/null +++ b/incubator/minecraft-bungeecord/0.0.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-23T11:59:01.005547544Z" diff --git a/incubator/minecraft-bungeecord/0.0.4/Chart.yaml b/incubator/minecraft-bungeecord/0.0.5/Chart.yaml similarity index 98% rename from incubator/minecraft-bungeecord/0.0.4/Chart.yaml rename to incubator/minecraft-bungeecord/0.0.5/Chart.yaml index ed10f5df4e..64c96aa62b 100644 --- a/incubator/minecraft-bungeecord/0.0.4/Chart.yaml +++ b/incubator/minecraft-bungeecord/0.0.5/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 kubeVersion: ">=1.16.0-0" name: minecraft-bungeecord -version: 0.0.4 +version: 0.0.5 appVersion: "2022.4.1" description: A Spigot BungeeCord server. type: application diff --git a/incubator/minecraft-bungeecord/0.0.4/README.md b/incubator/minecraft-bungeecord/0.0.5/README.md similarity index 98% rename from incubator/minecraft-bungeecord/0.0.4/README.md rename to incubator/minecraft-bungeecord/0.0.5/README.md index 23b30c0f62..59f02cd5c3 100644 --- a/incubator/minecraft-bungeecord/0.0.4/README.md +++ b/incubator/minecraft-bungeecord/0.0.5/README.md @@ -1,6 +1,6 @@ # minecraft-bungeecord -![Version: 0.0.4](https://img.shields.io/badge/Version-0.0.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2022.4.1](https://img.shields.io/badge/AppVersion-2022.4.1-informational?style=flat-square) +![Version: 0.0.5](https://img.shields.io/badge/Version-0.0.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2022.4.1](https://img.shields.io/badge/AppVersion-2022.4.1-informational?style=flat-square) A Spigot BungeeCord server. diff --git a/incubator/minecraft-bungeecord/0.0.4/app-readme.md b/incubator/minecraft-bungeecord/0.0.5/app-readme.md similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/app-readme.md rename to incubator/minecraft-bungeecord/0.0.5/app-readme.md diff --git a/incubator/minecraft-bungeecord/0.0.4/charts/common-10.4.6.tgz b/incubator/minecraft-bungeecord/0.0.5/charts/common-10.4.6.tgz similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/charts/common-10.4.6.tgz rename to incubator/minecraft-bungeecord/0.0.5/charts/common-10.4.6.tgz diff --git a/incubator/minecraft-bungeecord/0.0.4/ci/base-values.yaml b/incubator/minecraft-bungeecord/0.0.5/ci/base-values.yaml similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/ci/base-values.yaml rename to incubator/minecraft-bungeecord/0.0.5/ci/base-values.yaml diff --git a/incubator/minecraft-bungeecord/0.0.4/ci/j11-values.yaml b/incubator/minecraft-bungeecord/0.0.5/ci/j11-values.yaml similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/ci/j11-values.yaml rename to incubator/minecraft-bungeecord/0.0.5/ci/j11-values.yaml diff --git a/incubator/minecraft-bungeecord/0.0.4/ci/j8-values.yaml b/incubator/minecraft-bungeecord/0.0.5/ci/j8-values.yaml similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/ci/j8-values.yaml rename to incubator/minecraft-bungeecord/0.0.5/ci/j8-values.yaml diff --git a/incubator/minecraft-bungeecord/0.0.4/ix_values.yaml b/incubator/minecraft-bungeecord/0.0.5/ix_values.yaml similarity index 94% rename from incubator/minecraft-bungeecord/0.0.4/ix_values.yaml rename to incubator/minecraft-bungeecord/0.0.5/ix_values.yaml index a2bae8d8c9..8e0d3ede43 100644 --- a/incubator/minecraft-bungeecord/0.0.4/ix_values.yaml +++ b/incubator/minecraft-bungeecord/0.0.5/ix_values.yaml @@ -8,7 +8,7 @@ j17Image: pullPolicy: Always j11Image: repository: tccr.io/truecharts/bungeecord-java11 - tag: v2022.4.1@sha256:7594351f800ceddc45a00b013cb57d2867d1abbbbf573ceeec83c335acc21a1b + tag: v2022.4.1@sha256:397ef704e38c880626e8509c3e0feab39b3c4b5adabb6abd812dc717d29d2549 pullPolicy: Always j8Image: repository: tccr.io/truecharts/bungeecord-java8 diff --git a/incubator/minecraft-bungeecord/0.0.4/questions.yaml b/incubator/minecraft-bungeecord/0.0.5/questions.yaml similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/questions.yaml rename to incubator/minecraft-bungeecord/0.0.5/questions.yaml diff --git a/incubator/minecraft-bungeecord/0.0.4/templates/common.yaml b/incubator/minecraft-bungeecord/0.0.5/templates/common.yaml similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/templates/common.yaml rename to incubator/minecraft-bungeecord/0.0.5/templates/common.yaml diff --git a/incubator/minecraft-bungeecord/0.0.4/values.yaml b/incubator/minecraft-bungeecord/0.0.5/values.yaml similarity index 100% rename from incubator/minecraft-bungeecord/0.0.4/values.yaml rename to incubator/minecraft-bungeecord/0.0.5/values.yaml diff --git a/stable/authelia/11.0.27/CHANGELOG.md b/stable/authelia/11.0.27/CHANGELOG.md new file mode 100644 index 0000000000..76e786a705 --- /dev/null +++ b/stable/authelia/11.0.27/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [authelia-11.0.27](https://github.com/truecharts/apps/compare/authelia-11.0.26...authelia-11.0.27) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + +## [authelia-11.0.26](https://github.com/truecharts/apps/compare/authelia-11.0.25...authelia-11.0.26) (2022-07-23) + +### Chore + +- update helm general non-major helm releases ([#3274](https://github.com/truecharts/apps/issues/3274)) + + + + +## [authelia-11.0.25](https://github.com/truecharts/apps/compare/authelia-11.0.23...authelia-11.0.25) (2022-07-22) + +### Chore + +- Bump all charts to generate config and container references due to huge increase of repository + - update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) + + + +## [authelia-11.0.23](https://github.com/truecharts/apps/compare/authelia-11.0.22...authelia-11.0.23) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [authelia-11.0.22](https://github.com/truecharts/apps/compare/authelia-11.0.21...authelia-11.0.22) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [authelia-11.0.21](https://github.com/truecharts/apps/compare/authelia-11.0.19...authelia-11.0.21) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [authelia-11.0.19](https://github.com/truecharts/apps/compare/authelia-11.0.18...authelia-11.0.19) (2022-07-14) + +### Fix + +- disable HTTP probes temporarily ([#3173](https://github.com/truecharts/apps/issues/3173)) + + + +## [authelia-11.0.18](https://github.com/truecharts/apps/compare/authelia-11.0.16...authelia-11.0.18) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + + +## [authelia-11.0.16](https://github.com/truecharts/apps/compare/authelia-11.0.15...authelia-11.0.16) (2022-07-12) + +### Chore + +- bump to regenerate documentation + + + + +### [authelia-11.0.15](https://github.com/truecharts/apps/compare/authelia-11.0.14...authelia-11.0.15) (2022-07-12) + +#### Chore + +* update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) + + + + +### [authelia-11.0.14](https://github.com/truecharts/apps/compare/authelia-11.0.13...authelia-11.0.14) (2022-07-11) + +#### Chore + +* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) + + + + diff --git a/stable/authelia/11.0.27/Chart.lock b/stable/authelia/11.0.27/Chart.lock new file mode 100644 index 0000000000..e848962a10 --- /dev/null +++ b/stable/authelia/11.0.27/Chart.lock @@ -0,0 +1,12 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +- name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.43 +- name: redis + repository: https://charts.truecharts.org + version: 3.0.42 +digest: sha256:3700174c3cf3786c855d1b71c8ef1129a666dc99f60e23bc6c0041f4e5139eb5 +generated: "2022-07-23T11:59:17.112078045Z" diff --git a/stable/authelia/11.0.27/Chart.yaml b/stable/authelia/11.0.27/Chart.yaml new file mode 100644 index 0000000000..c96c1d7a36 --- /dev/null +++ b/stable/authelia/11.0.27/Chart.yaml @@ -0,0 +1,46 @@ +apiVersion: v2 +appVersion: "4.36.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.43 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 3.0.42 +deprecated: false +description: Authelia is a Single Sign-On Multi-Factor portal for web apps +home: https://github.com/truecharts/apps/tree/master/charts/stable/authelia +icon: https://truecharts.org/img/chart-icons/authelia.png +keywords: + - authelia + - authentication + - login + - SSO + - Authentication + - Security + - Two-Factor + - U2F + - YubiKey + - Push Notifications + - LDAP +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: authelia +sources: + - https://github.com/authelia/chartrepo + - https://github.com/authelia/authelia +type: application +version: 11.0.27 +annotations: + truecharts.org/catagories: | + - security + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/authelia/11.0.27/README.md b/stable/authelia/11.0.27/README.md new file mode 100644 index 0000000000..29cb14f0df --- /dev/null +++ b/stable/authelia/11.0.27/README.md @@ -0,0 +1,110 @@ +# authelia + +![Version: 11.0.27](https://img.shields.io/badge/Version-11.0.27-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 4.36.2](https://img.shields.io/badge/AppVersion-4.36.2-informational?style=flat-square) + +Authelia is a Single Sign-On Multi-Factor portal for web apps + +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: [authelia](https://truecharts.org/docs/charts/stable/authelia) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.truecharts.org/ | postgresql | 8.0.43 | +| https://charts.truecharts.org | redis | 3.0.42 | +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `authelia` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install authelia TrueCharts/authelia +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `authelia` deployment + +```console +helm uninstall authelia +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./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 Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install authelia \ + --set env.TZ="America/New York" \ + TrueCharts/authelia +``` + +#### 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 authelia TrueCharts/authelia -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/docs/manual/Quick-Start%20Guides/06-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/authelia/11.0.27/app-readme.md b/stable/authelia/11.0.27/app-readme.md new file mode 100644 index 0000000000..24a4c3a095 --- /dev/null +++ b/stable/authelia/11.0.27/app-readme.md @@ -0,0 +1,8 @@ +Authelia is a Single Sign-On Multi-Factor portal for web apps + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/authelia + +--- + +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/k8s-gateway/6.1.4/charts/common-10.4.6.tgz b/stable/authelia/11.0.27/charts/common-10.4.6.tgz similarity index 100% rename from stable/k8s-gateway/6.1.4/charts/common-10.4.6.tgz rename to stable/authelia/11.0.27/charts/common-10.4.6.tgz diff --git a/stable/authelia/11.0.27/charts/postgresql-8.0.43.tgz b/stable/authelia/11.0.27/charts/postgresql-8.0.43.tgz new file mode 100644 index 0000000000000000000000000000000000000000..179ed6087ec13d8e6d5fc004a2cf92590345fe74 GIT binary patch literal 60646 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

2Hsj&>`j5~e; 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 literal 0 HcmV?d00001 diff --git a/stable/authelia/11.0.27/charts/redis-3.0.42.tgz b/stable/authelia/11.0.27/charts/redis-3.0.42.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a82d4d5a2f77f08b9ffe35352362d4eb5b44b555 GIT binary patch literal 56258 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 (value at the top of the values.yaml). +default_redirection_url: "" +# default_redirection_url: https://example.com + +theme: light + +## +## TOTP Configuration +## +## Parameters used for TOTP generation +totp: + ## The issuer name displayed in the Authenticator application of your choice + ## See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format for more info on issuer names + ## Defaults to . + issuer: "" + ## The period in seconds a one-time password is current for. Changing this will require all users to register + ## their TOTP applications again. Warning: before changing period read the docs link below. + period: 30 + ## The skew controls number of one-time passwords either side of the current one that are valid. + ## Warning: before changing skew read the docs link below. + ## See: https://www.authelia.com/docs/configuration/one-time-password.html#period-and-skew to read the documentation. + skew: 1 + +## +## Duo Push API Configuration +## +## Parameters used to contact the Duo API. Those are generated when you protect an application of type +## "Partner Auth API" in the management panel. +duo_api: + enabled: false + hostname: api-123456789.example.com + integration_key: ABCDEF + plain_api_key: "" + +## +## Authentication Backend Provider Configuration +## +## Used for verifying user passwords and retrieve information such as email address and groups users belong to. +## +## The available providers are: `file`, `ldap`. You must use one and only one of these providers. +authentication_backend: + ## Disable both the HTML element and the API for reset password functionality + disable_reset_password: false + + ## The amount of time to wait before we refresh data from the authentication backend. Uses duration notation. + ## To disable this feature set it to 'disable', this will slightly reduce security because for Authelia, users will + ## always belong to groups they belonged to at the time of login even if they have been removed from them in LDAP. + ## To force update on every request you can set this to '0' or 'always', this will increase processor demand. + ## See the below documentation for more information. + ## Duration Notation docs: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ## Refresh Interval docs: https://www.authelia.com/docs/configuration/authentication/ldap.html#refresh-interval + refresh_interval: 5m + + ## LDAP backend configuration. + ## + ## This backend allows Authelia to be scaled to more + ## than one instance and therefore is recommended for + ## production. + ldap: + ## Enable LDAP Backend. + enabled: false + + ## The LDAP implementation, this affects elements like the attribute utilised for resetting a password. + ## Acceptable options are as follows: + ## - 'activedirectory' - For Microsoft Active Directory. + ## - 'custom' - For custom specifications of attributes and filters. + ## This currently defaults to 'custom' to maintain existing behaviour. + ## + ## Depending on the option here certain other values in this section have a default value, notably all of the + ## attribute mappings have a default value that this config overrides, you can read more about these default values + ## at https://www.authelia.com/docs/configuration/authentication/ldap.html#defaults + implementation: activedirectory + + ## The url to the ldap server. Format: ://

[:]. + ## Scheme can be ldap or ldaps in the format (port optional). + url: ldap://openldap.default.svc.cluster.local + + ## Connection Timeout. + timeout: 5s + + ## Use StartTLS with the LDAP connection. + start_tls: false + + tls: + ## Server Name for certificate validation (in case it's not set correctly in the URL). + server_name: "" + + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + + ## Minimum TLS version for either Secure LDAP or LDAP StartTLS. + minimum_version: TLS1.2 + + ## The base dn for every LDAP query. + base_dn: DC=example,DC=com + + ## The attribute holding the username of the user. This attribute is used to populate the username in the session + ## information. It was introduced due to #561 to handle case insensitive search queries. For you information, + ## Microsoft Active Directory usually uses 'sAMAccountName' and OpenLDAP usually uses 'uid'. Beware that this + ## attribute holds the unique identifiers for the users binding the user and the configuration stored in database. + ## Therefore only single value attributes are allowed and the value must never be changed once attributed to a user + ## otherwise it would break the configuration for that user. Technically, non-unique attributes like 'mail' can also + ## be used but we don't recommend using them, we instead advise to use the attributes mentioned above + ## (sAMAccountName and uid) to follow https://www.ietf.org/rfc/rfc2307.txt. + username_attribute: "" + + ## An additional dn to define the scope to all users. + additional_users_dn: OU=Users + + ## The users filter used in search queries to find the user profile based on input filled in login form. + ## Various placeholders are available in the user filter: + ## - {input} is a placeholder replaced by what the user inputs in the login form. + ## - {username_attribute} is a mandatory placeholder replaced by what is configured in `username_attribute`. + ## - {mail_attribute} is a placeholder replaced by what is configured in `mail_attribute`. + ## - DON'T USE - {0} is an alias for {input} supported for backward compatibility but it will be deprecated in later + ## versions, so please don't use it. + ## + ## Recommended settings are as follows: + ## - Microsoft Active Directory: (&({username_attribute}={input})(objectCategory=person)(objectClass=user)) + ## - OpenLDAP: + ## - (&({username_attribute}={input})(objectClass=person)) + ## - (&({username_attribute}={input})(objectClass=inetOrgPerson)) + ## + ## To allow sign in both with username and email, one can use a filter like + ## (&(|({username_attribute}={input})({mail_attribute}={input}))(objectClass=person)) + users_filter: "" + + ## An additional dn to define the scope of groups. + additional_groups_dn: OU=Groups + + ## The groups filter used in search queries to find the groups of the user. + ## - {input} is a placeholder replaced by what the user inputs in the login form. + ## - {username} is a placeholder replace by the username stored in LDAP (based on `username_attribute`). + ## - {dn} is a matcher replaced by the user distinguished name, aka, user DN. + ## - {username_attribute} is a placeholder replaced by what is configured in `username_attribute`. + ## - {mail_attribute} is a placeholder replaced by what is configured in `mail_attribute`. + ## - DON'T USE - {0} is an alias for {input} supported for backward compatibility but it will be deprecated in later + ## versions, so please don't use it. + ## - DON'T USE - {1} is an alias for {username} supported for backward compatibility but it will be deprecated in + ## later version, so please don't use it. + ## + ## If your groups use the `groupOfUniqueNames` structure use this instead: + ## (&(uniquemember={dn})(objectclass=groupOfUniqueNames)) + groups_filter: "" + + ## The attribute holding the name of the group + group_name_attribute: "" + + ## The attribute holding the mail address of the user. If multiple email addresses are defined for a user, only the + ## first one returned by the LDAP server is used. + mail_attribute: "" + + ## The attribute holding the display name of the user. This will be used to greet an authenticated user. + display_name_attribute: "" + + ## The username of the admin user. + user: CN=Authelia,DC=example,DC=com + plain_password: "" + + ## + ## File (Authentication Provider) + ## + ## With this backend, the users database is stored in a file which is updated when users reset their passwords. + ## Therefore, this backend is meant to be used in a dev environment and not in production since it prevents Authelia + ## to be scaled to more than one instance. The options under 'password' have sane defaults, and as it has security + ## implications it is highly recommended you leave the default values. Before considering changing these settings + ## please read the docs page below: + ## https://www.authelia.com/docs/configuration/authentication/file.html#password-hash-algorithm-tuning + ## + ## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html + ## + file: + enabled: true + path: /config/users_database.yml + password: + algorithm: argon2id + iterations: 1 + key_length: 32 + salt_length: 16 + memory: 1024 + parallelism: 8 + +## +## Access Control Configuration +## +## Access control is a list of rules defining the authorizations applied for one resource to users or group of users. +## +## If 'access_control' is not defined, ACL rules are disabled and the 'bypass' rule is applied, i.e., access is allowed +## to anyone. Otherwise restrictions follow the rules defined. +## +## Note: One can use the wildcard * to match any subdomain. +## It must stand at the beginning of the pattern. (example: *.mydomain.com) +## +## Note: You must put patterns containing wildcards between simple quotes for the YAML to be syntactically correct. +## +## Definition: A 'rule' is an object with the following keys: 'domain', 'subject', 'policy' and 'resources'. +## +## - 'domain' defines which domain or set of domains the rule applies to. +## +## - 'subject' defines the subject to apply authorizations to. This parameter is optional and matching any user if not +## provided. If provided, the parameter represents either a user or a group. It should be of the form +## 'user:' or 'group:'. +## +## - 'policy' is the policy to apply to resources. It must be either 'bypass', 'one_factor', 'two_factor' or 'deny'. +## +## - 'resources' is a list of regular expressions that matches a set of resources to apply the policy to. This parameter +## is optional and matches any resource if not provided. +## +## Note: the order of the rules is important. The first policy matching (domain, resource, subject) applies. +access_control: + ## Default policy can either be 'bypass', 'one_factor', 'two_factor' or 'deny'. It is the policy applied to any + ## resource if there is no policy to be applied to the user. + default_policy: deny + + networks: [] + # networks: + # - name: private + # networks: + # - 10.0.0.0/8 + # - 172.16.0.0/12 + # - 192.168.0.0/16 + # - name: vpn + # networks: + # - 10.9.0.0/16 + + rules: [] + # rules: + # - domain: public.example.com + # policy: bypass + # - domain: "*.example.com" + # policy: bypass + # methods: + # - OPTIONS + # - domain: secure.example.com + # policy: one_factor + # networks: + # - private + # - vpn + # - 192.168.1.0/24 + # - 10.0.0.1 + # - domain: + # - secure.example.com + # - private.example.com + # policy: two_factor + # - domain: singlefactor.example.com + # policy: one_factor + # - domain: "mx2.mail.example.com" + # subject: "group:admins" + # policy: deny + # - domain: "*.example.com" + # subject: + # - "group:admins" + # - "group:moderators" + # policy: two_factor + # - domain: dev.example.com + # resources: + # - "^/groups/dev/.*$" + # subject: "group:dev" + # policy: two_factor + # - domain: dev.example.com + # resources: + # - "^/users/john/.*$" + # subject: + # - ["group:dev", "user:john"] + # - "group:admins" + # policy: two_factor + # - domain: "{user}.example.com" + # policy: bypass + +## +## Session Provider Configuration +## +## The session cookies identify the user once logged in. +## The available providers are: `memory`, `redis`. Memory is the provider unless redis is defined. +session: + ## The name of the session cookie. (default: authelia_session). + name: authelia_session + + ## Sets the Cookie SameSite value. Possible options are none, lax, or strict. + ## Please read https://www.authelia.com/docs/configuration/session.html#same_site + same_site: lax + + ## The time in seconds before the cookie expires and session is reset. + expiration: 1h + + ## The inactivity time in seconds before the session is reset. + inactivity: 5m + + ## The remember me duration. + ## Value is in seconds, or duration notation. Value of 0 disables remember me. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ## Longer periods are considered less secure because a stolen cookie will last longer giving attackers more time to + ## spy or attack. Currently the default is 1M or 1 month. + remember_me_duration: 1M + +## +## Redis Provider +## +## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html +## +## The redis connection details +redisProvider: + port: 6379 + + ## Optional username to be used with authentication. + # username: authelia + username: "" + + ## This is the Redis DB Index https://redis.io/commands/select (sometimes referred to as database number, DB, etc). + database_index: 0 + + ## The maximum number of concurrent active connections to Redis. + maximum_active_connections: 8 + + ## The target number of idle connections to have open ready for work. Useful when opening connections is slow. + minimum_idle_connections: 0 + + ## The Redis TLS configuration. If defined will require a TLS connection to the Redis instance(s). + tls: + enabled: false + + ## Server Name for certificate validation (in case you are using the IP or non-FQDN in the host option). + server_name: "" + + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + + ## Minimum TLS version for the connection. + minimum_version: TLS1.2 + + ## The Redis HA configuration options. + ## This provides specific options to Redis Sentinel, sentinel_name must be defined (Master Name). + high_availability: + enabled: false + enabledSecret: false + ## Sentinel Name / Master Name + sentinel_name: mysentinel + + ## The additional nodes to pre-seed the redis provider with (for sentinel). + ## If the host in the above section is defined, it will be combined with this list to connect to sentinel. + ## For high availability to be used you must have either defined; the host above or at least one node below. + nodes: [] + # nodes: + # - host: sentinel-0.databases.svc.cluster.local + # port: 26379 + # - host: sentinel-1.databases.svc.cluster.local + # port: 26379 + + ## Choose the host with the lowest latency. + route_by_latency: false + + ## Choose the host randomly. + route_randomly: false + +## +## Regulation Configuration +## +## This mechanism prevents attackers from brute forcing the first factor. It bans the user if too many attempts are done +## in a short period of time. +regulation: + ## The number of failed login attempts before user is banned. Set it to 0 to disable regulation. + max_retries: 3 + + ## The time range during which the user can attempt login before being banned. The user is banned if the + ## authentication failed 'max_retries' times in a 'find_time' seconds window. Find Time accepts duration notation. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + find_time: 2m + + ## The length of time before a banned user can login again. Ban Time accepts duration notation. + ## See: https://www.authelia.com/docs/configuration/index.html#duration-notation-format + ban_time: 5m + +## +## Storage Provider Configuration +## +## The available providers are: `local`, `mysql`, `postgres`. You must use one and only one of these providers. +storage: + ## + ## PostgreSQL (Storage Provider) + ## + postgres: + port: 5432 + database: authelia + username: authelia + sslmode: disable + timeout: 5s + +## +## Notification Provider +## +## +## Notifications are sent to users when they require a password reset, a u2f registration or a TOTP registration. +## The available providers are: filesystem, smtp. You must use one and only one of these providers. +notifier: + ## You can disable the notifier startup check by setting this to true. + disable_startup_check: false + + ## + ## File System (Notification Provider) + ## + ## Important: Kubernetes (or HA) users must read https://www.authelia.com/docs/features/statelessness.html + ## + filesystem: + enabled: true + filename: /config/notification.txt + + ## + ## SMTP (Notification Provider) + ## + ## Use a SMTP server for sending notifications. Authelia uses the PLAIN or LOGIN methods to authenticate. + ## [Security] By default Authelia will: + ## - force all SMTP connections over TLS including unauthenticated connections + ## - use the disable_require_tls boolean value to disable this requirement + ## (only works for unauthenticated connections) + ## - validate the SMTP server x509 certificate during the TLS handshake against the hosts trusted certificates + ## (configure in tls section) + smtp: + enabled: false + enabledSecret: false + host: smtp.mail.svc.cluster.local + port: 25 + timeout: 5s + username: test + plain_password: test + sender: admin@example.com + ## HELO/EHLO Identifier. Some SMTP Servers may reject the default of localhost. + identifier: localhost + ## Subject configuration of the emails sent. + ## {title} is replaced by the text from the notifier + subject: "[Authelia] {title}" + ## This address is used during the startup check to verify the email configuration is correct. + ## It's not important what it is except if your email server only allows local delivery. + startup_check_address: test@authelia.com + disable_require_tls: false + disable_html_emails: false + + tls: + ## Server Name for certificate validation (in case you are using the IP or non-FQDN in the host option). + server_name: "" + + ## Skip verifying the server certificate (to allow a self-signed certificate). + ## In preference to setting this we strongly recommend you add the public portion of the certificate to the + ## certificates directory which is defined by the `certificates_directory` option at the top of the config. + skip_verify: false + + ## Minimum TLS version for either StartTLS or SMTPS. + minimum_version: TLS1.2 + +identity_providers: + oidc: + ## Enables this in the config map. Currently in beta stage. + ## See https://www.authelia.com/docs/configuration/identity-providers/oidc.html#roadmap + enabled: false + + access_token_lifespan: 1h + authorize_code_lifespan: 1m + id_token_lifespan: 1h + refresh_token_lifespan: 90m + + enable_client_debug_messages: false + + ## SECURITY NOTICE: It's not recommended changing this option, and highly discouraged to have it below 8 for + ## security reasons. + minimum_parameter_entropy: 8 + + clients: [] + # clients: + # - + ## The ID is the OpenID Connect ClientID which is used to link an application to a configuration. + # id: myapp + + ## The description to show to users when they end up on the consent screen. Defaults to the ID above. + # description: My Application + + ## The client secret is a shared secret between Authelia and the consumer of this client. + # secret: apple123 + + ## Sets the client to public. This should typically not be set, please see the documentation for usage. + # public: false + + ## The policy to require for this client; one_factor or two_factor. + # authorization_policy: two_factor + + ## Audience this client is allowed to request. + # audience: [] + + ## Scopes this client is allowed to request. + # scopes: + # - openid + # - profile + # - email + # - groups + + ## Redirect URI's specifies a list of valid case-sensitive callbacks for this client. + # redirect_uris: + # - https://oidc.example.com/oauth2/callback + + ## Grant Types configures which grants this client can obtain. + ## It's not recommended to configure this unless you know what you're doing. + # grant_types: + # - refresh_token + # - authorization_code + + ## Response Types configures which responses this client can be sent. + ## It's not recommended to configure this unless you know what you're doing. + # response_types: + # - code + + ## Response Modes configures which response modes this client supports. + ## It's not recommended to configure this unless you know what you're doing. + # response_modes: + # - form_post + # - query + # - fragment + + ## The algorithm used to sign userinfo endpoint responses for this client, either none or RS256. + # userinfo_signing_algorithm: none diff --git a/stable/authelia/11.0.27/questions.yaml b/stable/authelia/11.0.27/questions.yaml new file mode 100644 index 0000000000..9553d99e5a --- /dev/null +++ b/stable/authelia/11.0.27/questions.yaml @@ -0,0 +1,3340 @@ +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" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - 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 + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + 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" + - variable: expert + label: "Show Expert Configuration Options" + 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: 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: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + 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 Config" + 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: domain + group: "App Configuration" + label: "Domain" + description: "The highest domain level possible, for example: domain.com when using app.domain.com" + schema: + type: string + default: "" + required: true + + - variable: default_redirection_url + group: "App Configuration" + label: "Default Redirection Url" + description: "If user tries to authenticate without any referer, this is used" + schema: + type: string + default: "" + + - variable: theme + group: "App Configuration" + label: "Theme" + schema: + type: string + default: "light" + enum: + - value: "light" + description: "info" + - value: "grey" + description: "grey" + - value: "dark" + description: "dark" + + - variable: log + group: "App Configuration" + label: "Log Configuration " + schema: + additional_attrs: true + type: dict + attrs: + - variable: level + label: "Log Level" + schema: + type: string + default: "info" + enum: + - value: "info" + description: "info" + - value: "debug" + description: "debug" + - value: "trace" + description: "trace" + - variable: format + label: "Log Format" + schema: + type: string + default: "text" + enum: + - value: "json" + description: "json" + - value: "text" + description: "text" + + - variable: totp + group: "App Configuration" + label: "TOTP Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: issuer + label: "Issuer" + description: "The issuer name displayed in the Authenticator application of your choice" + schema: + type: string + default: "" + - variable: period + label: "Period" + description: "The period in seconds a one-time password is current for" + schema: + type: int + default: 30 + - variable: skew + label: "skew" + description: "Controls number of one-time passwords either side of the current one that are valid." + schema: + type: int + default: 1 + + - variable: duo_api + group: "App Configuration" + label: "DUO API Configuration" + description: "Parameters used to contact the Duo API." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostname + label: "Hostname" + schema: + type: string + required: true + default: "" + + - variable: integration_key + label: "integration_key" + schema: + type: string + default: "" + required: true + - variable: plain_api_key + label: "plain_api_key" + schema: + type: string + default: "" + required: true + + - variable: session + group: "App Configuration" + label: "Session Provider" + description: "The session cookies identify the user once logged in." + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Cookie Name" + description: "The name of the session cookie." + schema: + type: string + required: true + default: "authelia_session" + - variable: same_site + label: "SameSite Value" + description: "Sets the Cookie SameSite value" + schema: + type: string + default: "lax" + enum: + - value: "lax" + description: "lax" + - value: "strict" + description: "strict" + - variable: expiration + label: "Expiration Time" + description: "The time in seconds before the cookie expires and session is reset." + schema: + type: string + default: "1h" + required: true + - variable: inactivity + label: "Inactivity Time" + description: "The inactivity time in seconds before the session is reset." + schema: + type: string + default: "5m" + required: true + - variable: inactivity + label: "Remember-Me duration" + description: "The remember me duration" + schema: + type: string + default: "5M" + required: true + + - variable: regulation + group: "App Configuration" + label: "Regulation Configuration" + description: "his mechanism prevents attackers from brute forcing the first factor." + schema: + additional_attrs: true + type: dict + attrs: + - variable: max_retries + label: "Maximum Retries" + description: "The number of failed login attempts before user is banned. Set it to 0 to disable regulation." + schema: + type: int + default: 3 + - variable: find_time + label: "Find Time" + description: "The time range during which the user can attempt login before being banned." + schema: + type: string + default: "2m" + required: true + - variable: ban_time + label: "Ban Duration" + description: "The length of time before a banned user can login again" + schema: + type: string + default: "5m" + required: true + + - variable: authentication_backend + group: "App Configuration" + label: "Authentication Backend Provider" + description: "sed for verifying user passwords and retrieve information such as email address and groups users belong to." + schema: + additional_attrs: true + type: dict + attrs: + - variable: disable_reset_password + label: "Disable Reset Password" + description: "Disable both the HTML element and the API for reset password functionality" + schema: + type: boolean + default: false + - variable: refresh_interval + label: "Reset Interval" + description: "The amount of time to wait before we refresh data from the authentication backend" + schema: + type: string + default: "5m" + required: true + - variable: ldap + label: "LDAP backend configuration" + description: "Used for verifying user passwords and retrieve information such as email address and groups users belong to" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: implementation + label: "Implementation" + description: "The LDAP implementation, this affects elements like the attribute utilised for resetting a password" + schema: + type: string + default: "custom" + enum: + - value: "activedirectory" + description: "activedirectory" + - value: "custom" + description: "custom" + - variable: url + label: "URL" + description: "The url to the ldap server. Format: ://
[:]" + schema: + type: string + default: "ldap://openldap.default.svc.cluster.local" + required: true + - variable: timeout + label: "Connection Timeout" + schema: + type: string + default: "5s" + required: true + - variable: start_tls + label: "Start TLS" + description: "Use StartTLS with the LDAP connection" + schema: + type: boolean + default: false + - variable: tls + label: "TLS Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: server_name + label: "Server Name" + description: "Server Name for certificate validation (in case it's not set correctly in the URL)." + schema: + type: string + default: "" + - variable: skip_verify + label: "Skip Certificate Verification" + description: "Skip verifying the server certificate (to allow a self-signed certificate)" + schema: + type: boolean + default: false + - variable: minimum_version + label: "Minimum TLS version" + description: "Minimum TLS version for either Secure LDAP or LDAP StartTLS." + schema: + type: string + default: "TLS1.2" + enum: + - value: "TLS1.0" + description: "TLS1.0" + - value: "TLS1.1" + description: "TLS1.1" + - value: "TLS1.2" + description: "TLS1.2" + - value: "TLS1.3" + description: "TLS1.3" + - variable: base_dn + label: "Base DN" + description: "The base dn for every LDAP query." + schema: + type: string + default: "DC=example,DC=com" + required: true + - variable: username_attribute + label: "Username Attribute" + description: "The attribute holding the username of the user" + schema: + type: string + default: "" + required: true + - variable: additional_users_dn + label: "Additional Users DN" + description: "An additional dn to define the scope to all users." + schema: + type: string + default: "OU=Users" + required: true + - variable: users_filter + label: "Users Filter" + description: "The groups filter used in search queries to find the groups of the user." + schema: + type: string + default: "" + required: true + - variable: additional_groups_dn + label: "Additional Groups DN" + description: "An additional dn to define the scope of groups." + schema: + type: string + default: "OU=Groups" + required: true + - variable: groups_filter + label: "Groups Filter" + description: "The groups filter used in search queries to find the groups of the user." + schema: + type: string + default: "" + required: true + - variable: group_name_attribute + label: "Group name Attribute" + description: "The attribute holding the name of the group" + schema: + type: string + default: "" + required: true + - variable: mail_attribute + label: "Mail Attribute" + description: "The attribute holding the primary mail address of the user" + schema: + type: string + default: "" + required: true + - variable: display_name_attribute + label: "Display Name Attribute" + description: "he attribute holding the display name of the user. This will be used to greet an authenticated user." + schema: + type: string + default: "" + - variable: user + label: "Admin User" + description: "The username of the admin user used to connect to LDAP." + schema: + type: string + default: "CN=Authelia,DC=example,DC=com" + required: true + - variable: plain_password + label: "Password" + schema: + type: string + default: "" + required: true + - variable: file + label: "File backend configuration" + description: "With this backend, the users database is stored in a file which is updated when users reset their passwords." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: path + label: "Path" + schema: + type: string + default: "/config/users_database.yml" + required: true + - variable: password + label: "Password Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: algorithm + label: "Algorithm" + schema: + type: string + default: "argon2id" + enum: + - value: "argon2id" + description: "argon2id" + - value: "sha512" + description: "sha512" + - variable: iterations + label: "Iterations" + schema: + type: int + default: 1 + required: true + - variable: key_length + label: "Key Length" + schema: + type: int + default: 32 + required: true + - variable: salt_length + label: "Salt Length" + schema: + type: int + default: 16 + required: true + - variable: memory + label: "Memory" + schema: + type: int + default: 1024 + required: true + - variable: parallelism + label: "Parallelism" + schema: + type: int + default: 8 + required: true + + - variable: notifier + group: "App Configuration" + label: "Notifier Configuration" + description: "otifications are sent to users when they require a password reset, a u2f registration or a TOTP registration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: disable_startup_check + label: "Disable Startup Check" + schema: + type: boolean + default: false + - variable: filesystem + label: "Filesystem Provider" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: filename + label: "File Path" + schema: + type: string + default: "/config/notification.txt" + required: true + - variable: smtp + label: "SMTP Provider" + description: "Use a SMTP server for sending notifications. Authelia uses the PLAIN or LOGIN methods to authenticate." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: host + label: "Host" + schema: + type: string + default: "smtp.mail.svc.cluster.local" + required: true + - variable: port + label: "Port" + schema: + type: int + default: 25 + required: true + - variable: timeout + label: "Timeout" + schema: + type: string + default: "5s" + required: true + - variable: username + label: "Username" + schema: + type: string + default: "" + required: true + - variable: plain_password + label: "Password" + schema: + type: string + default: "" + required: true + - variable: sender + label: "Sender" + schema: + type: string + default: "" + required: true + - variable: identifier + label: "Identifier" + description: "HELO/EHLO Identifier. Some SMTP Servers may reject the default of localhost." + schema: + type: string + default: "localhost" + required: true + - variable: subject + label: "Subject" + description: "Subject configuration of the emails sent, {title} is replaced by the text from the notifier" + schema: + type: string + default: "[Authelia] {title}" + required: true + - variable: startup_check_address + label: "Startup Check Address" + description: "This address is used during the startup check to verify the email configuration is correct." + schema: + type: string + default: "test@authelia.com" + required: true + - variable: disable_require_tls + label: "Disable Require TLS" + schema: + type: boolean + default: false + - variable: disable_html_emails + label: "Disable HTML emails" + schema: + type: boolean + default: false + - variable: tls + label: "TLS Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: server_name + label: "Server Name" + description: "Server Name for certificate validation (in case it's not set correctly in the URL)." + schema: + type: string + default: "" + - variable: skip_verify + label: "Skip Certificate Verification" + description: "Skip verifying the server certificate (to allow a self-signed certificate)" + schema: + type: boolean + default: false + - variable: minimum_version + label: "Minimum TLS version" + description: "Minimum TLS version for either Secure LDAP or LDAP StartTLS." + schema: + type: string + default: "TLS1.2" + enum: + - value: "TLS1.0" + description: "TLS1.0" + - value: "TLS1.1" + description: "TLS1.1" + - value: "TLS1.2" + description: "TLS1.2" + - value: "TLS1.3" + description: "TLS1.3" + - variable: access_control + group: "App Configuration" + label: "Access Control Configuration" + description: "Access control is a list of rules defining the authorizations applied for one resource to users or group of users." + schema: + additional_attrs: true + type: dict + attrs: + - variable: default_policy + label: "Default Policy" + description: "Default policy can either be 'bypass', 'one_factor', 'two_factor' or 'deny'." + schema: + type: string + default: "two_factor" + enum: + - value: "bypass" + description: "bypass" + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - value: "deny" + description: "deny" + + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: networkItem + label: "Network Item" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: network + label: "network" + schema: + type: string + default: "" + required: true + + - variable: rules + label: "Rules" + schema: + type: list + default: [] + items: + - variable: rulesItem + label: "Rule" + schema: + additional_attrs: true + type: dict + attrs: + - variable: domain + label: "Domains" + description: "defines which domain or set of domains the rule applies to." + schema: + type: list + default: [] + items: + - variable: domainEntry + label: "Domain" + schema: + type: string + default: "" + required: true + - variable: policy + label: "Policy" + description: "The policy to apply to resources. It must be either 'bypass', 'one_factor', 'two_factor' or 'deny'." + schema: + type: string + default: "two_factor" + enum: + - value: "bypass" + description: "bypass" + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - value: "deny" + description: "deny" + - variable: subject + label: "Subject" + description: "defines the subject to apply authorizations to. This parameter is optional and matching any user if not provided" + schema: + type: list + default: [] + items: + - variable: subjectitem + label: "Subject" + schema: + type: string + default: "" + required: true + - variable: networks + label: "Networks" + schema: + type: list + default: [] + items: + - variable: network + label: "Network" + schema: + type: string + default: "" + required: true + - variable: resources + label: "Resources" + description: "is a list of regular expressions that matches a set of resources to apply the policy to" + schema: + type: list + default: [] + items: + - variable: resource + label: "Resource" + schema: + type: string + default: "" + required: true + + - 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: 9091 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - 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: 9091 + + - 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: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + 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: config + label: "App Config Storage" + description: "Stores the Application Configuration." + 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: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - 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: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + 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: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - 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: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + 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) 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: 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: "pathType" + 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: "pathType" + 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 tha 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/manual/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/manual/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/manual/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/manual/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: "ipBlock" +# 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: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# 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: "matchExpressions" +# 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: "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: "ipBlock" +# 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: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# 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: "matchExpressions" +# 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: "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" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - 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 ipv4 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: "" + required: true + - 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: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + 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 ecommand 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: identity_providers + group: "Advanced" + label: "Authelia Identity Providers (BETA)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: oidc + label: "OpenID Connect(BETA)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: access_token_lifespan + label: "Access Token Lifespan" + schema: + type: string + default: "1h" + required: true + - variable: authorize_code_lifespan + label: "Authorize Code Lifespan" + schema: + type: string + default: "1m" + required: true + - variable: id_token_lifespan + label: "ID Token Lifespan" + schema: + type: string + default: "1h" + required: true + - variable: refresh_token_lifespan + label: "Refresh Token Lifespan" + schema: + type: string + default: "90m" + required: true + - variable: enable_client_debug_messages + label: "Enable Client Debug Messages" + schema: + type: boolean + default: false + - variable: clients + label: "Clients" + schema: + type: list + default: [] + items: + - variable: clientEntry + label: "Client" + schema: + additional_attrs: true + type: dict + attrs: + - variable: id + label: "ID/Name" + description: "The ID is the OpenID Connect ClientID which is used to link an application to a configuration." + schema: + type: string + default: "myapp" + required: true + - variable: description + label: "Description" + description: "The description to show to users when they end up on the consent screen. Defaults to the ID above." + schema: + type: string + default: "My Application" + required: true + - variable: secret + label: "Secret" + description: "The client secret is a shared secret between Authelia and the consumer of this client." + schema: + type: string + default: "" + required: true + - variable: public + label: "public" + description: "Sets the client to public. This should typically not be set, please see the documentation for usage." + schema: + type: boolean + default: false + - variable: authorization_policy + label: "Authorization Policy" + description: "The policy to require for this client; one_factor or two_factor." + schema: + type: string + default: "two_factor" + enum: + - value: "one_factor" + description: "one_factor" + - value: "two_factor" + description: "two_factor" + - variable: userinfo_signing_algorithm + label: "Userinfo Signing Algorithm" + description: "The algorithm used to sign userinfo endpoint responses for this client, either none or RS256." + schema: + type: string + default: "none" + enum: + - value: "none" + description: "none" + - value: "RS256" + description: "RS256" + - variable: audience + label: "Audience" + description: "Audience this client is allowed to request." + schema: + type: list + default: [] + items: + - variable: audienceEntry + label: "" + schema: + type: string + default: "" + required: true + - variable: scopes + label: "Scopes" + description: "Scopes this client is allowed to request." + schema: + type: list + default: [] + items: + - variable: ScopeEntry + label: "Scope" + schema: + type: string + default: "openid" + required: true + - variable: redirect_uris + label: "redirect_uris" + description: "Redirect URI's specifies a list of valid case-sensitive callbacks for this client." + schema: + type: list + default: [] + items: + - variable: uriEntry + label: "Url" + schema: + type: string + default: "https://oidc.example.com/oauth2/callback" + required: true + - variable: grant_types + description: "Grant Types configures which grants this client can obtain." + label: "grant_types" + schema: + type: list + default: [] + items: + - variable: grantEntry + label: "Grant" + schema: + type: string + default: "refresh_token" + required: true + - variable: response_types + description: "Response Types configures which responses this client can be sent." + label: "response_types" + schema: + type: list + default: [] + items: + - variable: responseEntry + label: "type" + schema: + type: string + default: "code" + required: true + - variable: response_modes + description: "Response Modes configures which response modes this client supports." + label: "response_modes" + schema: + type: list + default: [] + items: + - variable: modeEntry + label: "Mode" + schema: + type: string + default: "form_post" + required: true diff --git a/stable/authelia/11.0.27/templates/_configmap.tpl b/stable/authelia/11.0.27/templates/_configmap.tpl new file mode 100644 index 0000000000..57d7532003 --- /dev/null +++ b/stable/authelia/11.0.27/templates/_configmap.tpl @@ -0,0 +1,248 @@ +{{/* Define the configmap */}} +{{- define "authelia.configmap" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: authelia-paths +data: + AUTHELIA_SERVER_DISABLE_HEALTHCHECK: "true" + AUTHELIA_JWT_SECRET_FILE: "/secrets/JWT_TOKEN" + AUTHELIA_SESSION_SECRET_FILE: "/secrets/SESSION_ENCRYPTION_KEY" + AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: "/secrets/ENCRYPTION_KEY" + AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE: "/secrets/STORAGE_PASSWORD" + {{- if .Values.authentication_backend.ldap.enabled }} + AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD_FILE: "/secrets/LDAP_PASSWORD" + {{- end }} + {{- if .Values.notifier.smtp.enabled }} + AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE: "/secrets/SMTP_PASSWORD" + {{- end }} + AUTHELIA_SESSION_REDIS_PASSWORD_FILE: "/secrets/REDIS_PASSWORD" + {{- if .Values.redisProvider.high_availability.enabled }} + AUTHELIA_SESSION_REDIS_HIGH_AVAILABILITY_SENTINEL_PASSWORD_FILE: "/secrets/REDIS_SENTINEL_PASSWORD" + {{- end }} + {{- if .Values.duo_api.enabled }} + AUTHELIA_DUO_API_SECRET_KEY_FILE: "/secrets/DUO_API_KEY" + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + AUTHELIA_IDENTITY_PROVIDERS_OIDC_HMAC_SECRET_FILE: "/secrets/OIDC_HMAC_SECRET" + AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE: "/secrets/OIDC_PRIVATE_KEY" + {{- end }} + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: authelia-configfile +data: + configuration.yaml: | + --- + theme: {{ default "light" .Values.theme }} + default_redirection_url: {{ default (printf "https://www.%s" .Values.domain) .Values.default_redirection_url }} + server: + host: 0.0.0.0 + port: {{ default 9091 .Values.server.port }} + {{- if not (eq "" (default "" .Values.server.path)) }} + path: {{ .Values.server.path }} + {{- end }} + read_buffer_size: {{ default 4096 .Values.server.read_buffer_size }} + write_buffer_size: {{ default 4096 .Values.server.write_buffer_size }} + enable_pprof: {{ default false .Values.server.enable_pprof }} + enable_expvars: {{ default false .Values.server.enable_expvars }} + log: + level: {{ default "info" .Values.log.level }} + format: {{ default "text" .Values.log.format }} + {{- if not (eq "" (default "" .Values.log.file_path)) }} + file_path: {{ .Values.log.file_path }} + keep_stdout: true + {{- end }} + totp: + issuer: {{ default .Values.domain .Values.totp.issuer }} + period: {{ default 30 .Values.totp.period }} + skew: {{ default 1 .Values.totp.skew }} + {{- if .Values.duo_api.enabled }} + duo_api: + hostname: {{ .Values.duo_api.hostname }} + integration_key: {{ .Values.duo_api.integration_key }} + {{- end }} + {{- with $auth := .Values.authentication_backend }} + authentication_backend: + disable_reset_password: {{ $auth.disable_reset_password }} + {{- if $auth.file.enabled }} + file: + path: {{ $auth.file.path }} + password: {{ toYaml $auth.file.password | nindent 10 }} + {{- end }} + {{- if $auth.ldap.enabled }} + ldap: + implementation: {{ default "custom" $auth.ldap.implementation }} + url: {{ $auth.ldap.url }} + timeout: {{ default "5s" $auth.ldap.timeout }} + start_tls: {{ $auth.ldap.start_tls }} + tls: + {{- if hasKey $auth.ldap.tls "server_name" }} + server_name: {{ default $auth.ldap.host $auth.ldap.tls.server_name }} + {{- end }} + minimum_version: {{ default "TLS1.2" $auth.ldap.tls.minimum_version }} + skip_verify: {{ default false $auth.ldap.tls.skip_verify }} + {{- if $auth.ldap.base_dn }} + base_dn: {{ $auth.ldap.base_dn }} + {{- end }} + {{- if $auth.ldap.username_attribute }} + username_attribute: {{ $auth.ldap.username_attribute }} + {{- end }} + {{- if $auth.ldap.additional_users_dn }} + additional_users_dn: {{ $auth.ldap.additional_users_dn }} + {{- end }} + {{- if $auth.ldap.users_filter }} + users_filter: {{ $auth.ldap.users_filter }} + {{- end }} + {{- if $auth.ldap.additional_groups_dn }} + additional_groups_dn: {{ $auth.ldap.additional_groups_dn }} + {{- end }} + {{- if $auth.ldap.groups_filter }} + groups_filter: {{ $auth.ldap.groups_filter }} + {{- end }} + {{- if $auth.ldap.group_name_attribute }} + group_name_attribute: {{ $auth.ldap.group_name_attribute }} + {{- end }} + {{- if $auth.ldap.mail_attribute }} + mail_attribute: {{ $auth.ldap.mail_attribute }} + {{- end }} + {{- if $auth.ldap.display_name_attribute }} + display_name_attribute: {{ $auth.ldap.display_name_attribute }} + {{- end }} + user: {{ $auth.ldap.user }} + {{- end }} + {{- end }} + {{- with $session := .Values.session }} + session: + name: {{ default "authelia_session" $session.name }} + domain: {{ required "A valid .Values.domain entry required!" $.Values.domain }} + same_site: {{ default "lax" $session.same_site }} + expiration: {{ default "1M" $session.expiration }} + inactivity: {{ default "5m" $session.inactivity }} + remember_me_duration: {{ default "1M" $session.remember_me_duration }} + {{- end }} + redis: + host: {{ .Values.redis.url.plain }} + {{- with $redis := .Values.redisProvider }} + port: {{ default 6379 $redis.port }} + {{- if not (eq $redis.username "") }} + username: {{ $redis.username }} + {{- end }} + maximum_active_connections: {{ default 8 $redis.maximum_active_connections }} + minimum_idle_connections: {{ default 0 $redis.minimum_idle_connections }} + {{- if $redis.tls.enabled }} + tls: + server_name: {{ $redis.tls.server_name }} + minimum_version: {{ default "TLS1.2" $redis.tls.minimum_version }} + skip_verify: {{ $redis.tls.skip_verify }} + {{- end }} + {{- if $redis.high_availability.enabled }} + high_availability: + sentinel_name: {{ $redis.high_availability.sentinel_name }} + {{- if $redis.high_availability.nodes }} + nodes: {{ toYaml $redis.high_availability.nodes | nindent 10 }} + {{- end }} + route_by_latency: {{ $redis.high_availability.route_by_latency }} + route_randomly: {{ $redis.high_availability.route_randomly }} + {{- end }} + {{- end }} + regulation: {{ toYaml .Values.regulation | nindent 6 }} + storage: + postgres: + host: {{ printf "%v-%v" .Release.Name "postgresql" }} + {{- with $storage := .Values.storage }} + port: {{ default 5432 $storage.postgres.port }} + database: {{ default "authelia" $storage.postgres.database }} + username: {{ default "authelia" $storage.postgres.username }} + timeout: {{ default "5s" $storage.postgres.timeout }} + sslmode: {{ default "disable" $storage.postgres.sslmode }} + {{- end }} + {{- with $notifier := .Values.notifier }} + notifier: + disable_startup_check: {{ $.Values.notifier.disable_startup_check }} + {{- if $notifier.filesystem.enabled }} + filesystem: + filename: {{ $notifier.filesystem.filename }} + {{- end }} + {{- if $notifier.smtp.enabled }} + smtp: + host: {{ $notifier.smtp.host }} + port: {{ default 25 $notifier.smtp.port }} + timeout: {{ default "5s" $notifier.smtp.timeout }} + username: {{ $notifier.smtp.username }} + sender: {{ $notifier.smtp.sender }} + identifier: {{ $notifier.smtp.identifier }} + subject: {{ $notifier.smtp.subject | quote }} + startup_check_address: {{ $notifier.smtp.startup_check_address }} + disable_require_tls: {{ $notifier.smtp.disable_require_tls }} + disable_html_emails: {{ $notifier.smtp.disable_html_emails }} + tls: + server_name: {{ default $notifier.smtp.host $notifier.smtp.tls.server_name }} + minimum_version: {{ default "TLS1.2" $notifier.smtp.tls.minimum_version }} + skip_verify: {{ default false $notifier.smtp.tls.skip_verify }} + {{- end }} + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + identity_providers: + oidc: + access_token_lifespan: {{ default "1h" .Values.identity_providers.oidc.access_token_lifespan }} + authorize_code_lifespan: {{ default "1m" .Values.identity_providers.oidc.authorize_code_lifespan }} + id_token_lifespan: {{ default "1h" .Values.identity_providers.oidc.id_token_lifespan }} + refresh_token_lifespan: {{ default "90m" .Values.identity_providers.oidc.refresh_token_lifespan }} + enable_client_debug_messages: {{ default false .Values.identity_providers.oidc.enable_client_debug_messages }} + minimum_parameter_entropy: {{ default 8 .Values.identity_providers.oidc.minimum_parameter_entropy }} + {{- if gt (len .Values.identity_providers.oidc.clients) 0 }} + clients: + {{- range $client := .Values.identity_providers.oidc.clients }} + - id: {{ $client.id }} + description: {{ default $client.id $client.description }} + secret: {{ default (randAlphaNum 128) $client.secret }} + {{- if $client.public }} + public: {{ $client.public }} + {{- end }} + authorization_policy: {{ default "two_factor" $client.authorization_policy }} + redirect_uris: + {{- range $client.redirect_uris }} + - {{ . }} + {{- end }} + {{- if $client.audience }} + audience: {{ toYaml $client.audience | nindent 10 }} + {{- end }} + scopes: {{ toYaml (default (list "openid" "profile" "email" "groups") $client.scopes) | nindent 10 }} + grant_types: {{ toYaml (default (list "refresh_token" "authorization_code") $client.grant_types) | nindent 10 }} + response_types: {{ toYaml (default (list "code") $client.response_types) | nindent 10 }} + {{- if $client.response_modes }} + response_modes: {{ toYaml $client.response_modes | nindent 10 }} + {{- end }} + userinfo_signing_algorithm: {{ default "none" $client.userinfo_signing_algorithm }} + {{- end }} + {{- end }} + {{- end }} + access_control: + {{- if (eq (len .Values.access_control.rules) 0) }} + {{- if (eq .Values.access_control.default_policy "bypass") }} + default_policy: one_factor + {{- else if (eq .Values.access_control.default_policy "deny") }} + default_policy: two_factor + {{- else }} + default_policy: {{ .Values.access_control.default_policy }} + {{- end }} + {{- else }} + default_policy: {{ .Values.access_control.default_policy }} + {{- end }} + {{- if (eq (len .Values.access_control.networks) 0) }} + networks: [] + {{- else }} + networks: {{ toYaml .Values.access_control.networks | nindent 6 }} + {{- end }} + {{- if (eq (len .Values.access_control.rules) 0) }} + rules: [] + {{- else }} + rules: {{ toYaml .Values.access_control.rules | nindent 6 }} + {{- end }} + ... +{{- end -}} diff --git a/stable/authelia/11.0.27/templates/_secrets.tpl b/stable/authelia/11.0.27/templates/_secrets.tpl new file mode 100644 index 0000000000..81fbe92ff7 --- /dev/null +++ b/stable/authelia/11.0.27/templates/_secrets.tpl @@ -0,0 +1,67 @@ +{{/* Define the secrets */}} +{{- define "authelia.secrets" -}} +--- + +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: authelia-secrets +{{- $autheliaprevious := lookup "v1" "Secret" .Release.Namespace "authelia-secrets" }} +{{- $oidckey := "" }} +{{- $oidcsecret := "" }} +{{- $jwtsecret := "" }} +{{- $sessionsecret := "" }} +{{- $encryptionkey := "" }} +data: + {{- if $autheliaprevious }} + SESSION_ENCRYPTION_KEY: {{ index $autheliaprevious.data "SESSION_ENCRYPTION_KEY" }} + JWT_TOKEN: {{ index $autheliaprevious.data "JWT_TOKEN" }} + {{- if ( hasKey $autheliaprevious.data "ENCRYPTION_KEY" ) }} + ENCRYPTION_KEY: {{ index $autheliaprevious.data "ENCRYPTION_KEY" }} + {{- else }} + {{- $encryptionkey := randAlphaNum 100 }} + ENCRYPTION_KEY: {{ $encryptionkey | b64enc }} + {{- end }} + {{- else }} + {{- $jwtsecret := randAlphaNum 50 }} + {{- $sessionsecret := randAlphaNum 50 }} + {{- $encryptionkey := randAlphaNum 100 }} + SESSION_ENCRYPTION_KEY: {{ $sessionsecret | b64enc }} + JWT_TOKEN: {{ $jwtsecret | b64enc}} + ENCRYPTION_KEY: {{ $encryptionkey | b64enc }} + {{- end }} + + {{- if .Values.authentication_backend.ldap.enabled }} + LDAP_PASSWORD: {{ .Values.authentication_backend.ldap.plain_password | b64enc | quote }} + {{- end }} + + {{- if .Values.notifier.smtp.enabled }} + SMTP_PASSWORD: {{ .Values.notifier.smtp.plain_password | b64enc | quote }} + {{- end }} + + {{- if .Values.duo_api.enabled }} + DUO_API_KEY: {{ .Values.duo_api.plain_api_key | b64enc }} + {{- end }} + + STORAGE_PASSWORD: {{ .Values.postgresql.postgresqlPassword | trimAll "\"" | b64enc }} + + REDIS_PASSWORD: {{ .Values.redis.redisPassword | trimAll "\"" | b64enc }} + {{- if .Values.redisProvider.high_availability.enabled}} + REDIS_SENTINEL_PASSWORD: {{ .Values.redis.sentinelPassword | trimAll "\"" | b64enc }} + {{- end }} + + {{- if $autheliaprevious }} + {{- if and ( hasKey $autheliaprevious.data "OIDC_PRIVATE_KEY" ) ( hasKey $autheliaprevious.data "OIDC_HMAC_SECRET" ) }} + OIDC_PRIVATE_KEY: {{ index $autheliaprevious.data "OIDC_PRIVATE_KEY" }} + OIDC_HMAC_SECRET: {{ index $autheliaprevious.data "OIDC_HMAC_SECRET" }} + {{- else }} + {{- $oidckey := genPrivateKey "rsa" }} + {{- $oidcsecret := randAlphaNum 32 }} + OIDC_PRIVATE_KEY: {{ $oidckey | b64enc }} + OIDC_HMAC_SECRET: {{ $oidcsecret | b64enc }} + {{- end }} + {{- end }} + + +{{- end -}} diff --git a/stable/authelia/11.0.27/templates/common.yaml b/stable/authelia/11.0.27/templates/common.yaml new file mode 100644 index 0000000000..614b468adf --- /dev/null +++ b/stable/authelia/11.0.27/templates/common.yaml @@ -0,0 +1,74 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{/* Render configmap for authelia */}} +{{- include "authelia.configmap" . }} + +{{/* Render secrets for authelia */}} +{{- include "authelia.secrets" . }} + +{{/* Append the general configMap volume to the volumes */}} +{{- define "authelia.configmapVolume" -}} +enabled: "true" +mountPath: " /configuration.yaml" +readOnly: true +subPath: configuration.yaml +type: "custom" +volumeSpec: + configMap: + name: authelia-configfile + items: + - key: configuration.yaml + path: configuration.yaml +{{- end -}} + +{{/* Append the general secret volumes to the volumes */}} +{{- define "authelia.secretVolumes" -}} +enabled: "true" +mountPath: "/secrets" +readOnly: true +type: "custom" +volumeSpec: + secret: + secretName: authelia-secrets + items: + - key: "JWT_TOKEN" + path: JWT_TOKEN + - key: "SESSION_ENCRYPTION_KEY" + path: SESSION_ENCRYPTION_KEY + - key: "ENCRYPTION_KEY" + path: ENCRYPTION_KEY + - key: "STORAGE_PASSWORD" + path: STORAGE_PASSWORD + {{- if .Values.authentication_backend.ldap.enabled }} + - key: "LDAP_PASSWORD" + path: LDAP_PASSWORD + {{- end }} + {{- if .Values.notifier.smtp.enabled }} + - key: "SMTP_PASSWORD" + path: SMTP_PASSWORD + {{- end }} + - key: "REDIS_PASSWORD" + path: REDIS_PASSWORD + {{- if .Values.redisProvider.high_availability.enabled}} + - key: "REDIS_SENTINEL_PASSWORD" + path: REDIS_SENTINEL_PASSWORD + {{- end }} + {{- if .Values.duo_api.enabled }} + - key: "DUO_API_KEY" + path: DUO_API_KEY + {{- end }} + {{- if .Values.identity_providers.oidc.enabled }} + - key: "OIDC_PRIVATE_KEY" + path: OIDC_PRIVATE_KEY + - key: "OIDC_HMAC_SECRET" + path: OIDC_HMAC_SECRET + {{- end }} +{{- end -}} + +{{- $_ := set .Values.persistence "authelia-configfile" (include "authelia.configmapVolume" . | fromYaml) -}} +{{- $_ := set .Values.persistence "authelia-secrets" (include "authelia.secretVolumes" . | fromYaml) -}} + + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/stable/k8s-gateway/6.1.4/values.yaml b/stable/authelia/11.0.27/values.yaml similarity index 100% rename from stable/k8s-gateway/6.1.4/values.yaml rename to stable/authelia/11.0.27/values.yaml diff --git a/stable/calibre-web/11.0.25/CHANGELOG.md b/stable/calibre-web/11.0.25/CHANGELOG.md new file mode 100644 index 0000000000..4e28f2c0ea --- /dev/null +++ b/stable/calibre-web/11.0.25/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [calibre-web-11.0.25](https://github.com/truecharts/apps/compare/calibre-web-11.0.24...calibre-web-11.0.25) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + +## [calibre-web-11.0.24](https://github.com/truecharts/apps/compare/calibre-web-11.0.22...calibre-web-11.0.24) (2022-07-22) + +### Chore + +- Bump all charts to generate config and container references due to huge increase of repository + - update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) + + + +## [calibre-web-11.0.22](https://github.com/truecharts/apps/compare/calibre-web-11.0.21...calibre-web-11.0.22) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [calibre-web-11.0.21](https://github.com/truecharts/apps/compare/calibre-web-11.0.20...calibre-web-11.0.21) (2022-07-16) + +### Chore + +- update docker general non-major ([#3192](https://github.com/truecharts/apps/issues/3192)) + + + +## [calibre-web-11.0.20](https://github.com/truecharts/apps/compare/calibre-web-11.0.19...calibre-web-11.0.20) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [calibre-web-11.0.19](https://github.com/truecharts/apps/compare/calibre-web-11.0.17...calibre-web-11.0.19) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [calibre-web-11.0.17](https://github.com/truecharts/apps/compare/calibre-web-11.0.15...calibre-web-11.0.17) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + + +## [calibre-web-11.0.15](https://github.com/truecharts/apps/compare/calibre-web-11.0.14...calibre-web-11.0.15) (2022-07-12) + +### Chore + +- bump to regenerate documentation + + + + +### [calibre-web-11.0.14](https://github.com/truecharts/apps/compare/calibre-web-11.0.13...calibre-web-11.0.14) (2022-07-12) + +#### Chore + +* update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) +* update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) + + + + +### [calibre-web-11.0.13](https://github.com/truecharts/apps/compare/calibre-web-11.0.12...calibre-web-11.0.13) (2022-07-11) + +#### Chore + +* move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) + + + + +### [calibre-web-11.0.12](https://github.com/truecharts/apps/compare/calibre-web-11.0.11...calibre-web-11.0.12) (2022-07-09) + +#### Chore + +* update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) + + + diff --git a/stable/calibre-web/11.0.25/Chart.lock b/stable/calibre-web/11.0.25/Chart.lock new file mode 100644 index 0000000000..e0e556c370 --- /dev/null +++ b/stable/calibre-web/11.0.25/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-23T11:59:01.183361017Z" diff --git a/stable/calibre-web/11.0.25/Chart.yaml b/stable/calibre-web/11.0.25/Chart.yaml new file mode 100644 index 0000000000..654090a329 --- /dev/null +++ b/stable/calibre-web/11.0.25/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "0.6.18" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: + Calibre-Web is a web app providing a clean interface for browsing, reading + and downloading eBooks using an existing Calibre database. +home: https://github.com/truecharts/apps/tree/master/charts/stable/calibre-web +icon: https://truecharts.org/img/chart-icons/calibre-web.png +keywords: + - calibre-web + - calibre + - ebook +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: calibre-web +sources: + - https://hub.docker.com/r/linuxserver/calibre-web/ + - https://github.com/janeczku/calibre-web +type: application +version: 11.0.25 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/calibre-web/11.0.25/README.md b/stable/calibre-web/11.0.25/README.md new file mode 100644 index 0000000000..999ba32ed6 --- /dev/null +++ b/stable/calibre-web/11.0.25/README.md @@ -0,0 +1,108 @@ +# calibre-web + +![Version: 11.0.25](https://img.shields.io/badge/Version-11.0.25-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.6.18](https://img.shields.io/badge/AppVersion-0.6.18-informational?style=flat-square) + +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. + +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: [calibre-web](https://truecharts.org/docs/charts/stable/calibre-web) + +**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.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `calibre-web` + +```console +helm repo add TrueCharts https://helm.truecharts.org +helm repo update +helm install calibre-web TrueCharts/calibre-web +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `calibre-web` deployment + +```console +helm uninstall calibre-web +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./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 Commandline + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install calibre-web \ + --set env.TZ="America/New York" \ + TrueCharts/calibre-web +``` + +#### 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 calibre-web TrueCharts/calibre-web -f values.yaml +``` + +#### Connecting to other apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/docs/manual/Quick-Start%20Guides/06-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/calibre-web/11.0.25/app-readme.md b/stable/calibre-web/11.0.25/app-readme.md new file mode 100644 index 0000000000..ea1aded13f --- /dev/null +++ b/stable/calibre-web/11.0.25/app-readme.md @@ -0,0 +1,8 @@ +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. + +This App is supplied by TrueCharts, for more information visit the manual: https://truecharts.org/charts/stable/calibre-web + +--- + +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/pihole/6.0.23/charts/common-10.4.6.tgz b/stable/calibre-web/11.0.25/charts/common-10.4.6.tgz similarity index 100% rename from stable/pihole/6.0.23/charts/common-10.4.6.tgz rename to stable/calibre-web/11.0.25/charts/common-10.4.6.tgz diff --git a/stable/calibre-web/11.0.25/ix_values.yaml b/stable/calibre-web/11.0.25/ix_values.yaml new file mode 100644 index 0000000000..b1145c90ee --- /dev/null +++ b/stable/calibre-web/11.0.25/ix_values.yaml @@ -0,0 +1,24 @@ +image: + repository: tccr.io/truecharts/calibre-web + pullPolicy: IfNotPresent + tag: v0.6.18@sha256:334d6a1c009b76d5f433e737e65f836b57e196330ce588a1c22d5703c1d9cfc6 + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +service: + main: + ports: + main: + port: 8083 + targetPort: 8083 + +persistence: + config: + enabled: true + mountPath: "/config" diff --git a/stable/calibre-web/11.0.25/questions.yaml b/stable/calibre-web/11.0.25/questions.yaml new file mode 100644 index 0000000000..a5ebbc7b26 --- /dev/null +++ b/stable/calibre-web/11.0.25/questions.yaml @@ -0,0 +1,2430 @@ +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" +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - 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 + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + 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" + - variable: expert + label: "Show Expert Configuration Options" + 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: 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: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + 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 Config" + 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: 8083 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - 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: 8083 + + - 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: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + 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: config + label: "App Config Storage" + description: "Stores the Application Configuration." + 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: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - 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: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + 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: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - 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: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + 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) 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: 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: "pathType" + 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: "pathType" + 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 tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/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/manual/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/manual/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/manual/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: "ipBlock" +# 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: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# 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: "matchExpressions" +# 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: "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: "ipBlock" +# 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: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# 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: "matchExpressions" +# 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: "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" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - 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 ipv4 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: "" + required: true + - 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: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + 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 ecommand 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 diff --git a/stable/calibre-web/11.0.25/templates/common.yaml b/stable/calibre-web/11.0.25/templates/common.yaml new file mode 100644 index 0000000000..c1a366e1cf --- /dev/null +++ b/stable/calibre-web/11.0.25/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/pihole/6.0.23/values.yaml b/stable/calibre-web/11.0.25/values.yaml similarity index 100% rename from stable/pihole/6.0.23/values.yaml rename to stable/calibre-web/11.0.25/values.yaml diff --git a/stable/k8s-gateway/6.1.4/Chart.lock b/stable/k8s-gateway/6.1.4/Chart.lock deleted file mode 100644 index f98b24acd2..0000000000 --- a/stable/k8s-gateway/6.1.4/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://library-charts.truecharts.org - version: 10.4.6 -digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 -generated: "2022-07-22T23:58:40.636771902Z" diff --git a/stable/k8s-gateway/6.1.4/CHANGELOG.md b/stable/k8s-gateway/6.1.5/CHANGELOG.md similarity index 89% rename from stable/k8s-gateway/6.1.4/CHANGELOG.md rename to stable/k8s-gateway/6.1.5/CHANGELOG.md index a8de56b27f..5abbdd0aea 100644 --- a/stable/k8s-gateway/6.1.4/CHANGELOG.md +++ b/stable/k8s-gateway/6.1.5/CHANGELOG.md @@ -2,6 +2,15 @@ +## [k8s-gateway-6.1.5](https://github.com/truecharts/apps/compare/k8s-gateway-6.1.4...k8s-gateway-6.1.5) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + ## [k8s-gateway-6.1.4](https://github.com/truecharts/apps/compare/k8s-gateway-6.1.2...k8s-gateway-6.1.4) (2022-07-22) ### Chore @@ -88,12 +97,3 @@ -### [k8s-gateway-6.0.8](https://github.com/truecharts/apps/compare/k8s-gateway-6.0.7...k8s-gateway-6.0.8) (2022-07-04) - -#### Chore - -* update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - - diff --git a/stable/k8s-gateway/6.1.5/Chart.lock b/stable/k8s-gateway/6.1.5/Chart.lock new file mode 100644 index 0000000000..23257de0e2 --- /dev/null +++ b/stable/k8s-gateway/6.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-23T11:59:01.80010961Z" diff --git a/stable/k8s-gateway/6.1.4/Chart.yaml b/stable/k8s-gateway/6.1.5/Chart.yaml similarity index 97% rename from stable/k8s-gateway/6.1.4/Chart.yaml rename to stable/k8s-gateway/6.1.5/Chart.yaml index cba9d8aa74..fe1ede351c 100644 --- a/stable/k8s-gateway/6.1.4/Chart.yaml +++ b/stable/k8s-gateway/6.1.5/Chart.yaml @@ -20,7 +20,7 @@ name: k8s-gateway sources: - https://github.com/ori-edge/k8s_gateway type: application -version: 6.1.4 +version: 6.1.5 annotations: truecharts.org/catagories: | - networking diff --git a/stable/k8s-gateway/6.1.4/README.md b/stable/k8s-gateway/6.1.5/README.md similarity index 98% rename from stable/k8s-gateway/6.1.4/README.md rename to stable/k8s-gateway/6.1.5/README.md index c28da2f13a..6f97fe6fa6 100644 --- a/stable/k8s-gateway/6.1.4/README.md +++ b/stable/k8s-gateway/6.1.5/README.md @@ -1,6 +1,6 @@ # k8s-gateway -![Version: 6.1.4](https://img.shields.io/badge/Version-6.1.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.3.0](https://img.shields.io/badge/AppVersion-0.3.0-informational?style=flat-square) +![Version: 6.1.5](https://img.shields.io/badge/Version-6.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.3.0](https://img.shields.io/badge/AppVersion-0.3.0-informational?style=flat-square) A Helm chart for the k8s_gateway CoreDNS plugin diff --git a/stable/k8s-gateway/6.1.4/app-readme.md b/stable/k8s-gateway/6.1.5/app-readme.md similarity index 100% rename from stable/k8s-gateway/6.1.4/app-readme.md rename to stable/k8s-gateway/6.1.5/app-readme.md diff --git a/stable/k8s-gateway/6.1.5/charts/common-10.4.6.tgz b/stable/k8s-gateway/6.1.5/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/stable/k8s-gateway/6.1.4/ix_values.yaml b/stable/k8s-gateway/6.1.5/ix_values.yaml similarity index 97% rename from stable/k8s-gateway/6.1.4/ix_values.yaml rename to stable/k8s-gateway/6.1.5/ix_values.yaml index b3baa23823..206c48d8f0 100644 --- a/stable/k8s-gateway/6.1.4/ix_values.yaml +++ b/stable/k8s-gateway/6.1.5/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/k8s_gateway pullPolicy: IfNotPresent - tag: v0.3.0@sha256:035b4488071258db2f2e543c21c93f1c6ca5fbf13ae132aac9579afa5843a4b9 + tag: v0.3.0@sha256:7e14bd0b38afb496d4a452b2221e293bc34ba0f95c73595c590f92c19230ec46 controller: # -- Set additional annotations on the deployment/statefulset/daemonset diff --git a/stable/k8s-gateway/6.1.4/questions.yaml b/stable/k8s-gateway/6.1.5/questions.yaml similarity index 100% rename from stable/k8s-gateway/6.1.4/questions.yaml rename to stable/k8s-gateway/6.1.5/questions.yaml diff --git a/stable/k8s-gateway/6.1.4/templates/_configmap.tpl b/stable/k8s-gateway/6.1.5/templates/_configmap.tpl similarity index 100% rename from stable/k8s-gateway/6.1.4/templates/_configmap.tpl rename to stable/k8s-gateway/6.1.5/templates/_configmap.tpl diff --git a/stable/k8s-gateway/6.1.4/templates/common.yaml b/stable/k8s-gateway/6.1.5/templates/common.yaml similarity index 100% rename from stable/k8s-gateway/6.1.4/templates/common.yaml rename to stable/k8s-gateway/6.1.5/templates/common.yaml diff --git a/stable/k8s-gateway/6.1.5/values.yaml b/stable/k8s-gateway/6.1.5/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/stable/nextcloud/15.2.25/CHANGELOG.md b/stable/nextcloud/15.2.25/CHANGELOG.md new file mode 100644 index 0000000000..641a884bc3 --- /dev/null +++ b/stable/nextcloud/15.2.25/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [nextcloud-15.2.25](https://github.com/truecharts/apps/compare/nextcloud-15.2.24...nextcloud-15.2.25) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + +## [nextcloud-15.2.24](https://github.com/truecharts/apps/compare/nextcloud-15.2.23...nextcloud-15.2.24) (2022-07-23) + +### Chore + +- update helm general non-major helm releases ([#3274](https://github.com/truecharts/apps/issues/3274)) + + + + +## [nextcloud-15.2.23](https://github.com/truecharts/apps/compare/nextcloud-15.2.21...nextcloud-15.2.23) (2022-07-22) + +### Chore + +- Bump all charts to generate config and container references due to huge increase of repository + - update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) + - update docker general non-major ([#3266](https://github.com/truecharts/apps/issues/3266)) + + + +## [nextcloud-15.2.21](https://github.com/truecharts/apps/compare/nextcloud-15.2.20...nextcloud-15.2.21) (2022-07-22) + +### Chore + +- update docker general non-major ([#3258](https://github.com/truecharts/apps/issues/3258)) + + + +## [nextcloud-15.2.20](https://github.com/truecharts/apps/compare/nextcloud-15.2.19...nextcloud-15.2.20) (2022-07-20) + +### Chore + +- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) + + + +## [nextcloud-15.2.19](https://github.com/truecharts/apps/compare/nextcloud-15.2.18...nextcloud-15.2.19) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [nextcloud-15.2.18](https://github.com/truecharts/apps/compare/nextcloud-15.2.17...nextcloud-15.2.18) (2022-07-16) + +### Chore + +- update docker general non-major ([#3192](https://github.com/truecharts/apps/issues/3192)) + + + +## [nextcloud-15.2.17](https://github.com/truecharts/apps/compare/nextcloud-15.2.16...nextcloud-15.2.17) (2022-07-15) + +### Chore + +- update docker general non-major ([#3184](https://github.com/truecharts/apps/issues/3184)) + + + +## [nextcloud-15.2.16](https://github.com/truecharts/apps/compare/nextcloud-15.2.15...nextcloud-15.2.16) (2022-07-14) + +### Fix + +- regenerate catalog and update template + + + +## [nextcloud-15.2.15](https://github.com/truecharts/apps/compare/nextcloud-15.2.13...nextcloud-15.2.15) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts + + + +## [nextcloud-15.2.13](https://github.com/truecharts/apps/compare/nextcloud-15.2.12...nextcloud-15.2.13) (2022-07-14) + +### Chore + +- update docker general non-major ([#3171](https://github.com/truecharts/apps/issues/3171)) + + + +## [nextcloud-15.2.12](https://github.com/truecharts/apps/compare/nextcloud-15.2.11...nextcloud-15.2.12) (2022-07-13) + +### Chore diff --git a/stable/nextcloud/15.2.25/Chart.lock b/stable/nextcloud/15.2.25/Chart.lock new file mode 100644 index 0000000000..583b946055 --- /dev/null +++ b/stable/nextcloud/15.2.25/Chart.lock @@ -0,0 +1,15 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +- name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.43 +- name: collabora-online + repository: https://charts.truecharts.org/ + version: 12.1.20 +- name: redis + repository: https://charts.truecharts.org + version: 3.0.42 +digest: sha256:5d6a45f180b678d16fe488ab0208cfd550a74db1b79db6efd084275d98776b62 +generated: "2022-07-23T11:59:48.276316039Z" diff --git a/stable/nextcloud/15.2.25/Chart.yaml b/stable/nextcloud/15.2.25/Chart.yaml new file mode 100644 index 0000000000..411e6ee1e1 --- /dev/null +++ b/stable/nextcloud/15.2.25/Chart.yaml @@ -0,0 +1,46 @@ +apiVersion: v2 +appVersion: "24.0.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.43 + - condition: collabora.enabled + name: collabora-online + repository: https://charts.truecharts.org/ + version: 12.1.20 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 3.0.42 +deprecated: false +description: + A private cloud server that puts the control and security of your own + data back into your hands. +home: https://github.com/truecharts/apps/tree/master/charts/stable/nextcloud +icon: https://truecharts.org/img/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/nextcloud/docker + - https://github.com/nextcloud/helm +type: application +version: 15.2.25 +annotations: + truecharts.org/catagories: | + - cloud + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/nextcloud/15.2.25/README.md b/stable/nextcloud/15.2.25/README.md new file mode 100644 index 0000000000..e7f739b2f4 --- /dev/null +++ b/stable/nextcloud/15.2.25/README.md @@ -0,0 +1,111 @@ +# nextcloud + +![Version: 15.2.25](https://img.shields.io/badge/Version-15.2.25-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 24.0.3](https://img.shields.io/badge/AppVersion-24.0.3-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.20 | +| https://charts.truecharts.org/ | postgresql | 8.0.43 | +| https://charts.truecharts.org | redis | 3.0.42 | +| https://library-charts.truecharts.org | common | 10.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `nextcloud` + +```console +helm repo add TrueCharts https://helm.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 App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `nextcloud` deployment + +```console +helm uninstall nextcloud +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./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 Commandline + +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 apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/docs/manual/Quick-Start%20Guides/06-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.2.25/app-readme.md b/stable/nextcloud/15.2.25/app-readme.md new file mode 100644 index 0000000000..a9578ec10a --- /dev/null +++ b/stable/nextcloud/15.2.25/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/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.2.25/charts/collabora-online-12.1.20.tgz b/stable/nextcloud/15.2.25/charts/collabora-online-12.1.20.tgz new file mode 100644 index 0000000000000000000000000000000000000000..22a008c446ff32d0d8c3a07da6049d906d7849d5 GIT binary patch literal 57537 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/stable/nextcloud/15.2.25/charts/postgresql-8.0.43.tgz b/stable/nextcloud/15.2.25/charts/postgresql-8.0.43.tgz new file mode 100644 index 0000000000000000000000000000000000000000..179ed6087ec13d8e6d5fc004a2cf92590345fe74 GIT binary patch literal 60646 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

2Hsj&>`j5~e; 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 literal 0 HcmV?d00001 diff --git a/stable/nextcloud/15.2.25/charts/redis-3.0.42.tgz b/stable/nextcloud/15.2.25/charts/redis-3.0.42.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a82d4d5a2f77f08b9ffe35352362d4eb5b44b555 GIT binary patch literal 56258 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 -### [pinry-2.0.7](https://github.com/truecharts/apps/compare/pinry-2.0.6...pinry-2.0.7) (2022-06-25) - -#### Chore - -* update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977)) - - - diff --git a/stable/pihole/6.0.24/Chart.lock b/stable/pihole/6.0.24/Chart.lock new file mode 100644 index 0000000000..a729c33807 --- /dev/null +++ b/stable/pihole/6.0.24/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-23T11:59:24.750505181Z" diff --git a/stable/pihole/6.0.23/Chart.yaml b/stable/pihole/6.0.24/Chart.yaml similarity index 97% rename from stable/pihole/6.0.23/Chart.yaml rename to stable/pihole/6.0.24/Chart.yaml index 950ab37a18..8e973a43a3 100644 --- a/stable/pihole/6.0.23/Chart.yaml +++ b/stable/pihole/6.0.24/Chart.yaml @@ -21,7 +21,7 @@ sources: - https://github.com/pi-hole - https://github.com/pi-hole/docker-pi-hole type: application -version: 6.0.23 +version: 6.0.24 annotations: truecharts.org/catagories: | - networking diff --git a/stable/pihole/6.0.23/README.md b/stable/pihole/6.0.24/README.md similarity index 98% rename from stable/pihole/6.0.23/README.md rename to stable/pihole/6.0.24/README.md index a002369df6..5eb93778c1 100644 --- a/stable/pihole/6.0.23/README.md +++ b/stable/pihole/6.0.24/README.md @@ -1,6 +1,6 @@ # pihole -![Version: 6.0.23](https://img.shields.io/badge/Version-6.0.23-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2022.07.1](https://img.shields.io/badge/AppVersion-2022.07.1-informational?style=flat-square) +![Version: 6.0.24](https://img.shields.io/badge/Version-6.0.24-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2022.07.1](https://img.shields.io/badge/AppVersion-2022.07.1-informational?style=flat-square) DNS and Ad-filtering for your network diff --git a/stable/pihole/6.0.23/app-readme.md b/stable/pihole/6.0.24/app-readme.md similarity index 100% rename from stable/pihole/6.0.23/app-readme.md rename to stable/pihole/6.0.24/app-readme.md diff --git a/stable/pihole/6.0.24/charts/common-10.4.6.tgz b/stable/pihole/6.0.24/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/stable/pihole/6.0.23/ix_values.yaml b/stable/pihole/6.0.24/ix_values.yaml similarity index 90% rename from stable/pihole/6.0.23/ix_values.yaml rename to stable/pihole/6.0.24/ix_values.yaml index 92a6f0a2a2..4dba5ce509 100644 --- a/stable/pihole/6.0.23/ix_values.yaml +++ b/stable/pihole/6.0.24/ix_values.yaml @@ -1,7 +1,7 @@ image: repository: tccr.io/truecharts/pihole pullPolicy: IfNotPresent - tag: v2022.07.1@sha256:25685c03bdb0e1d03b5db4d921de4e54e56df16ac67ffca7fb5132bd559357bb + tag: v2022.07.1@sha256:eb1701bc55bf037a12612de837c566bca4e5bee4eb26e75b5d9bb8e361c7b4b0 securityContext: readOnlyRootFilesystem: false diff --git a/stable/pihole/6.0.23/questions.yaml b/stable/pihole/6.0.24/questions.yaml similarity index 100% rename from stable/pihole/6.0.23/questions.yaml rename to stable/pihole/6.0.24/questions.yaml diff --git a/stable/pihole/6.0.23/templates/_configmap.tpl b/stable/pihole/6.0.24/templates/_configmap.tpl similarity index 100% rename from stable/pihole/6.0.23/templates/_configmap.tpl rename to stable/pihole/6.0.24/templates/_configmap.tpl diff --git a/stable/pihole/6.0.23/templates/common.yaml b/stable/pihole/6.0.24/templates/common.yaml similarity index 100% rename from stable/pihole/6.0.23/templates/common.yaml rename to stable/pihole/6.0.24/templates/common.yaml diff --git a/stable/pihole/6.0.24/values.yaml b/stable/pihole/6.0.24/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/stable/traefik/13.1.3/CHANGELOG.md b/stable/traefik/13.1.3/CHANGELOG.md new file mode 100644 index 0000000000..3844cce8d2 --- /dev/null +++ b/stable/traefik/13.1.3/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [traefik-13.1.3](https://github.com/truecharts/apps/compare/traefik-13.1.2...traefik-13.1.3) (2022-07-23) + +### Chore + +- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) + + + + +## [traefik-13.1.2](https://github.com/truecharts/apps/compare/traefik-13.1.0...traefik-13.1.2) (2022-07-22) + +### Chore + +- Bump all charts to generate config and container references due to huge increase of repository + - update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) + - update docker general non-major ([#3266](https://github.com/truecharts/apps/issues/3266)) + + + +## [traefik-13.1.0](https://github.com/truecharts/apps/compare/traefik-13.0.0...traefik-13.1.0) (2022-07-22) + + + +## [traefik-13.0.0](https://github.com/truecharts/apps/compare/traefik-12.0.24...traefik-13.0.0) (2022-07-21) + +### Feat + +- Adds theme.park middleware and remove Traefik pilot ([#3245](https://github.com/truecharts/apps/issues/3245)) + + + +## [traefik-12.0.24](https://github.com/truecharts/apps/compare/traefik-12.0.23...traefik-12.0.24) (2022-07-19) + +### Chore + +- Update Readme and Description on SCALE + + + +## [traefik-12.0.23](https://github.com/truecharts/apps/compare/traefik-12.0.22...traefik-12.0.23) (2022-07-18) + +### Fix + +- don't set xrobots header on default middleware ([#3211](https://github.com/truecharts/apps/issues/3211)) + + + +## [traefik-12.0.22](https://github.com/truecharts/apps/compare/traefik-12.0.20...traefik-12.0.22) (2022-07-14) + +### Fix + +- regenerate catalog and update template +- don't set xrobots header by default ([#3183](https://github.com/truecharts/apps/issues/3183)) + + + +## [traefik-12.0.20](https://github.com/truecharts/apps/compare/traefik-12.0.18...traefik-12.0.20) (2022-07-14) + +### Fix + +- bump to ensure .helmignore is present on all Charts +- disable HTTP probes temporarily ([#3173](https://github.com/truecharts/apps/issues/3173)) + + + +## [traefik-12.0.18](https://github.com/truecharts/apps/compare/traefik-12.0.17...traefik-12.0.18) (2022-07-13) + + + +## [traefik-12.0.17](https://github.com/truecharts/apps/compare/traefik-12.0.15...traefik-12.0.17) (2022-07-12) + +### Chore + +- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) +- bump to cleanup old docs and use correct icon urls + + + +## [traefik-12.0.15](https://github.com/truecharts/apps/compare/traefik-12.0.14...traefik-12.0.15) (2022-07-12) + +### Chore + +- bump to regenerate documentation + + + + +### [traccar-7.0.13](https://github.com/truecharts/apps/compare/traccar-7.0.12...traccar-7.0.13) (2022-07-12) + +#### Chore + +* update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) + + + diff --git a/stable/traefik/13.1.3/Chart.lock b/stable/traefik/13.1.3/Chart.lock new file mode 100644 index 0000000000..51acd42548 --- /dev/null +++ b/stable/traefik/13.1.3/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +digest: sha256:b6ec2269ef52a07204e68067ac07f04cd95aca6939723dd642d52842c9c91692 +generated: "2022-07-23T11:59:24.970947196Z" diff --git a/stable/traefik/13.1.3/Chart.yaml b/stable/traefik/13.1.3/Chart.yaml new file mode 100644 index 0000000000..e3477829aa --- /dev/null +++ b/stable/traefik/13.1.3/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "2.8.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.4.6 +deprecated: false +description: Traefik is a flexible reverse proxy and Ingress Provider. +home: https://github.com/truecharts/apps/tree/master/charts/core/traefik +icon: https://truecharts.org/img/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/traefik/traefik + - https://github.com/traefik/traefik-helm-chart + - https://traefik.io/ +type: application +version: 13.1.3 +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/traefik/13.1.3/README.md b/stable/traefik/13.1.3/README.md new file mode 100644 index 0000000000..46e988ea0c --- /dev/null +++ b/stable/traefik/13.1.3/README.md @@ -0,0 +1,109 @@ +# traefik + +![Version: 13.1.3](https://img.shields.io/badge/Version-13.1.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.8.1](https://img.shields.io/badge/AppVersion-2.8.1-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.4.6 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/02-Installing-an-App/). + +### Helm + +To install the chart with the release name `traefik` + +```console +helm repo add TrueCharts https://helm.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 App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +### Helm + +To uninstall the `traefik` deployment + +```console +helm uninstall traefik +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the [values.yaml](./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 Commandline + +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 apps + +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/docs/manual/Quick-Start%20Guides/06-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.1.3/app-readme.md b/stable/traefik/13.1.3/app-readme.md new file mode 100644 index 0000000000..67bcce116d --- /dev/null +++ b/stable/traefik/13.1.3/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/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.1.3/charts/common-10.4.6.tgz b/stable/traefik/13.1.3/charts/common-10.4.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4f269521bada00b7f91a8f67ab9fd2352e490f2e GIT binary patch literal 47360 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 IX#mCq0FIbji~s-t literal 0 HcmV?d00001 diff --git a/stable/traefik/13.1.3/crds/ingressroute.yaml b/stable/traefik/13.1.3/crds/ingressroute.yaml new file mode 100644 index 0000000000..572adae5f0 --- /dev/null +++ b/stable/traefik/13.1.3/crds/ingressroute.yaml @@ -0,0 +1,209 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: ingressroutes.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: IngressRoute + listKind: IngressRouteList + plural: ingressroutes + singular: ingressroute + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRoute is an Ingress CRD specification. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: + IngressRouteSpec is a specification for a IngressRouteSpec + resource. + properties: + entryPoints: + items: + type: string + type: array + routes: + items: + description: Route contains the set of routes. + properties: + kind: + enum: + - Rule + type: string + match: + type: string + middlewares: + items: + description: MiddlewareRef is a ref to the Middleware resources. + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + type: array + priority: + type: integer + services: + items: + description: Service defines an upstream to proxy traffic. + properties: + kind: + enum: + - Service + - TraefikService + type: string + name: + description: + Name is a reference to a Kubernetes Service + object (for a load-balancer of servers), or to a TraefikService + object (service load-balancer, mirroring, etc). The + differentiation between the two is specified in the + Kind field. + type: string + namespace: + type: string + passHostHeader: + type: boolean + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + responseForwarding: + description: + ResponseForwarding holds configuration for + the forward of the response. + properties: + flushInterval: + type: string + type: object + scheme: + type: string + serversTransport: + type: string + sticky: + description: Sticky holds the sticky configuration. + properties: + cookie: + description: + Cookie holds the sticky configuration + based on cookie. + properties: + httpOnly: + type: boolean + name: + type: string + sameSite: + type: string + secure: + type: boolean + type: object + type: object + strategy: + type: string + weight: + description: + Weight should only be specified when Name + references a TraefikService object (and to be precise, + one that embeds a Weighted Round Robin). + type: integer + required: + - name + type: object + type: array + required: + - kind + - match + type: object + type: array + tls: + description: + "TLS contains the TLS certificates configuration of the + routes. To enable Let's Encrypt, use an empty TLS struct, e.g. in + YAML: \n \t tls: {} # inline format \n \t tls: \t secretName: + # block format" + properties: + certResolver: + type: string + domains: + items: + description: Domain holds a domain name with SANs. + properties: + main: + type: string + sans: + items: + type: string + type: array + type: object + type: array + options: + description: + Options is a reference to a TLSOption, that specifies + the parameters of the TLS connection. + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + secretName: + description: + SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + store: + description: + Store is a reference to a TLSStore, that specifies + the parameters of the TLS store. + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + type: object + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/ingressroutetcp.yaml b/stable/traefik/13.1.3/crds/ingressroutetcp.yaml new file mode 100644 index 0000000000..127a41767e --- /dev/null +++ b/stable/traefik/13.1.3/crds/ingressroutetcp.yaml @@ -0,0 +1,169 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: ingressroutetcps.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: IngressRouteTCP + listKind: IngressRouteTCPList + plural: ingressroutetcps + singular: ingressroutetcp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRouteTCP is an Ingress CRD specification. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: + IngressRouteTCPSpec is a specification for a IngressRouteTCPSpec + resource. + properties: + entryPoints: + items: + type: string + type: array + routes: + items: + description: RouteTCP contains the set of routes. + properties: + match: + type: string + middlewares: + description: + Middlewares contains references to MiddlewareTCP + resources. + items: + description: + ObjectReference is a generic reference to a Traefik + resource. + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + type: array + services: + items: + description: ServiceTCP defines an upstream to proxy traffic. + properties: + name: + type: string + namespace: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + proxyProtocol: + description: ProxyProtocol holds the ProxyProtocol configuration. + properties: + version: + type: integer + type: object + terminationDelay: + type: integer + weight: + type: integer + required: + - name + - port + type: object + type: array + required: + - match + type: object + type: array + tls: + description: + "TLSTCP contains the TLS certificates configuration of + the routes. To enable Let's Encrypt, use an empty TLS struct, e.g. + in YAML: \n \t tls: {} # inline format \n \t tls: \t secretName: + # block format" + properties: + certResolver: + type: string + domains: + items: + description: Domain holds a domain name with SANs. + properties: + main: + type: string + sans: + items: + type: string + type: array + type: object + type: array + options: + description: + Options is a reference to a TLSOption, that specifies + the parameters of the TLS connection. + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + passthrough: + type: boolean + secretName: + description: + SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + store: + description: + Store is a reference to a TLSStore, that specifies + the parameters of the TLS store. + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + type: object + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/ingressrouteudp.yaml b/stable/traefik/13.1.3/crds/ingressrouteudp.yaml new file mode 100644 index 0000000000..2ed2b6969b --- /dev/null +++ b/stable/traefik/13.1.3/crds/ingressrouteudp.yaml @@ -0,0 +1,87 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: ingressrouteudps.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: IngressRouteUDP + listKind: IngressRouteUDPList + plural: ingressrouteudps + singular: ingressrouteudp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: IngressRouteUDP is an Ingress CRD specification. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: + IngressRouteUDPSpec is a specification for a IngressRouteUDPSpec + resource. + properties: + entryPoints: + items: + type: string + type: array + routes: + items: + description: RouteUDP contains the set of routes. + properties: + services: + items: + description: ServiceUDP defines an upstream to proxy traffic. + properties: + name: + type: string + namespace: + type: string + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + weight: + type: integer + required: + - name + - port + type: object + type: array + type: object + type: array + required: + - routes + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/middlewares.yaml b/stable/traefik/13.1.3/crds/middlewares.yaml new file mode 100644 index 0000000000..714d151151 --- /dev/null +++ b/stable/traefik/13.1.3/crds/middlewares.yaml @@ -0,0 +1,587 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: middlewares.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: Middleware + listKind: MiddlewareList + plural: middlewares + singular: middleware + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Middleware is a specification for a Middleware resource. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: MiddlewareSpec holds the Middleware configuration. + properties: + addPrefix: + description: AddPrefix holds the AddPrefix configuration. + properties: + prefix: + type: string + type: object + basicAuth: + description: BasicAuth holds the HTTP basic authentication configuration. + properties: + headerField: + type: string + realm: + type: string + removeHeader: + type: boolean + secret: + type: string + type: object + buffering: + description: Buffering holds the request/response buffering configuration. + properties: + maxRequestBodyBytes: + format: int64 + type: integer + maxResponseBodyBytes: + format: int64 + type: integer + memRequestBodyBytes: + format: int64 + type: integer + memResponseBodyBytes: + format: int64 + type: integer + retryExpression: + type: string + type: object + chain: + description: Chain holds a chain of middlewares. + properties: + middlewares: + items: + description: MiddlewareRef is a ref to the Middleware resources. + properties: + name: + type: string + namespace: + type: string + required: + - name + type: object + type: array + type: object + circuitBreaker: + description: CircuitBreaker holds the circuit breaker configuration. + properties: + expression: + type: string + type: object + compress: + description: Compress holds the compress configuration. + properties: + excludedContentTypes: + items: + type: string + type: array + type: object + contentType: + description: + ContentType middleware - or rather its unique `autoDetect` + option - specifies whether to let the `Content-Type` header, if + it has not been set by the backend, be automatically set to a value + derived from the contents of the response. As a proxy, the default + behavior should be to leave the header alone, regardless of what + the backend did with it. However, the historic default was to always + auto-detect and set the header if it was nil, and it is going to + be kept that way in order to support users currently relying on + it. This middleware exists to enable the correct behavior until + at least the default one can be changed in a future version. + properties: + autoDetect: + type: boolean + type: object + digestAuth: + description: DigestAuth holds the Digest HTTP authentication configuration. + properties: + headerField: + type: string + realm: + type: string + removeHeader: + type: boolean + secret: + type: string + type: object + errors: + description: ErrorPage holds the custom error page configuration. + properties: + query: + type: string + service: + description: Service defines an upstream to proxy traffic. + properties: + kind: + enum: + - Service + - TraefikService + type: string + name: + description: + Name is a reference to a Kubernetes Service object + (for a load-balancer of servers), or to a TraefikService + object (service load-balancer, mirroring, etc). The differentiation + between the two is specified in the Kind field. + type: string + namespace: + type: string + passHostHeader: + type: boolean + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + responseForwarding: + description: + ResponseForwarding holds configuration for the + forward of the response. + properties: + flushInterval: + type: string + type: object + scheme: + type: string + serversTransport: + type: string + sticky: + description: Sticky holds the sticky configuration. + properties: + cookie: + description: + Cookie holds the sticky configuration based + on cookie. + properties: + httpOnly: + type: boolean + name: + type: string + sameSite: + type: string + secure: + type: boolean + type: object + type: object + strategy: + type: string + weight: + description: + Weight should only be specified when Name references + a TraefikService object (and to be precise, one that embeds + a Weighted Round Robin). + type: integer + required: + - name + type: object + status: + items: + type: string + type: array + type: object + forwardAuth: + description: ForwardAuth holds the http forward authentication configuration. + properties: + address: + type: string + authRequestHeaders: + items: + type: string + type: array + authResponseHeaders: + items: + type: string + type: array + authResponseHeadersRegex: + type: string + tls: + description: ClientTLS holds TLS specific configurations as client. + properties: + caOptional: + type: boolean + caSecret: + type: string + certSecret: + type: string + insecureSkipVerify: + type: boolean + type: object + trustForwardHeader: + type: boolean + type: object + headers: + description: Headers holds the custom header configuration. + properties: + accessControlAllowCredentials: + description: + AccessControlAllowCredentials is only valid if true. + false is ignored. + type: boolean + accessControlAllowHeaders: + description: + AccessControlAllowHeaders must be used in response + to a preflight request with Access-Control-Request-Headers set. + items: + type: string + type: array + accessControlAllowMethods: + description: + AccessControlAllowMethods must be used in response + to a preflight request with Access-Control-Request-Method set. + items: + type: string + type: array + accessControlAllowOriginList: + description: + AccessControlAllowOriginList is a list of allowable + origins. Can also be a wildcard origin "*". + items: + type: string + type: array + accessControlAllowOriginListRegex: + description: + AccessControlAllowOriginListRegex is a list of allowable + origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). + items: + type: string + type: array + accessControlExposeHeaders: + description: + AccessControlExposeHeaders sets valid headers for + the response. + items: + type: string + type: array + accessControlMaxAge: + description: + AccessControlMaxAge sets the time that a preflight + request may be cached. + format: int64 + type: integer + addVaryHeader: + description: + AddVaryHeader controls if the Vary header is automatically + added/updated when the AccessControlAllowOriginList is set. + type: boolean + allowedHosts: + items: + type: string + type: array + browserXssFilter: + type: boolean + contentSecurityPolicy: + type: string + contentTypeNosniff: + type: boolean + customBrowserXSSValue: + type: string + customFrameOptionsValue: + type: string + customRequestHeaders: + additionalProperties: + type: string + type: object + customResponseHeaders: + additionalProperties: + type: string + type: object + featurePolicy: + type: string + forceSTSHeader: + type: boolean + frameDeny: + type: boolean + hostsProxyHeaders: + items: + type: string + type: array + isDevelopment: + type: boolean + publicKey: + type: string + referrerPolicy: + type: string + sslForceHost: + description: "Deprecated: use RedirectRegex instead." + type: boolean + sslHost: + description: "Deprecated: use RedirectRegex instead." + type: string + sslProxyHeaders: + additionalProperties: + type: string + type: object + sslRedirect: + description: + "Deprecated: use EntryPoint redirection or RedirectScheme + instead." + type: boolean + sslTemporaryRedirect: + description: + "Deprecated: use EntryPoint redirection or RedirectScheme + instead." + type: boolean + stsIncludeSubdomains: + type: boolean + stsPreload: + type: boolean + stsSeconds: + format: int64 + type: integer + type: object + inFlightReq: + description: + InFlightReq limits the number of requests being processed + and served concurrently. + properties: + amount: + format: int64 + type: integer + sourceCriterion: + description: + SourceCriterion defines what criterion is used to + group requests as originating from a common source. If none + are set, the default is to use the request's remote address + field. All fields are mutually exclusive. + properties: + ipStrategy: + description: IPStrategy holds the ip strategy configuration. + properties: + depth: + type: integer + excludedIPs: + items: + type: string + type: array + type: object + requestHeaderName: + type: string + requestHost: + type: boolean + type: object + type: object + ipWhiteList: + description: IPWhiteList holds the ip white list configuration. + properties: + ipStrategy: + description: IPStrategy holds the ip strategy configuration. + properties: + depth: + type: integer + excludedIPs: + items: + type: string + type: array + type: object + sourceRange: + items: + type: string + type: array + type: object + passTLSClientCert: + description: PassTLSClientCert holds the TLS client cert headers configuration. + properties: + info: + description: + TLSClientCertificateInfo holds the client TLS certificate + info configuration. + properties: + issuer: + description: + TLSCLientCertificateDNInfo holds the client TLS + certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739 + properties: + commonName: + type: boolean + country: + type: boolean + domainComponent: + type: boolean + locality: + type: boolean + organization: + type: boolean + province: + type: boolean + serialNumber: + type: boolean + type: object + notAfter: + type: boolean + notBefore: + type: boolean + sans: + type: boolean + serialNumber: + type: boolean + subject: + description: + TLSCLientCertificateDNInfo holds the client TLS + certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739 + properties: + commonName: + type: boolean + country: + type: boolean + domainComponent: + type: boolean + locality: + type: boolean + organization: + type: boolean + province: + type: boolean + serialNumber: + type: boolean + type: object + type: object + pem: + type: boolean + type: object + plugin: + additionalProperties: + x-kubernetes-preserve-unknown-fields: true + type: object + rateLimit: + description: + RateLimit holds the rate limiting configuration for a + given router. + properties: + average: + format: int64 + type: integer + burst: + format: int64 + type: integer + period: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + sourceCriterion: + description: + SourceCriterion defines what criterion is used to + group requests as originating from a common source. If none + are set, the default is to use the request's remote address + field. All fields are mutually exclusive. + properties: + ipStrategy: + description: IPStrategy holds the ip strategy configuration. + properties: + depth: + type: integer + excludedIPs: + items: + type: string + type: array + type: object + requestHeaderName: + type: string + requestHost: + type: boolean + type: object + type: object + redirectRegex: + description: RedirectRegex holds the redirection configuration. + properties: + permanent: + type: boolean + regex: + type: string + replacement: + type: string + type: object + redirectScheme: + description: RedirectScheme holds the scheme redirection configuration. + properties: + permanent: + type: boolean + port: + type: string + scheme: + type: string + type: object + replacePath: + description: ReplacePath holds the ReplacePath configuration. + properties: + path: + type: string + type: object + replacePathRegex: + description: ReplacePathRegex holds the ReplacePathRegex configuration. + properties: + regex: + type: string + replacement: + type: string + type: object + retry: + description: Retry holds the retry configuration. + properties: + attempts: + type: integer + initialInterval: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + type: object + stripPrefix: + description: StripPrefix holds the StripPrefix configuration. + properties: + forceSlash: + type: boolean + prefixes: + items: + type: string + type: array + type: object + stripPrefixRegex: + description: StripPrefixRegex holds the StripPrefixRegex configuration. + properties: + regex: + items: + type: string + type: array + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/middlewarestcp.yaml b/stable/traefik/13.1.3/crds/middlewarestcp.yaml new file mode 100644 index 0000000000..32c41e532d --- /dev/null +++ b/stable/traefik/13.1.3/crds/middlewarestcp.yaml @@ -0,0 +1,61 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: middlewaretcps.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: MiddlewareTCP + listKind: MiddlewareTCPList + plural: middlewaretcps + singular: middlewaretcp + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: MiddlewareTCP is a specification for a MiddlewareTCP resource. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: MiddlewareTCPSpec holds the MiddlewareTCP configuration. + properties: + ipWhiteList: + description: TCPIPWhiteList holds the TCP ip white list configuration. + properties: + sourceRange: + items: + type: string + type: array + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/serverstransports.yaml b/stable/traefik/13.1.3/crds/serverstransports.yaml new file mode 100644 index 0000000000..a5f5206aba --- /dev/null +++ b/stable/traefik/13.1.3/crds/serverstransports.yaml @@ -0,0 +1,108 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: serverstransports.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: ServersTransport + listKind: ServersTransportList + plural: serverstransports + singular: serverstransport + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ServersTransport is a specification for a ServersTransport resource. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: + ServersTransportSpec options to configure communication between + Traefik and the servers. + properties: + certificatesSecrets: + description: Certificates for mTLS. + items: + type: string + type: array + disableHTTP2: + description: Disable HTTP/2 for connections with backend servers. + type: boolean + forwardingTimeouts: + description: Timeouts for requests forwarded to the backend servers. + properties: + dialTimeout: + anyOf: + - type: integer + - type: string + description: + The amount of time to wait until a connection to + a backend server can be established. If zero, no timeout exists. + x-kubernetes-int-or-string: true + idleConnTimeout: + anyOf: + - type: integer + - type: string + description: + The maximum period for which an idle HTTP keep-alive + connection will remain open before closing itself. + x-kubernetes-int-or-string: true + responseHeaderTimeout: + anyOf: + - type: integer + - type: string + description: + The amount of time to wait for a server's response + headers after fully writing the request (including its body, + if any). If zero, no timeout exists. + x-kubernetes-int-or-string: true + type: object + insecureSkipVerify: + description: Disable SSL certificate verification. + type: boolean + maxIdleConnsPerHost: + description: + If non-zero, controls the maximum idle (keep-alive) to + keep per-host. If zero, DefaultMaxIdleConnsPerHost is used. + type: integer + rootCAsSecrets: + description: Add cert file for self-signed certificate. + items: + type: string + type: array + serverName: + description: ServerName used to contact the server. + type: string + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/tlsoptions.yaml b/stable/traefik/13.1.3/crds/tlsoptions.yaml new file mode 100644 index 0000000000..054ffe6cf5 --- /dev/null +++ b/stable/traefik/13.1.3/crds/tlsoptions.yaml @@ -0,0 +1,92 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: tlsoptions.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: TLSOption + listKind: TLSOptionList + plural: tlsoptions + singular: tlsoption + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: TLSOption is a specification for a TLSOption resource. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: TLSOptionSpec configures TLS for an entry point. + properties: + cipherSuites: + items: + type: string + type: array + clientAuth: + description: + ClientAuth defines the parameters of the client authentication + part of the TLS connection, if any. + properties: + clientAuthType: + description: + ClientAuthType defines the client authentication + type to apply. + enum: + - NoClientCert + - RequestClientCert + - VerifyClientCertIfGiven + - RequireAndVerifyClientCert + type: string + secretNames: + description: + SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + items: + type: string + type: array + type: object + curvePreferences: + items: + type: string + type: array + maxVersion: + type: string + minVersion: + type: string + preferServerCipherSuites: + type: boolean + sniStrict: + type: boolean + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/tlsstores.yaml b/stable/traefik/13.1.3/crds/tlsstores.yaml new file mode 100644 index 0000000000..0fd2501746 --- /dev/null +++ b/stable/traefik/13.1.3/crds/tlsstores.yaml @@ -0,0 +1,68 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: tlsstores.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: TLSStore + listKind: TLSStoreList + plural: tlsstores + singular: tlsstore + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: TLSStore is a specification for a TLSStore resource. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: TLSStoreSpec configures a TLSStore resource. + properties: + defaultCertificate: + description: + DefaultCertificate holds a secret name for the TLSOption + resource. + properties: + secretName: + description: + SecretName is the name of the referenced Kubernetes + Secret to specify the certificate details. + type: string + required: + - secretName + type: object + required: + - defaultCertificate + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/crds/traefikservices.yaml b/stable/traefik/13.1.3/crds/traefikservices.yaml new file mode 100644 index 0000000000..c96892c41e --- /dev/null +++ b/stable/traefik/13.1.3/crds/traefikservices.yaml @@ -0,0 +1,289 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + "helm.sh/resource-policy": keep + "helm.sh/hook": pre-install,pre-upgrade,pre-rollback + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null + name: traefikservices.traefik.containo.us +spec: + group: traefik.containo.us + names: + kind: TraefikService + listKind: TraefikServiceList + plural: traefikservices + singular: traefikservice + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: + TraefikService is the specification for a service (that an IngressRoute + refers to) that is usually not a terminal service (i.e. not a pod of servers), + as opposed to a Kubernetes Service. That is to say, it usually refers to + other (children) services, which themselves can be TraefikServices or Services. + properties: + apiVersion: + description: + "APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources" + type: string + kind: + description: + "Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + type: string + metadata: + type: object + spec: + description: + ServiceSpec defines whether a TraefikService is a load-balancer + of services or a mirroring service. + properties: + mirroring: + description: + Mirroring defines a mirroring service, which is composed + of a main load-balancer, and a list of mirrors. + properties: + kind: + enum: + - Service + - TraefikService + type: string + maxBodySize: + format: int64 + type: integer + mirrors: + items: + description: + MirrorService defines one of the mirrors of a Mirroring + service. + properties: + kind: + enum: + - Service + - TraefikService + type: string + name: + description: + Name is a reference to a Kubernetes Service + object (for a load-balancer of servers), or to a TraefikService + object (service load-balancer, mirroring, etc). The differentiation + between the two is specified in the Kind field. + type: string + namespace: + type: string + passHostHeader: + type: boolean + percent: + type: integer + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + responseForwarding: + description: + ResponseForwarding holds configuration for + the forward of the response. + properties: + flushInterval: + type: string + type: object + scheme: + type: string + serversTransport: + type: string + sticky: + description: Sticky holds the sticky configuration. + properties: + cookie: + description: + Cookie holds the sticky configuration based + on cookie. + properties: + httpOnly: + type: boolean + name: + type: string + sameSite: + type: string + secure: + type: boolean + type: object + type: object + strategy: + type: string + weight: + description: + Weight should only be specified when Name references + a TraefikService object (and to be precise, one that embeds + a Weighted Round Robin). + type: integer + required: + - name + type: object + type: array + name: + description: + Name is a reference to a Kubernetes Service object + (for a load-balancer of servers), or to a TraefikService object + (service load-balancer, mirroring, etc). The differentiation + between the two is specified in the Kind field. + type: string + namespace: + type: string + passHostHeader: + type: boolean + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + responseForwarding: + description: + ResponseForwarding holds configuration for the forward + of the response. + properties: + flushInterval: + type: string + type: object + scheme: + type: string + serversTransport: + type: string + sticky: + description: Sticky holds the sticky configuration. + properties: + cookie: + description: + Cookie holds the sticky configuration based on + cookie. + properties: + httpOnly: + type: boolean + name: + type: string + sameSite: + type: string + secure: + type: boolean + type: object + type: object + strategy: + type: string + weight: + description: + Weight should only be specified when Name references + a TraefikService object (and to be precise, one that embeds + a Weighted Round Robin). + type: integer + required: + - name + type: object + weighted: + description: WeightedRoundRobin defines a load-balancer of services. + properties: + services: + items: + description: Service defines an upstream to proxy traffic. + properties: + kind: + enum: + - Service + - TraefikService + type: string + name: + description: + Name is a reference to a Kubernetes Service + object (for a load-balancer of servers), or to a TraefikService + object (service load-balancer, mirroring, etc). The differentiation + between the two is specified in the Kind field. + type: string + namespace: + type: string + passHostHeader: + type: boolean + port: + anyOf: + - type: integer + - type: string + x-kubernetes-int-or-string: true + responseForwarding: + description: + ResponseForwarding holds configuration for + the forward of the response. + properties: + flushInterval: + type: string + type: object + scheme: + type: string + serversTransport: + type: string + sticky: + description: Sticky holds the sticky configuration. + properties: + cookie: + description: + Cookie holds the sticky configuration based + on cookie. + properties: + httpOnly: + type: boolean + name: + type: string + sameSite: + type: string + secure: + type: boolean + type: object + type: object + strategy: + type: string + weight: + description: + Weight should only be specified when Name references + a TraefikService object (and to be precise, one that embeds + a Weighted Round Robin). + type: integer + required: + - name + type: object + type: array + sticky: + description: Sticky holds the sticky configuration. + properties: + cookie: + description: + Cookie holds the sticky configuration based on + cookie. + properties: + httpOnly: + type: boolean + name: + type: string + sameSite: + type: string + secure: + type: boolean + type: object + type: object + type: object + type: object + required: + - metadata + - spec + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/stable/traefik/13.1.3/ix_values.yaml b/stable/traefik/13.1.3/ix_values.yaml new file mode 100644 index 0000000000..8600850a8b --- /dev/null +++ b/stable/traefik/13.1.3/ix_values.yaml @@ -0,0 +1,364 @@ +image: + repository: tccr.io/truecharts/traefik + # defaults to appVersion + tag: v2.8.1@sha256:b647a1292357c7b2a9d325426074472f00a58865990ede067749639126846307 + pullPolicy: IfNotPresent + +# -- Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x +ingressClass: + # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12 + enabled: false + isDefaultClass: false + # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. "v1beta1" + fallbackApiVersion: "" + +# -- Deprecated (will be removed later) +# -- Activate Pilot integration +pilot: + enabled: false + token: "" + # Toggle Pilot Dashboard + # dashboard: false + +# -- Create an IngressRoute for the dashboard +ingressRoute: + dashboard: + enabled: true + # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class) + annotations: {} + # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels) + labels: {} + +podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/path: "/metrics" + prometheus.io/port: "9180" + +# +# -- Configure providers +providers: + kubernetesCRD: + enabled: true + namespaces: + [] + # - "default" + kubernetesIngress: + enabled: true + # labelSelector: environment=production,method=traefik + namespaces: + [] + # - "default" + # IP used for Kubernetes Ingress endpoints + publishedService: + enabled: true + # Published Kubernetes Service to copy status from. Format: namespace/servicename + # By default this Traefik service + # pathOverride: "" + +# -- Logs +# https://docs.traefik.io/observability/logs/ +logs: + # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). + general: + # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO. + level: ERROR + # -- Set the format of General Logs to be either Common Log Format or JSON. For more information: https://doc.traefik.io/traefik/observability/logs/#format + format: common + access: + # To enable access logs + enabled: false + # To write the logs in an asynchronous fashion, specify a bufferingSize option. + # This option represents the number of log lines Traefik will keep in memory before writing + # them to the selected output. In some cases, this option can greatly help performances. + # bufferingSize: 100 + # Filtering https://docs.traefik.io/observability/access-logs/#filtering + filters: + {} + # statuscodes: "200,300-302" + # retryattempts: true + # minduration: 10ms + # Fields + # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers + fields: + general: + defaultmode: keep + names: + {} + # Examples: + # ClientUsername: drop + headers: + defaultmode: drop + names: + {} + # Examples: + # User-Agent: redact + # Authorization: drop + # Content-Type: keep + # -- Set the format of Access Logs to be either Common Log Format or JSON. For more information: https://doc.traefik.io/traefik/observability/access-logs/#format + format: common + +metrics: + # datadog: + # address: 127.0.0.1:8125 + # influxdb: + # address: localhost:8089 + # protocol: udp + prometheus: + entryPoint: metrics + # statsd: + # address: localhost:8125 + +globalArguments: + - "--global.checknewversion" + +## +# -- Additional arguments to be passed at Traefik's binary +# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ +## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` +additionalArguments: + - "--metrics.prometheus" + - "--ping" + - "--serverstransport.insecureskipverify=true" + - "--providers.kubernetesingress.allowexternalnameservices=true" + +# -- TLS Options to be created as TLSOption CRDs +# https://doc.traefik.io/tccr.io/truecharts/https/tls/#tls-options +# Example: +tlsOptions: + default: + sniStrict: false + minVersion: VersionTLS12 + curvePreferences: + - CurveP521 + - CurveP384 + cipherSuites: + - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 + - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 + - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 + - TLS_AES_128_GCM_SHA256 + - TLS_AES_256_GCM_SHA384 + - TLS_CHACHA20_POLY1305_SHA256 + +# -- Options for the main traefik service, where the entrypoints traffic comes from +# from. +service: + main: + type: LoadBalancer + ports: + main: + port: 9000 + targetPort: 9000 + protocol: HTTP + # -- Forwarded Headers should never be enabled on Main entrypoint + forwardedHeaders: + enabled: false + tcp: + enabled: true + type: LoadBalancer + ports: + web: + enabled: true + port: 9080 + protocol: HTTP + redirectTo: websecure + # -- Configure (Forwarded Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers] Support + forwardedHeaders: + enabled: false + # -- List of trusted IP and CIDR references + trustedIPs: [] + # -- Trust all forwarded headers + insecureMode: false + # Options: Empty, 0 (ingore), or positive int + # redirectPort: + websecure: + enabled: true + port: 9443 + protocol: HTTPS + # -- Configure (Forwarded Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers] Support + forwardedHeaders: + enabled: false + # -- List of trusted IP and CIDR references + trustedIPs: [] + # -- Trust all forwarded headers + insecureMode: false + # tcpexample: + # enabled: true + # targetPort: 9443 + # protocol: TCP + # tls: + # enabled: false + # # this is the name of a TLSOption definition + # options: "" + # certResolver: "" + # domains: [] + # # - main: example.com + # # sans: + # # - foo.example.com + # # - bar.example.com + metrics: + enabled: true + type: ClusterIP + ports: + metrics: + enabled: true + port: 9180 + targetPort: 9180 + protocol: HTTP + # -- Forwarded Headers should never be enabled on Metrics entrypoint + forwardedHeaders: + enabled: false + udp: + enabled: false + +# probes: +# # -- Liveness probe configuration +# # @default -- See below +# liveness: +# # -- sets the probe type when not using a custom probe +# # @default -- "TCP" +# type: HTTP +# # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used +# # @default -- "/" +# path: "/ping" + +# # -- Redainess probe configuration +# # @default -- See below +# readiness: +# # -- sets the probe type when not using a custom probe +# # @default -- "TCP" +# type: HTTP +# # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used +# # @default -- "/" +# path: "/ping" + +# # -- Startup probe configuration +# # @default -- See below +# startup: +# # -- sets the probe type when not using a custom probe +# # @default -- "TCP" +# type: HTTP +# # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used +# # @default -- "/" +# path: "/ping" + +# -- Whether Role Based Access Control objects like roles and rolebindings should be created +rbac: + main: + enabled: true + rules: + - apiGroups: + - "" + resources: + - services + - endpoints + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses + - ingressclasses + verbs: + - get + - list + - watch + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses/status + verbs: + - update + - apiGroups: + - traefik.containo.us + resources: + - ingressroutes + - ingressroutetcps + - ingressrouteudps + - middlewares + - middlewaretcps + - tlsoptions + - tlsstores + - traefikservices + - serverstransports + verbs: + - get + - list + - watch + +# -- The service account the pods will use to interact with the Kubernetes API +serviceAccount: + main: + create: true + +# -- SCALE Middleware Handlers +middlewares: + basicAuth: [] + # - name: basicauthexample + # users: + # - username: testuser + # password: testpassword + forwardAuth: [] + # - name: forwardAuthexample + # address: https://auth.example.com/ + # authResponseHeaders: + # - X-Secret + # - X-Auth-User + # authRequestHeaders: + # - "Accept" + # - "X-CustomHeader" + # authResponseHeadersRegex: "^X-" + # trustForwardHeader: true + chain: [] + # - name: chainname + # middlewares: + # - name: compress + redirectScheme: [] + # - name: redirectSchemeName + # scheme: https + # permanent: true + rateLimit: [] + # - name: rateLimitName + # average: 300 + # burst: 200 + redirectRegex: [] + # - name: redirectRegexName + # regex: putregexhere + # replacement: repslacementurlhere + # permanent: false + stripPrefixRegex: [] + # - name: stripPrefixRegexName + # regex: [] + ipWhiteList: [] + # - name: ipWhiteListName + # sourceRange: [] + # ipStrategy: + # depth: 2 + # excludedIPs: [] + # -- Currently requires to enable Traefik Pilot. + # -- Until it's deprecated. + themePark: [] + # - name: themeParkName + # -- Supported apps, lower case name + # -- https://docs.theme-park.dev/themes + # app: appnamehere + # -- Supported themes, lower case name + # -- https://docs.theme-park.dev/themes/APPNAMEHERE + # -- https://docs.theme-park.dev/community-themes + # theme: themenamehere + # -- https://theme-park.dev or a self hosted url + # baseUrl: https://theme-park.dev + themeParkVersion: v1.1.0 + +portalhook: + enabled: true + +persistence: + plugins: + enabled: true + mountPath: "/plugins-storage" + type: emptyDir diff --git a/stable/traefik/13.1.3/questions.yaml b/stable/traefik/13.1.3/questions.yaml new file mode 100644 index 0000000000..fa8caca9ec --- /dev/null +++ b/stable/traefik/13.1.3/questions.yaml @@ -0,0 +1,2632 @@ +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" +portals: + open: + protocols: + - "http" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "/dashboard/" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - 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 + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "RollingUpdate" + 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" + - variable: expert + label: "Show Expert Configuration Options" + 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: 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: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + 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 Config" + 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: ingressClass + label: "ingressClass" + group: "App Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + description: "When enabled, ingressClass will match the entered name of this app" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: isDefaultClass + label: "isDefaultClass" + schema: + type: boolean + default: false + + - variable: logs + label: "Logs" + group: "App Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: general + label: "General Logs" + schema: + additional_attrs: true + type: dict + attrs: + - variable: level + label: "Log Level" + schema: + type: string + default: "ERROR" + enum: + - value: "INFO" + description: "Info" + - value: "WARN" + description: "Warnings" + - value: "ERROR" + description: "Errors" + - value: "FATAL" + description: "Fatal Errors" + - value: "PANIC" + description: "Panics" + - value: "DEBUG" + description: "Debug" + - variable: format + label: "General Log format" + schema: + type: string + default: "common" + enum: + - value: "common" + description: "Common Log Format" + - value: "json" + description: "JSON" + - variable: access + label: "Access Logs" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabledFilters + label: "Enable Filters" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: filters + label: "Filters" + schema: + additional_attrs: true + type: dict + attrs: + - variable: statuscodes + label: "Status codes" + schema: + type: string + default: "200,300-302" + - variable: retryattempts + label: "retryattempts" + schema: + type: boolean + default: true + - variable: minduration + label: "minduration" + schema: + type: string + default: "10ms" + - variable: fields + label: "Fields" + schema: + additional_attrs: true + type: dict + attrs: + - variable: general + label: "General" + schema: + additional_attrs: true + type: dict + attrs: + - variable: defaultmode + label: "Default Mode" + schema: + type: string + default: "keep" + enum: + - value: "keep" + description: "Keep" + - value: "drop" + description: "Drop" + - variable: headers + label: "Headers" + schema: + additional_attrs: true + type: dict + attrs: + - variable: defaultmode + label: "Default Mode" + schema: + type: string + default: "drop" + enum: + - value: "keep" + description: "Keep" + - value: "drop" + description: "Drop" + - variable: format + label: "Access Log format" + schema: + type: string + default: "common" + enum: + - value: "common" + description: "Common Log Format" + - value: "json" + description: "JSON" + - variable: middlewares + label: "" + group: "Middlewares" + schema: + additional_attrs: true + type: dict + attrs: + - variable: basicAuth + label: "basicAuth" + schema: + type: list + default: [] + items: + - variable: basicAuthEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + default: "" + - variable: users + label: "Users" + schema: + type: list + default: [] + items: + - variable: usersEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + default: "" + + - variable: forwardAuth + label: "forwardAuth" + schema: + type: list + default: [] + items: + - variable: basicAuthEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + default: "" + - variable: address + label: "Address" + schema: + type: string + required: true + default: "" + - variable: trustForwardHeader + label: "trustForwardHeader" + schema: + type: boolean + default: false + - variable: authResponseHeadersRegex + label: "authResponseHeadersRegex" + schema: + type: string + default: "" + - variable: authResponseHeaders + label: "authResponseHeaders" + schema: + type: list + default: [] + items: + - variable: authResponseHeadersEntry + label: "" + schema: + type: string + default: "" + - variable: authRequestHeaders + label: "authRequestHeaders" + schema: + type: list + default: [] + items: + - variable: authRequestHeadersEntry + label: "" + schema: + type: string + default: "" + - variable: chain + label: "chain" + schema: + type: list + default: [] + items: + - variable: chainEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: middlewares + label: "Middlewares to Chain" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + required: true + default: "" + + - variable: redirectScheme + label: "redirectScheme" + schema: + type: list + default: [] + items: + - variable: redirectSchemeEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: scheme + label: "Scheme" + schema: + type: string + required: true + default: "https" + enum: + - value: "https" + description: "https" + - value: "http" + description: "http" + - variable: permanent + label: "Permanent" + schema: + type: boolean + default: false + + - variable: rateLimit + label: "rateLimit" + schema: + type: list + default: [] + items: + - variable: rateLimitEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: average + label: "Average" + schema: + type: int + required: true + default: 300 + - variable: burst + label: "Burst" + schema: + type: int + required: true + default: 200 + + - variable: redirectRegex + label: "redirectRegex" + schema: + type: list + default: [] + items: + - variable: redirectRegexEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: regex + label: "Regex" + schema: + type: string + required: true + default: "" + - variable: replacement + label: "Replacement" + schema: + type: string + required: true + default: "" + - variable: permanent + label: "Permanent" + schema: + type: boolean + default: false + + - variable: stripPrefixRegex + label: "stripPrefixRegex" + schema: + type: list + default: [] + items: + - variable: stripPrefixRegexEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: regex + label: "Regex" + schema: + type: list + default: [] + items: + - variable: regexEntry + label: "Regex" + schema: + type: string + required: true + default: "" + + - variable: ipWhiteList + label: "ipWhiteList" + schema: + type: list + default: [] + items: + - variable: ipWhiteListEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + default: "" + - variable: sourceRange + label: "Source Range" + schema: + type: list + default: [] + items: + - variable: sourceRangeEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: ipStrategy + label: "IP Strategy" + schema: + additional_attrs: true + type: dict + attrs: + - variable: depth + label: "Depth" + schema: + type: int + required: true + - variable: excludedIPs + label: "Excluded IPs" + schema: + type: list + default: [] + items: + - variable: excludedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + + - variable: themePark + label: "theme.park" + schema: + type: list + default: [] + items: + - variable: themeParkEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + description: This is a 3rd party plugin and not maintained by TrueCharts, + for more information go to traefik-themepark + 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: 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: 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: 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" + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: "Insecure Mode" + 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: 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" + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: ipaddr + required: true + default: "" + - variable: insecureMode + label: "Insecure Mode" + 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" + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: ipaddr + required: true + default: "" + - variable: insecureMode + label: "Insecure Mode" + 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: "pathType" + 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: "pathType" + 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 tha 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/manual/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/manual/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/manual/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/manual/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: "ipBlock" +# 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: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# 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: "matchExpressions" +# 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: "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: "ipBlock" +# 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: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# 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: "matchExpressions" +# 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: "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" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - 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 ipv4 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: "" + required: true + - 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: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + 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 ecommand 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 diff --git a/stable/traefik/13.1.3/templates/_args.tpl b/stable/traefik/13.1.3/templates/_args.tpl new file mode 100644 index 0000000000..e51ea524ca --- /dev/null +++ b/stable/traefik/13.1.3/templates/_args.tpl @@ -0,0 +1,155 @@ +{{/* 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 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.1.3/templates/_helpers.tpl b/stable/traefik/13.1.3/templates/_helpers.tpl new file mode 100644 index 0000000000..ab55e4e7ec --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/_ingressclass.tpl b/stable/traefik/13.1.3/templates/_ingressclass.tpl new file mode 100644 index 0000000000..909e249d6a --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/_ingressroute.tpl b/stable/traefik/13.1.3/templates/_ingressroute.tpl new file mode 100644 index 0000000000..7f012c9235 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/_portalhook.tpl b/stable/traefik/13.1.3/templates/_portalhook.tpl new file mode 100644 index 0000000000..e3586c5d4e --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/_tlsoptions.tpl b/stable/traefik/13.1.3/templates/_tlsoptions.tpl new file mode 100644 index 0000000000..3e5aad3bee --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/common.yaml b/stable/traefik/13.1.3/templates/common.yaml new file mode 100644 index 0000000000..d078b251c2 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/basic-middleware.yaml b/stable/traefik/13.1.3/templates/middlewares/basic-middleware.yaml new file mode 100644 index 0000000000..de5be0af83 --- /dev/null +++ b/stable/traefik/13.1.3/templates/middlewares/basic-middleware.yaml @@ -0,0 +1,64 @@ +{{- $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 + 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: '' +--- +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.1.3/templates/middlewares/basicauth.yaml b/stable/traefik/13.1.3/templates/middlewares/basicauth.yaml new file mode 100644 index 0000000000..ccb541742f --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/chain.yaml b/stable/traefik/13.1.3/templates/middlewares/chain.yaml new file mode 100644 index 0000000000..f87994f795 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/forwardauth.yaml b/stable/traefik/13.1.3/templates/middlewares/forwardauth.yaml new file mode 100644 index 0000000000..7a3e32fdbf --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/ipwhitelist.yaml b/stable/traefik/13.1.3/templates/middlewares/ipwhitelist.yaml new file mode 100644 index 0000000000..1179245017 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/ratelimit.yaml b/stable/traefik/13.1.3/templates/middlewares/ratelimit.yaml new file mode 100644 index 0000000000..144b9d8bf3 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/redirectScheme.yaml b/stable/traefik/13.1.3/templates/middlewares/redirectScheme.yaml new file mode 100644 index 0000000000..f2413f84e1 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/redirectregex.yaml b/stable/traefik/13.1.3/templates/middlewares/redirectregex.yaml new file mode 100644 index 0000000000..46e3e724dd --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/stripPrefixRegex.yaml b/stable/traefik/13.1.3/templates/middlewares/stripPrefixRegex.yaml new file mode 100644 index 0000000000..007c166ff3 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/tc-chains.yaml b/stable/traefik/13.1.3/templates/middlewares/tc-chains.yaml new file mode 100644 index 0000000000..409766daa8 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/tc-headers.yaml b/stable/traefik/13.1.3/templates/middlewares/tc-headers.yaml new file mode 100644 index 0000000000..a0462f1fd7 --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/tc-nextcloud.yaml b/stable/traefik/13.1.3/templates/middlewares/tc-nextcloud.yaml new file mode 100644 index 0000000000..6a3019d56c --- /dev/null +++ b/stable/traefik/13.1.3/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.1.3/templates/middlewares/theme-park.yaml b/stable/traefik/13.1.3/templates/middlewares/theme-park.yaml new file mode 100644 index 0000000000..0e181a02d2 --- /dev/null +++ b/stable/traefik/13.1.3/templates/middlewares/theme-park.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.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 }} +{{- end }} diff --git a/stable/traefik/13.1.3/values.yaml b/stable/traefik/13.1.3/values.yaml new file mode 100644 index 0000000000..e69de29bb2