From a75238cc4f409d718ffd7cbf109526b995097111 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Tue, 31 Aug 2021 18:25:36 +0000 Subject: [PATCH] Commit new App releases for TrueCharts Signed-off-by: TrueCharts-Bot --- incubator/authelia/1.6.1/Chart.lock | 2 +- incubator/custom-app/0.2.11/Chart.lock | 2 +- incubator/jdownloader2/0.3.8/Chart.lock | 2 +- incubator/nextcloud/3.7.1/Chart.lock | 2 +- stable/airsonic/1.11.8/Chart.lock | 2 +- stable/appdaemon/3.11.8/Chart.lock | 2 +- stable/bazarr/6.11.8/Chart.lock | 2 +- stable/booksonic-air/1.9.8/Chart.lock | 2 +- stable/calibre-web/6.11.8/Chart.lock | 2 +- stable/calibre/1.9.8/Chart.lock | 2 +- stable/collabora-online/6.11.8/Chart.lock | 2 +- stable/deconz/1.9.8/Chart.lock | 2 +- stable/deepstack-cpu/4.11.8/Chart.lock | 2 +- stable/deluge/6.11.8/Chart.lock | 2 +- stable/dizquetv/1.9.8/Chart.lock | 2 +- stable/duplicati/1.9.8/Chart.lock | 2 +- stable/emby/6.11.8/Chart.lock | 2 +- stable/esphome/6.11.8/Chart.lock | 2 +- stable/external-service/1.4.7/Chart.lock | 2 +- stable/fireflyiii/6.1.0/CONFIG.md | 8 + stable/fireflyiii/6.1.0/Chart.lock | 9 + stable/fireflyiii/6.1.0/Chart.yaml | 30 + stable/fireflyiii/6.1.0/README.md | 43 + stable/fireflyiii/6.1.0/app-readme.md | 4 + .../fireflyiii/6.1.0/charts/common-6.12.1.tgz | Bin 0 -> 25243 bytes .../6.1.0/charts/postgresql-1.5.1.tgz | Bin 0 -> 32168 bytes stable/fireflyiii/6.1.0/ix_values.yaml | 54 + stable/fireflyiii/6.1.0/questions.yaml | 1116 ++++++++++++ stable/fireflyiii/6.1.0/templates/common.yaml | 5 + .../fireflyiii/6.1.0/templates/secrets.yaml | 19 + stable/fireflyiii/6.1.0/test_values.yaml | 72 + stable/fireflyiii/6.1.0/values.yaml | 0 stable/flaresolverr/1.9.8/Chart.lock | 2 +- stable/flood/1.9.8/Chart.lock | 2 +- stable/focalboard/1.9.8/Chart.lock | 2 +- stable/freeradius/1.7.8/Chart.lock | 2 +- stable/freshrss/6.11.8/Chart.lock | 2 +- stable/gaps/6.11.8/Chart.lock | 2 +- stable/gonic/1.9.8/Chart.lock | 2 +- stable/grocy/6.11.8/Chart.lock | 2 +- stable/handbrake/6.11.8/Chart.lock | 2 +- stable/haste-server/1.11.8/Chart.lock | 2 +- stable/healthchecks/1.9.8/Chart.lock | 2 +- stable/heimdall/6.11.8/Chart.lock | 2 +- stable/home-assistant/6.11.8/Chart.lock | 2 +- stable/hyperion-ng/1.9.8/Chart.lock | 2 +- stable/jackett/6.11.10/Chart.lock | 2 +- stable/jellyfin/6.11.8/Chart.lock | 2 +- stable/kms/6.11.8/Chart.lock | 2 +- stable/komga/1.9.11/Chart.lock | 2 +- stable/lazylibrarian/6.11.8/Chart.lock | 2 +- stable/librespeed/1.9.8/Chart.lock | 2 +- stable/lidarr/6.11.8/Chart.lock | 2 +- stable/littlelink/1.5.8/Chart.lock | 2 +- stable/lychee/6.11.8/Chart.lock | 2 +- stable/mealie/1.11.8/Chart.lock | 2 +- stable/mosquitto/1.11.8/Chart.lock | 2 +- stable/mylar/1.9.8/Chart.lock | 2 +- stable/navidrome/6.11.8/Chart.lock | 2 +- stable/node-red/6.11.8/Chart.lock | 2 +- stable/nullserv/1.9.8/Chart.lock | 2 +- stable/nzbget/6.11.8/Chart.lock | 2 +- stable/nzbhydra/6.11.8/Chart.lock | 2 +- stable/octoprint/1.9.8/Chart.lock | 2 +- stable/omada-controller/1.9.8/Chart.lock | 2 +- stable/ombi/6.11.9/Chart.lock | 2 +- stable/openldap/1.7.8/Chart.lock | 2 +- stable/organizr/6.11.8/Chart.lock | 2 +- stable/overseerr/1.9.8/Chart.lock | 2 +- stable/owncast/1.9.8/Chart.lock | 2 +- stable/owncloud-ocis/1.9.8/Chart.lock | 2 +- stable/pgadmin/1.8.8/Chart.lock | 2 +- stable/photoprism/1.9.8/Chart.lock | 2 +- stable/phpldapadmin/1.8.8/Chart.lock | 2 +- stable/piaware/1.9.8/Chart.lock | 2 +- stable/plex/5.11.8/Chart.lock | 2 +- stable/podgrab/4.11.8/Chart.lock | 2 +- stable/postgresql/1.5.8/Chart.lock | 2 +- stable/pretend-youre-xyzzy/1.9.8/Chart.lock | 2 +- stable/protonmail-bridge/1.9.8/Chart.lock | 2 +- stable/prowlarr/1.11.10/Chart.lock | 2 +- stable/pyload/1.9.8/Chart.lock | 2 +- stable/qbittorrent/6.11.8/Chart.lock | 2 +- stable/radarr/6.11.8/Chart.lock | 2 +- stable/readarr/6.11.8/Chart.lock | 2 +- stable/reg/1.11.8/Chart.lock | 2 +- stable/resilio-sync/1.9.8/Chart.lock | 2 +- stable/sabnzbd/6.11.8/Chart.lock | 2 +- stable/ser2sock/1.9.8/Chart.lock | 2 +- stable/sonarr/6.11.8/Chart.lock | 2 +- stable/stash/1.9.9/Chart.lock | 2 +- stable/syncthing/6.11.8/Chart.lock | 2 +- stable/tautulli/6.11.8/Chart.lock | 2 +- stable/thelounge/1.11.8/Chart.lock | 2 +- stable/traefik/6.13.8/CONFIG.md | 8 + stable/traefik/6.13.8/Chart.lock | 6 + stable/traefik/6.13.8/Chart.yaml | 29 + stable/traefik/6.13.8/LICENSE | 202 +++ stable/traefik/6.13.8/README.md | 39 + stable/traefik/6.13.8/app-readme.md | 4 + .../traefik/6.13.8/charts/common-6.12.2.tgz | Bin 0 -> 28311 bytes stable/traefik/6.13.8/crds/ingressroute.yaml | 12 + .../traefik/6.13.8/crds/ingressroutetcp.yaml | 12 + .../traefik/6.13.8/crds/ingressrouteudp.yaml | 13 + stable/traefik/6.13.8/crds/middlewares.yaml | 12 + .../6.13.8/crds/serverstransports.yaml | 12 + stable/traefik/6.13.8/crds/tlsoptions.yaml | 12 + stable/traefik/6.13.8/crds/tlsstores.yaml | 13 + .../traefik/6.13.8/crds/traefikservices.yaml | 12 + stable/traefik/6.13.8/helm-values.md | 124 ++ stable/traefik/6.13.8/ix_values.yaml | 332 ++++ stable/traefik/6.13.8/questions.yaml | 508 ++++++ stable/traefik/6.13.8/templates/_helpers.tpl | 62 + .../traefik/6.13.8/templates/_podtemplate.tpl | 265 +++ .../6.13.8/templates/custom/common.yaml | 0 .../custom/middleware-namespace.yaml | 7 + .../custom/middlewares/basic-middleware.yaml | 58 + .../custom/middlewares/basicauth.yaml | 29 + .../templates/custom/middlewares/chain.yaml | 16 + .../custom/middlewares/forwardauth.yaml | 23 + .../custom/middlewares/ratelimit.yaml | 14 + .../custom/middlewares/redirectScheme.yaml | 14 + .../6.13.8/templates/custom/portal.yaml | 45 + .../6.13.8/templates/custom/portalhook.yaml | 12 + .../traefik/6.13.8/templates/daemonset.yaml | 40 + .../dashboard-hook-ingressroute.yaml | 28 + .../traefik/6.13.8/templates/deployment.yaml | 47 + stable/traefik/6.13.8/templates/gateway.yaml | 33 + .../6.13.8/templates/gatewayclass.yaml | 9 + stable/traefik/6.13.8/templates/hpa.yaml | 20 + .../6.13.8/templates/ingressclass.yaml | 23 + .../6.13.8/templates/poddisruptionbudget.yaml | 22 + .../6.13.8/templates/rbac/clusterrole.yaml | 112 ++ .../templates/rbac/clusterrolebinding.yaml | 19 + .../templates/rbac/podsecuritypolicy.yaml | 68 + .../traefik/6.13.8/templates/rbac/role.yaml | 61 + .../6.13.8/templates/rbac/rolebinding.yaml | 19 + .../6.13.8/templates/rbac/serviceaccount.yaml | 15 + stable/traefik/6.13.8/templates/service.yaml | 114 ++ .../traefik/6.13.8/templates/tlsoption.yaml | 14 + stable/traefik/6.13.8/test_values.yaml | 438 +++++ stable/traefik/6.13.8/values.yaml | 0 stable/transmission/6.11.8/Chart.lock | 2 +- stable/truecommand/6.11.8/Chart.lock | 2 +- stable/tvheadend/7.11.8/Chart.lock | 2 +- stable/unifi/6.11.8/Chart.lock | 2 +- stable/unpackerr/1.11.8/Chart.lock | 2 +- stable/vaultwarden/6.1.0/CONFIG.md | 8 + stable/vaultwarden/6.1.0/Chart.lock | 9 + stable/vaultwarden/6.1.0/Chart.yaml | 34 + stable/vaultwarden/6.1.0/README.md | 43 + stable/vaultwarden/6.1.0/app-readme.md | 4 + .../6.1.0/charts/common-6.12.1.tgz | Bin 0 -> 25243 bytes .../6.1.0/charts/postgresql-1.5.1.tgz | Bin 0 -> 32168 bytes stable/vaultwarden/6.1.0/ix_values.yaml | 55 + stable/vaultwarden/6.1.0/questions.yaml | 1497 +++++++++++++++++ .../6.1.0/templates/_configmap.tpl | 116 ++ .../vaultwarden/6.1.0/templates/_secrets.tpl | 59 + .../vaultwarden/6.1.0/templates/_validate.tpl | 17 + .../vaultwarden/6.1.0/templates/common.yaml | 11 + stable/vaultwarden/6.1.0/test_values.yaml | 161 ++ stable/vaultwarden/6.1.0/values.yaml | 0 stable/xteve/1.9.8/Chart.lock | 2 +- stable/zwavejs2mqtt/6.11.9/Chart.lock | 2 +- 164 files changed, 6439 insertions(+), 88 deletions(-) create mode 100644 stable/fireflyiii/6.1.0/CONFIG.md create mode 100644 stable/fireflyiii/6.1.0/Chart.lock create mode 100644 stable/fireflyiii/6.1.0/Chart.yaml create mode 100644 stable/fireflyiii/6.1.0/README.md create mode 100644 stable/fireflyiii/6.1.0/app-readme.md create mode 100644 stable/fireflyiii/6.1.0/charts/common-6.12.1.tgz create mode 100644 stable/fireflyiii/6.1.0/charts/postgresql-1.5.1.tgz create mode 100644 stable/fireflyiii/6.1.0/ix_values.yaml create mode 100644 stable/fireflyiii/6.1.0/questions.yaml create mode 100644 stable/fireflyiii/6.1.0/templates/common.yaml create mode 100644 stable/fireflyiii/6.1.0/templates/secrets.yaml create mode 100644 stable/fireflyiii/6.1.0/test_values.yaml create mode 100644 stable/fireflyiii/6.1.0/values.yaml create mode 100644 stable/traefik/6.13.8/CONFIG.md create mode 100644 stable/traefik/6.13.8/Chart.lock create mode 100644 stable/traefik/6.13.8/Chart.yaml create mode 100644 stable/traefik/6.13.8/LICENSE create mode 100644 stable/traefik/6.13.8/README.md create mode 100644 stable/traefik/6.13.8/app-readme.md create mode 100644 stable/traefik/6.13.8/charts/common-6.12.2.tgz create mode 100644 stable/traefik/6.13.8/crds/ingressroute.yaml create mode 100644 stable/traefik/6.13.8/crds/ingressroutetcp.yaml create mode 100644 stable/traefik/6.13.8/crds/ingressrouteudp.yaml create mode 100644 stable/traefik/6.13.8/crds/middlewares.yaml create mode 100644 stable/traefik/6.13.8/crds/serverstransports.yaml create mode 100644 stable/traefik/6.13.8/crds/tlsoptions.yaml create mode 100644 stable/traefik/6.13.8/crds/tlsstores.yaml create mode 100644 stable/traefik/6.13.8/crds/traefikservices.yaml create mode 100644 stable/traefik/6.13.8/helm-values.md create mode 100644 stable/traefik/6.13.8/ix_values.yaml create mode 100644 stable/traefik/6.13.8/questions.yaml create mode 100644 stable/traefik/6.13.8/templates/_helpers.tpl create mode 100644 stable/traefik/6.13.8/templates/_podtemplate.tpl create mode 100644 stable/traefik/6.13.8/templates/custom/common.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/middleware-namespace.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/middlewares/basic-middleware.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/middlewares/basicauth.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/middlewares/chain.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/middlewares/forwardauth.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/middlewares/ratelimit.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/middlewares/redirectScheme.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/portal.yaml create mode 100644 stable/traefik/6.13.8/templates/custom/portalhook.yaml create mode 100644 stable/traefik/6.13.8/templates/daemonset.yaml create mode 100644 stable/traefik/6.13.8/templates/dashboard-hook-ingressroute.yaml create mode 100644 stable/traefik/6.13.8/templates/deployment.yaml create mode 100644 stable/traefik/6.13.8/templates/gateway.yaml create mode 100644 stable/traefik/6.13.8/templates/gatewayclass.yaml create mode 100644 stable/traefik/6.13.8/templates/hpa.yaml create mode 100644 stable/traefik/6.13.8/templates/ingressclass.yaml create mode 100644 stable/traefik/6.13.8/templates/poddisruptionbudget.yaml create mode 100644 stable/traefik/6.13.8/templates/rbac/clusterrole.yaml create mode 100644 stable/traefik/6.13.8/templates/rbac/clusterrolebinding.yaml create mode 100644 stable/traefik/6.13.8/templates/rbac/podsecuritypolicy.yaml create mode 100644 stable/traefik/6.13.8/templates/rbac/role.yaml create mode 100644 stable/traefik/6.13.8/templates/rbac/rolebinding.yaml create mode 100644 stable/traefik/6.13.8/templates/rbac/serviceaccount.yaml create mode 100644 stable/traefik/6.13.8/templates/service.yaml create mode 100644 stable/traefik/6.13.8/templates/tlsoption.yaml create mode 100644 stable/traefik/6.13.8/test_values.yaml create mode 100644 stable/traefik/6.13.8/values.yaml create mode 100644 stable/vaultwarden/6.1.0/CONFIG.md create mode 100644 stable/vaultwarden/6.1.0/Chart.lock create mode 100644 stable/vaultwarden/6.1.0/Chart.yaml create mode 100644 stable/vaultwarden/6.1.0/README.md create mode 100644 stable/vaultwarden/6.1.0/app-readme.md create mode 100644 stable/vaultwarden/6.1.0/charts/common-6.12.1.tgz create mode 100644 stable/vaultwarden/6.1.0/charts/postgresql-1.5.1.tgz create mode 100644 stable/vaultwarden/6.1.0/ix_values.yaml create mode 100644 stable/vaultwarden/6.1.0/questions.yaml create mode 100644 stable/vaultwarden/6.1.0/templates/_configmap.tpl create mode 100644 stable/vaultwarden/6.1.0/templates/_secrets.tpl create mode 100644 stable/vaultwarden/6.1.0/templates/_validate.tpl create mode 100644 stable/vaultwarden/6.1.0/templates/common.yaml create mode 100644 stable/vaultwarden/6.1.0/test_values.yaml create mode 100644 stable/vaultwarden/6.1.0/values.yaml diff --git a/incubator/authelia/1.6.1/Chart.lock b/incubator/authelia/1.6.1/Chart.lock index 3a318320d4..14ecbb9039 100644 --- a/incubator/authelia/1.6.1/Chart.lock +++ b/incubator/authelia/1.6.1/Chart.lock @@ -9,4 +9,4 @@ dependencies: repository: https://charts.bitnami.com/bitnami version: 15.2.0 digest: sha256:e37a10811eb62bf003aabf9f57807ab004c58a0f47674fad31b73f90f77829cd -generated: "2021-08-31T18:09:24.066284934Z" +generated: "2021-08-31T18:24:16.531405477Z" diff --git a/incubator/custom-app/0.2.11/Chart.lock b/incubator/custom-app/0.2.11/Chart.lock index 2039f3657f..58d577a0de 100644 --- a/incubator/custom-app/0.2.11/Chart.lock +++ b/incubator/custom-app/0.2.11/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:09:31.159282755Z" +generated: "2021-08-31T18:24:24.977896169Z" diff --git a/incubator/jdownloader2/0.3.8/Chart.lock b/incubator/jdownloader2/0.3.8/Chart.lock index 53318222d3..16e6dda92f 100644 --- a/incubator/jdownloader2/0.3.8/Chart.lock +++ b/incubator/jdownloader2/0.3.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:09:35.171294021Z" +generated: "2021-08-31T18:24:29.592944107Z" diff --git a/incubator/nextcloud/3.7.1/Chart.lock b/incubator/nextcloud/3.7.1/Chart.lock index 09fc951e7b..4d89e6cfce 100644 --- a/incubator/nextcloud/3.7.1/Chart.lock +++ b/incubator/nextcloud/3.7.1/Chart.lock @@ -9,4 +9,4 @@ dependencies: repository: https://charts.bitnami.com/bitnami version: 15.2.0 digest: sha256:e37a10811eb62bf003aabf9f57807ab004c58a0f47674fad31b73f90f77829cd -generated: "2021-08-31T18:09:41.297474766Z" +generated: "2021-08-31T18:24:36.520791327Z" diff --git a/stable/airsonic/1.11.8/Chart.lock b/stable/airsonic/1.11.8/Chart.lock index 0901d1a04e..19637d095a 100644 --- a/stable/airsonic/1.11.8/Chart.lock +++ b/stable/airsonic/1.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:03:32.796665805Z" +generated: "2021-08-31T18:17:35.005667245Z" diff --git a/stable/appdaemon/3.11.8/Chart.lock b/stable/appdaemon/3.11.8/Chart.lock index 39a440cbe7..28bcebebf7 100644 --- a/stable/appdaemon/3.11.8/Chart.lock +++ b/stable/appdaemon/3.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:03:36.841842697Z" +generated: "2021-08-31T18:17:39.668539149Z" diff --git a/stable/bazarr/6.11.8/Chart.lock b/stable/bazarr/6.11.8/Chart.lock index 5fc7d27113..a7526a23dc 100644 --- a/stable/bazarr/6.11.8/Chart.lock +++ b/stable/bazarr/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:03:40.763764019Z" +generated: "2021-08-31T18:17:44.103909846Z" diff --git a/stable/booksonic-air/1.9.8/Chart.lock b/stable/booksonic-air/1.9.8/Chart.lock index ca3b95c7c1..143873232e 100644 --- a/stable/booksonic-air/1.9.8/Chart.lock +++ b/stable/booksonic-air/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:03:44.651332518Z" +generated: "2021-08-31T18:17:48.5007504Z" diff --git a/stable/calibre-web/6.11.8/Chart.lock b/stable/calibre-web/6.11.8/Chart.lock index 49b7c5c74e..15e7d6ecdb 100644 --- a/stable/calibre-web/6.11.8/Chart.lock +++ b/stable/calibre-web/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:03:52.502517247Z" +generated: "2021-08-31T18:17:57.359427261Z" diff --git a/stable/calibre/1.9.8/Chart.lock b/stable/calibre/1.9.8/Chart.lock index ec6560cccf..a57e0969d0 100644 --- a/stable/calibre/1.9.8/Chart.lock +++ b/stable/calibre/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:03:48.590167315Z" +generated: "2021-08-31T18:17:52.931991061Z" diff --git a/stable/collabora-online/6.11.8/Chart.lock b/stable/collabora-online/6.11.8/Chart.lock index 5c5b30f649..43c27770be 100644 --- a/stable/collabora-online/6.11.8/Chart.lock +++ b/stable/collabora-online/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:03:56.446601016Z" +generated: "2021-08-31T18:18:01.781582111Z" diff --git a/stable/deconz/1.9.8/Chart.lock b/stable/deconz/1.9.8/Chart.lock index 2579233573..d78b2906ce 100644 --- a/stable/deconz/1.9.8/Chart.lock +++ b/stable/deconz/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:04:00.317790606Z" +generated: "2021-08-31T18:18:06.342376025Z" diff --git a/stable/deepstack-cpu/4.11.8/Chart.lock b/stable/deepstack-cpu/4.11.8/Chart.lock index 172733e801..8efbab1b17 100644 --- a/stable/deepstack-cpu/4.11.8/Chart.lock +++ b/stable/deepstack-cpu/4.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:04.285330454Z" +generated: "2021-08-31T18:18:11.000480291Z" diff --git a/stable/deluge/6.11.8/Chart.lock b/stable/deluge/6.11.8/Chart.lock index e0f72e1cb4..78731450e4 100644 --- a/stable/deluge/6.11.8/Chart.lock +++ b/stable/deluge/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:08.241831704Z" +generated: "2021-08-31T18:18:15.650885606Z" diff --git a/stable/dizquetv/1.9.8/Chart.lock b/stable/dizquetv/1.9.8/Chart.lock index 3ac4b81db5..220d52630b 100644 --- a/stable/dizquetv/1.9.8/Chart.lock +++ b/stable/dizquetv/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:04:12.258756684Z" +generated: "2021-08-31T18:18:20.285059616Z" diff --git a/stable/duplicati/1.9.8/Chart.lock b/stable/duplicati/1.9.8/Chart.lock index 42116a631d..60b19bbd77 100644 --- a/stable/duplicati/1.9.8/Chart.lock +++ b/stable/duplicati/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:04:16.271158675Z" +generated: "2021-08-31T18:18:24.971483772Z" diff --git a/stable/emby/6.11.8/Chart.lock b/stable/emby/6.11.8/Chart.lock index e2c20c7855..16b38ada77 100644 --- a/stable/emby/6.11.8/Chart.lock +++ b/stable/emby/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:20.274663507Z" +generated: "2021-08-31T18:18:29.658303849Z" diff --git a/stable/esphome/6.11.8/Chart.lock b/stable/esphome/6.11.8/Chart.lock index 98e69338a8..e547a448be 100644 --- a/stable/esphome/6.11.8/Chart.lock +++ b/stable/esphome/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:24.305635446Z" +generated: "2021-08-31T18:18:34.294505321Z" diff --git a/stable/external-service/1.4.7/Chart.lock b/stable/external-service/1.4.7/Chart.lock index 4369d13f93..ca23213fd3 100644 --- a/stable/external-service/1.4.7/Chart.lock +++ b/stable/external-service/1.4.7/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:28.252014485Z" +generated: "2021-08-31T18:18:38.760737047Z" diff --git a/stable/fireflyiii/6.1.0/CONFIG.md b/stable/fireflyiii/6.1.0/CONFIG.md new file mode 100644 index 0000000000..fc9b2fa2d5 --- /dev/null +++ b/stable/fireflyiii/6.1.0/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Internally" quick-start guide: +https://truecharts.org/manual/Quick-Start%20Guides/14-linking-apps/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/stable/fireflyiii/6.1.0/Chart.lock b/stable/fireflyiii/6.1.0/Chart.lock new file mode 100644 index 0000000000..860432840c --- /dev/null +++ b/stable/fireflyiii/6.1.0/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.12.1 +- name: postgresql + repository: https://truecharts.org/ + version: 1.5.1 +digest: sha256:8f143052e2c3c03042badc1bebcdd961d592c6863d53176fadf2a7b89044874f +generated: "2021-08-31T18:18:44.062750619Z" diff --git a/stable/fireflyiii/6.1.0/Chart.yaml b/stable/fireflyiii/6.1.0/Chart.yaml new file mode 100644 index 0000000000..584a0893d0 --- /dev/null +++ b/stable/fireflyiii/6.1.0/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: auto +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.12.1 +- condition: postgresql.enabled + name: postgresql + repository: https://truecharts.org/ + version: 1.5.1 +deprecated: false +description: A free and open source personal finance manager +home: https://github.com/firefly-iii/firefly-iii/ +icon: https://www.firefly-iii.org/assets/logo/color.png +keywords: +- fireflyiii +- finacial +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: truecharts.org +- email: 20650065+warllo54@users.noreply.github.com + name: warllo54 + url: truecharts.org +name: fireflyiii +sources: +- https://github.com/firefly-iii/firefly-iii/ +type: application +version: 6.1.0 diff --git a/stable/fireflyiii/6.1.0/README.md b/stable/fireflyiii/6.1.0/README.md new file mode 100644 index 0000000000..b701eb7772 --- /dev/null +++ b/stable/fireflyiii/6.1.0/README.md @@ -0,0 +1,43 @@ +# Introduction + +![Version: 5.4.4](https://img.shields.io/badge/Version-5.4.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +A free and open source personal finance manager + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 6.10.7 | +| https://truecharts.org/ | postgresql | 1.2.4 | + +## Installing the Chart + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/03-Installing-an-App/). + +## Uninstalling the Chart + +To remove this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/07-Deleting-an-App/). + +## Support + +- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/) first. +- See the [Wiki](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/stable/fireflyiii/6.1.0/app-readme.md b/stable/fireflyiii/6.1.0/app-readme.md new file mode 100644 index 0000000000..51ef9c43a7 --- /dev/null +++ b/stable/fireflyiii/6.1.0/app-readme.md @@ -0,0 +1,4 @@ +A free and open source personal finance manager + +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A free and open source personal finance manager diff --git a/stable/fireflyiii/6.1.0/charts/common-6.12.1.tgz b/stable/fireflyiii/6.1.0/charts/common-6.12.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7dacd3795f3c159b5a84150f46e24a9458b4d333 GIT binary patch literal 25243 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 literal 0 HcmV?d00001 diff --git a/stable/fireflyiii/6.1.0/charts/postgresql-1.5.1.tgz b/stable/fireflyiii/6.1.0/charts/postgresql-1.5.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8e827c8eff81247e723d1304eef80ec4ffb6a818 GIT binary patch literal 32168 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 literal 0 HcmV?d00001 diff --git a/stable/fireflyiii/6.1.0/ix_values.yaml b/stable/fireflyiii/6.1.0/ix_values.yaml new file mode 100644 index 0000000000..a94de5b58e --- /dev/null +++ b/stable/fireflyiii/6.1.0/ix_values.yaml @@ -0,0 +1,54 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: fireflyiii/core + pullPolicy: IfNotPresent + tag: version-5.5.12 + +probes: + liveness: + path: "/login" + + readiness: + path: "/login" + + startup: + path: "/login" + +env: + DB_USERNAME: fireflyiii + DB_DATABASE: fireflyiii + DB_CONNECTION: pgsql + DB_PORT: 5432 + +envValueFrom: + DB_HOST: + secretKeyRef: + name: dbcreds + key: postgresql_host + DB_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + +# Enabled postgres +postgresql: + enabled: true + postgresqlUsername: fireflyiii + postgresqlDatabase: fireflyiii + existingSecret: dbcreds + persistence: + db: + storageClass: "SCALE-ZFS" + dbbackups: + storageClass: "SCALE-ZFS" + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/stable/fireflyiii/6.1.0/questions.yaml b/stable/fireflyiii/6.1.0/questions.yaml new file mode 100644 index 0000000000..0d5c724f68 --- /dev/null +++ b/stable/fireflyiii/6.1.0/questions.yaml @@ -0,0 +1,1116 @@ +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: "Advanced" + description: "Advanced Configuration" +portals: + web_portal: + 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: controller + group: "Controller" + label: "" + schema: + type: dict + attrs: + - 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: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + 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: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + 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: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + # Docker specific env + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: TZ + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: APP_KEY + label: "App Key" + description: "Your unique 32 application character key" + schema: + type: string + default: "" + min_length: 32 + max_length: 32 + valid_chars: '[a-zA-Z0-9!@#$%^&*?]{32}' + required: true + - variable: UMASK + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: hostNetwork + group: "Networking and Services" + label: "Enable Host Networking" + schema: + type: boolean + default: false + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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: "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: "Service's Port(s) Configuration" + schema: + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: port + label: "Container Port" + schema: + type: int + default: 51080 + editable: true + 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 + default: 36048 + + + - variable: serviceList + label: "Additional Services" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + 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: "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: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + 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: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + 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: "pvc" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - 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: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "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: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + 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: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + 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" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - 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: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "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: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + required: true + default: "" + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + + - variable: ingress + label: "" + group: "Ingress" + schema: + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + 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: + 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: + 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: + 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: ingressList + label: "Additional Ingress" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + 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: + 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: + 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: + 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: + 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: + 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: + 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: securityContext + group: "Security and Permissions" + label: "Security Context" + schema: + 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: true + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - 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: 0 + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: resources + group: "Resources and Devices" + label: "" + schema: + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "2000m" + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "2Gi" + - variable: requests + label: "Advanced Request minimum resources required" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "10m" + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "50Mi" + + + - variable: autoscaling + group: "Resources and Devices" + label: "Horizontal Pod Autoscaler" + schema: + 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 diff --git a/stable/fireflyiii/6.1.0/templates/common.yaml b/stable/fireflyiii/6.1.0/templates/common.yaml new file mode 100644 index 0000000000..64e027ac0f --- /dev/null +++ b/stable/fireflyiii/6.1.0/templates/common.yaml @@ -0,0 +1,5 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/stable/fireflyiii/6.1.0/templates/secrets.yaml b/stable/fireflyiii/6.1.0/templates/secrets.yaml new file mode 100644 index 0000000000..5d26274161 --- /dev/null +++ b/stable/fireflyiii/6.1.0/templates/secrets.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Secret +metadata: + name: dbcreds +{{- $previous := lookup "v1" "Secret" .Release.Namespace "dbcreds" }} +{{- $dbPass := "" }} +data: +{{- if $previous }} + {{- $dbPass = ( index $previous.data "postgresql-password" ) | b64dec }} + postgresql-password: {{ ( index $previous.data "postgresql-password" ) }} + postgresql-postgres-password: {{ ( index $previous.data "postgresql-postgres-password" ) }} +{{- else }} + {{- $dbPass = randAlphaNum 50 }} + postgresql-password: {{ $dbPass | b64enc | quote }} + postgresql-postgres-password: {{ randAlphaNum 50 | b64enc | quote }} +{{- end }} + url: {{ ( printf "%v%v:%v@%v-%v:%v/%v" "postgresql://" .Values.postgresql.postgresqlUsername $dbPass .Release.Name "postgresql" "5432" .Values.postgresql.postgresqlDatabase ) | b64enc | quote }} + postgresql_host: {{ ( printf "%v-%v" .Release.Name "postgresql" ) | b64enc | quote }} +type: Opaque diff --git a/stable/fireflyiii/6.1.0/test_values.yaml b/stable/fireflyiii/6.1.0/test_values.yaml new file mode 100644 index 0000000000..21b500850d --- /dev/null +++ b/stable/fireflyiii/6.1.0/test_values.yaml @@ -0,0 +1,72 @@ +# Default values for fireflyIII. + +image: + repository: fireflyiii/core + pullPolicy: IfNotPresent + tag: version-5.5.12 + +strategy: + type: Recreate + +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +service: + main: + ports: + main: + port: 8080 + tcp: + enabled: true + type: ClusterIP + ports: + tcp: + enabled: true + port: 51080 + protocol: TCP + +probes: + liveness: + path: "/login" + + readiness: + path: "/login" + + startup: + path: "/login" + +env: + DB_USERNAME: firefly + DB_DATABASE: firefly + DB_CONNECTION: pgsql + DB_PORT: 5432 + APP_KEY: AGcfkCUS233ZWmBXztYbdyCs2u7kkz55 + +envValueFrom: + DB_HOST: + secretKeyRef: + name: dbcreds + key: postgresql_host + DB_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + +persistence: + data: + enabled: true + mountPath: "/var/www/html/storage/upload" + type: pvc + accessMode: ReadWriteOnce + size: "100Gi" + + +# Enabled postgres +postgresql: + enabled: true + postgresqlUsername: firefly + postgresqlDatabase: firefly + existingSecret: dbcreds diff --git a/stable/fireflyiii/6.1.0/values.yaml b/stable/fireflyiii/6.1.0/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/stable/flaresolverr/1.9.8/Chart.lock b/stable/flaresolverr/1.9.8/Chart.lock index ec1e73c0f9..77fb1262e9 100644 --- a/stable/flaresolverr/1.9.8/Chart.lock +++ b/stable/flaresolverr/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:04:37.812624207Z" +generated: "2021-08-31T18:18:49.863800346Z" diff --git a/stable/flood/1.9.8/Chart.lock b/stable/flood/1.9.8/Chart.lock index 29efc6329d..ac30838e65 100644 --- a/stable/flood/1.9.8/Chart.lock +++ b/stable/flood/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:04:41.804679064Z" +generated: "2021-08-31T18:18:54.310446126Z" diff --git a/stable/focalboard/1.9.8/Chart.lock b/stable/focalboard/1.9.8/Chart.lock index 48fd9fec0a..61f9118532 100644 --- a/stable/focalboard/1.9.8/Chart.lock +++ b/stable/focalboard/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:04:45.832009541Z" +generated: "2021-08-31T18:18:58.790727511Z" diff --git a/stable/freeradius/1.7.8/Chart.lock b/stable/freeradius/1.7.8/Chart.lock index c5f92b4309..d40b7892b7 100644 --- a/stable/freeradius/1.7.8/Chart.lock +++ b/stable/freeradius/1.7.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:49.839024943Z" +generated: "2021-08-31T18:19:03.260786464Z" diff --git a/stable/freshrss/6.11.8/Chart.lock b/stable/freshrss/6.11.8/Chart.lock index edc6789214..c0576325b0 100644 --- a/stable/freshrss/6.11.8/Chart.lock +++ b/stable/freshrss/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:53.869075061Z" +generated: "2021-08-31T18:19:07.858385679Z" diff --git a/stable/gaps/6.11.8/Chart.lock b/stable/gaps/6.11.8/Chart.lock index ebf263bb04..b9c4a4c317 100644 --- a/stable/gaps/6.11.8/Chart.lock +++ b/stable/gaps/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:04:57.849191473Z" +generated: "2021-08-31T18:19:12.502795834Z" diff --git a/stable/gonic/1.9.8/Chart.lock b/stable/gonic/1.9.8/Chart.lock index 3d9a49cae4..45d541f504 100644 --- a/stable/gonic/1.9.8/Chart.lock +++ b/stable/gonic/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:05:01.898135687Z" +generated: "2021-08-31T18:19:17.063642259Z" diff --git a/stable/grocy/6.11.8/Chart.lock b/stable/grocy/6.11.8/Chart.lock index 56a778b58d..bef3bd6aba 100644 --- a/stable/grocy/6.11.8/Chart.lock +++ b/stable/grocy/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:05.907430417Z" +generated: "2021-08-31T18:19:21.724668357Z" diff --git a/stable/handbrake/6.11.8/Chart.lock b/stable/handbrake/6.11.8/Chart.lock index 9f97621899..da81c0f7d4 100644 --- a/stable/handbrake/6.11.8/Chart.lock +++ b/stable/handbrake/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:09.868659267Z" +generated: "2021-08-31T18:19:26.423482349Z" diff --git a/stable/haste-server/1.11.8/Chart.lock b/stable/haste-server/1.11.8/Chart.lock index 0afaff0609..ad26160cf3 100644 --- a/stable/haste-server/1.11.8/Chart.lock +++ b/stable/haste-server/1.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:13.865771674Z" +generated: "2021-08-31T18:19:31.040249384Z" diff --git a/stable/healthchecks/1.9.8/Chart.lock b/stable/healthchecks/1.9.8/Chart.lock index e7185d27f2..62012eaf21 100644 --- a/stable/healthchecks/1.9.8/Chart.lock +++ b/stable/healthchecks/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:05:17.915312236Z" +generated: "2021-08-31T18:19:35.620405878Z" diff --git a/stable/heimdall/6.11.8/Chart.lock b/stable/heimdall/6.11.8/Chart.lock index af7e94297c..d2a35aad1d 100644 --- a/stable/heimdall/6.11.8/Chart.lock +++ b/stable/heimdall/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:21.914813499Z" +generated: "2021-08-31T18:19:40.116245675Z" diff --git a/stable/home-assistant/6.11.8/Chart.lock b/stable/home-assistant/6.11.8/Chart.lock index 3bd616a53b..22965ffe8f 100644 --- a/stable/home-assistant/6.11.8/Chart.lock +++ b/stable/home-assistant/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:25.926810112Z" +generated: "2021-08-31T18:19:44.650702307Z" diff --git a/stable/hyperion-ng/1.9.8/Chart.lock b/stable/hyperion-ng/1.9.8/Chart.lock index fb91132a32..7da39bac11 100644 --- a/stable/hyperion-ng/1.9.8/Chart.lock +++ b/stable/hyperion-ng/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:05:30.029149019Z" +generated: "2021-08-31T18:19:49.116853436Z" diff --git a/stable/jackett/6.11.10/Chart.lock b/stable/jackett/6.11.10/Chart.lock index 95811a77a8..0c6844c2c8 100644 --- a/stable/jackett/6.11.10/Chart.lock +++ b/stable/jackett/6.11.10/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:34.407389694Z" +generated: "2021-08-31T18:19:53.591284809Z" diff --git a/stable/jellyfin/6.11.8/Chart.lock b/stable/jellyfin/6.11.8/Chart.lock index d79c4091e3..f86b3340a8 100644 --- a/stable/jellyfin/6.11.8/Chart.lock +++ b/stable/jellyfin/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:38.40346011Z" +generated: "2021-08-31T18:19:58.077963998Z" diff --git a/stable/kms/6.11.8/Chart.lock b/stable/kms/6.11.8/Chart.lock index 25390d1868..07102d4306 100644 --- a/stable/kms/6.11.8/Chart.lock +++ b/stable/kms/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:42.386077351Z" +generated: "2021-08-31T18:20:02.552815378Z" diff --git a/stable/komga/1.9.11/Chart.lock b/stable/komga/1.9.11/Chart.lock index 38f5906b83..aa82323b9a 100644 --- a/stable/komga/1.9.11/Chart.lock +++ b/stable/komga/1.9.11/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:05:46.326006961Z" +generated: "2021-08-31T18:20:07.151116419Z" diff --git a/stable/lazylibrarian/6.11.8/Chart.lock b/stable/lazylibrarian/6.11.8/Chart.lock index f941667dc4..f2085696de 100644 --- a/stable/lazylibrarian/6.11.8/Chart.lock +++ b/stable/lazylibrarian/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:50.290600157Z" +generated: "2021-08-31T18:20:11.85593102Z" diff --git a/stable/librespeed/1.9.8/Chart.lock b/stable/librespeed/1.9.8/Chart.lock index e35ae0ac89..4350f1bfe9 100644 --- a/stable/librespeed/1.9.8/Chart.lock +++ b/stable/librespeed/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:05:54.270854096Z" +generated: "2021-08-31T18:20:16.54773471Z" diff --git a/stable/lidarr/6.11.8/Chart.lock b/stable/lidarr/6.11.8/Chart.lock index b7b2bfa5e0..fee9e2b48c 100644 --- a/stable/lidarr/6.11.8/Chart.lock +++ b/stable/lidarr/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:05:58.227926428Z" +generated: "2021-08-31T18:20:21.205887251Z" diff --git a/stable/littlelink/1.5.8/Chart.lock b/stable/littlelink/1.5.8/Chart.lock index 3f6a62a882..f1624bfc0c 100644 --- a/stable/littlelink/1.5.8/Chart.lock +++ b/stable/littlelink/1.5.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:02.188689579Z" +generated: "2021-08-31T18:20:25.853148866Z" diff --git a/stable/lychee/6.11.8/Chart.lock b/stable/lychee/6.11.8/Chart.lock index 0f4e52a7ff..c221290fca 100644 --- a/stable/lychee/6.11.8/Chart.lock +++ b/stable/lychee/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:06.224681016Z" +generated: "2021-08-31T18:20:30.508930996Z" diff --git a/stable/mealie/1.11.8/Chart.lock b/stable/mealie/1.11.8/Chart.lock index 60dbc30a8c..1298df33de 100644 --- a/stable/mealie/1.11.8/Chart.lock +++ b/stable/mealie/1.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:10.17934337Z" +generated: "2021-08-31T18:20:35.092692099Z" diff --git a/stable/mosquitto/1.11.8/Chart.lock b/stable/mosquitto/1.11.8/Chart.lock index 62dddcf2ef..8bedb99bf0 100644 --- a/stable/mosquitto/1.11.8/Chart.lock +++ b/stable/mosquitto/1.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:14.164421431Z" +generated: "2021-08-31T18:20:39.587191892Z" diff --git a/stable/mylar/1.9.8/Chart.lock b/stable/mylar/1.9.8/Chart.lock index 4d84493d6e..b4ea97b610 100644 --- a/stable/mylar/1.9.8/Chart.lock +++ b/stable/mylar/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:06:18.169151504Z" +generated: "2021-08-31T18:20:43.970329477Z" diff --git a/stable/navidrome/6.11.8/Chart.lock b/stable/navidrome/6.11.8/Chart.lock index ca7fbffd02..d3296a6605 100644 --- a/stable/navidrome/6.11.8/Chart.lock +++ b/stable/navidrome/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:22.116255162Z" +generated: "2021-08-31T18:20:48.395450096Z" diff --git a/stable/node-red/6.11.8/Chart.lock b/stable/node-red/6.11.8/Chart.lock index 29c2627c3d..cfdbac0424 100644 --- a/stable/node-red/6.11.8/Chart.lock +++ b/stable/node-red/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:26.15238127Z" +generated: "2021-08-31T18:20:52.838031782Z" diff --git a/stable/nullserv/1.9.8/Chart.lock b/stable/nullserv/1.9.8/Chart.lock index 7c2aa6782c..373d4d10f0 100644 --- a/stable/nullserv/1.9.8/Chart.lock +++ b/stable/nullserv/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:06:30.041560339Z" +generated: "2021-08-31T18:20:57.30340741Z" diff --git a/stable/nzbget/6.11.8/Chart.lock b/stable/nzbget/6.11.8/Chart.lock index bef2e2bc0f..86516c5e71 100644 --- a/stable/nzbget/6.11.8/Chart.lock +++ b/stable/nzbget/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:34.008775738Z" +generated: "2021-08-31T18:21:01.700923429Z" diff --git a/stable/nzbhydra/6.11.8/Chart.lock b/stable/nzbhydra/6.11.8/Chart.lock index 9f05d259da..9da395a9fe 100644 --- a/stable/nzbhydra/6.11.8/Chart.lock +++ b/stable/nzbhydra/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:37.883678039Z" +generated: "2021-08-31T18:21:06.260668666Z" diff --git a/stable/octoprint/1.9.8/Chart.lock b/stable/octoprint/1.9.8/Chart.lock index 95aad2f2ef..1aa108de35 100644 --- a/stable/octoprint/1.9.8/Chart.lock +++ b/stable/octoprint/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:06:41.778449629Z" +generated: "2021-08-31T18:21:10.901726486Z" diff --git a/stable/omada-controller/1.9.8/Chart.lock b/stable/omada-controller/1.9.8/Chart.lock index 01e0afc67c..5367835eea 100644 --- a/stable/omada-controller/1.9.8/Chart.lock +++ b/stable/omada-controller/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:06:45.653460082Z" +generated: "2021-08-31T18:21:15.479832606Z" diff --git a/stable/ombi/6.11.9/Chart.lock b/stable/ombi/6.11.9/Chart.lock index 298161169b..ea1db32d37 100644 --- a/stable/ombi/6.11.9/Chart.lock +++ b/stable/ombi/6.11.9/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:49.526365321Z" +generated: "2021-08-31T18:21:20.109455106Z" diff --git a/stable/openldap/1.7.8/Chart.lock b/stable/openldap/1.7.8/Chart.lock index 57d308cba4..eb90f1fa38 100644 --- a/stable/openldap/1.7.8/Chart.lock +++ b/stable/openldap/1.7.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:53.423653788Z" +generated: "2021-08-31T18:21:24.729790725Z" diff --git a/stable/organizr/6.11.8/Chart.lock b/stable/organizr/6.11.8/Chart.lock index 6a5e7e944a..9902e1ba9a 100644 --- a/stable/organizr/6.11.8/Chart.lock +++ b/stable/organizr/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:06:57.30578538Z" +generated: "2021-08-31T18:21:29.365446515Z" diff --git a/stable/overseerr/1.9.8/Chart.lock b/stable/overseerr/1.9.8/Chart.lock index 7b5e24e67f..a2073b67b1 100644 --- a/stable/overseerr/1.9.8/Chart.lock +++ b/stable/overseerr/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:01.247181613Z" +generated: "2021-08-31T18:21:34.003097142Z" diff --git a/stable/owncast/1.9.8/Chart.lock b/stable/owncast/1.9.8/Chart.lock index c4e5f02643..f4e326ff95 100644 --- a/stable/owncast/1.9.8/Chart.lock +++ b/stable/owncast/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:05.191146782Z" +generated: "2021-08-31T18:21:38.456418295Z" diff --git a/stable/owncloud-ocis/1.9.8/Chart.lock b/stable/owncloud-ocis/1.9.8/Chart.lock index 1d5c58363c..ac9b1e3260 100644 --- a/stable/owncloud-ocis/1.9.8/Chart.lock +++ b/stable/owncloud-ocis/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:09.257028285Z" +generated: "2021-08-31T18:21:42.989822275Z" diff --git a/stable/pgadmin/1.8.8/Chart.lock b/stable/pgadmin/1.8.8/Chart.lock index ad3567d9be..bee59ee7aa 100644 --- a/stable/pgadmin/1.8.8/Chart.lock +++ b/stable/pgadmin/1.8.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:07:13.186985659Z" +generated: "2021-08-31T18:21:47.455001973Z" diff --git a/stable/photoprism/1.9.8/Chart.lock b/stable/photoprism/1.9.8/Chart.lock index 5a6bfa2562..563ee6feca 100644 --- a/stable/photoprism/1.9.8/Chart.lock +++ b/stable/photoprism/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:17.189941377Z" +generated: "2021-08-31T18:21:51.948681228Z" diff --git a/stable/phpldapadmin/1.8.8/Chart.lock b/stable/phpldapadmin/1.8.8/Chart.lock index f1dea2c04d..13d7a73bad 100644 --- a/stable/phpldapadmin/1.8.8/Chart.lock +++ b/stable/phpldapadmin/1.8.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:07:21.179805107Z" +generated: "2021-08-31T18:21:56.399259708Z" diff --git a/stable/piaware/1.9.8/Chart.lock b/stable/piaware/1.9.8/Chart.lock index 8f44d1069d..564432e78f 100644 --- a/stable/piaware/1.9.8/Chart.lock +++ b/stable/piaware/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:25.089527442Z" +generated: "2021-08-31T18:22:00.84607238Z" diff --git a/stable/plex/5.11.8/Chart.lock b/stable/plex/5.11.8/Chart.lock index 324c11a15d..068413874c 100644 --- a/stable/plex/5.11.8/Chart.lock +++ b/stable/plex/5.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:07:28.996435143Z" +generated: "2021-08-31T18:22:05.328060388Z" diff --git a/stable/podgrab/4.11.8/Chart.lock b/stable/podgrab/4.11.8/Chart.lock index 495eda3e8e..0963910792 100644 --- a/stable/podgrab/4.11.8/Chart.lock +++ b/stable/podgrab/4.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:07:32.893866813Z" +generated: "2021-08-31T18:22:09.894649723Z" diff --git a/stable/postgresql/1.5.8/Chart.lock b/stable/postgresql/1.5.8/Chart.lock index afdec85d0b..169e116ff9 100644 --- a/stable/postgresql/1.5.8/Chart.lock +++ b/stable/postgresql/1.5.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:07:36.80343906Z" +generated: "2021-08-31T18:22:14.491835478Z" diff --git a/stable/pretend-youre-xyzzy/1.9.8/Chart.lock b/stable/pretend-youre-xyzzy/1.9.8/Chart.lock index 2ca37d2ac4..fb7fd02215 100644 --- a/stable/pretend-youre-xyzzy/1.9.8/Chart.lock +++ b/stable/pretend-youre-xyzzy/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:40.691299658Z" +generated: "2021-08-31T18:22:19.089850197Z" diff --git a/stable/protonmail-bridge/1.9.8/Chart.lock b/stable/protonmail-bridge/1.9.8/Chart.lock index 7786d932be..6165c8813e 100644 --- a/stable/protonmail-bridge/1.9.8/Chart.lock +++ b/stable/protonmail-bridge/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:44.579263156Z" +generated: "2021-08-31T18:22:23.673872816Z" diff --git a/stable/prowlarr/1.11.10/Chart.lock b/stable/prowlarr/1.11.10/Chart.lock index e5b712f9c4..8542fd8d22 100644 --- a/stable/prowlarr/1.11.10/Chart.lock +++ b/stable/prowlarr/1.11.10/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:07:48.437931395Z" +generated: "2021-08-31T18:22:28.249523493Z" diff --git a/stable/pyload/1.9.8/Chart.lock b/stable/pyload/1.9.8/Chart.lock index 1c267e0f45..63baafb499 100644 --- a/stable/pyload/1.9.8/Chart.lock +++ b/stable/pyload/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:07:52.313036525Z" +generated: "2021-08-31T18:22:32.814902491Z" diff --git a/stable/qbittorrent/6.11.8/Chart.lock b/stable/qbittorrent/6.11.8/Chart.lock index c8fd5b3579..d805ef2534 100644 --- a/stable/qbittorrent/6.11.8/Chart.lock +++ b/stable/qbittorrent/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:07:56.267105236Z" +generated: "2021-08-31T18:22:37.190455649Z" diff --git a/stable/radarr/6.11.8/Chart.lock b/stable/radarr/6.11.8/Chart.lock index 630844fa7f..00f462c08e 100644 --- a/stable/radarr/6.11.8/Chart.lock +++ b/stable/radarr/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:00.186788359Z" +generated: "2021-08-31T18:22:41.563531865Z" diff --git a/stable/readarr/6.11.8/Chart.lock b/stable/readarr/6.11.8/Chart.lock index e2391c4e0e..b3813b95e0 100644 --- a/stable/readarr/6.11.8/Chart.lock +++ b/stable/readarr/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:04.199503179Z" +generated: "2021-08-31T18:22:45.979041452Z" diff --git a/stable/reg/1.11.8/Chart.lock b/stable/reg/1.11.8/Chart.lock index 74d7ebdabf..877e06c17c 100644 --- a/stable/reg/1.11.8/Chart.lock +++ b/stable/reg/1.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:08.266368589Z" +generated: "2021-08-31T18:22:50.414761227Z" diff --git a/stable/resilio-sync/1.9.8/Chart.lock b/stable/resilio-sync/1.9.8/Chart.lock index 907193c694..889b43d439 100644 --- a/stable/resilio-sync/1.9.8/Chart.lock +++ b/stable/resilio-sync/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:08:12.335859571Z" +generated: "2021-08-31T18:22:54.839910045Z" diff --git a/stable/sabnzbd/6.11.8/Chart.lock b/stable/sabnzbd/6.11.8/Chart.lock index bcbd7731de..fb61a34dc8 100644 --- a/stable/sabnzbd/6.11.8/Chart.lock +++ b/stable/sabnzbd/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:16.31483976Z" +generated: "2021-08-31T18:22:59.252899306Z" diff --git a/stable/ser2sock/1.9.8/Chart.lock b/stable/ser2sock/1.9.8/Chart.lock index 830acac253..d750b4fd3d 100644 --- a/stable/ser2sock/1.9.8/Chart.lock +++ b/stable/ser2sock/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:08:20.312595888Z" +generated: "2021-08-31T18:23:03.675613798Z" diff --git a/stable/sonarr/6.11.8/Chart.lock b/stable/sonarr/6.11.8/Chart.lock index 87a2550735..5b5487e14e 100644 --- a/stable/sonarr/6.11.8/Chart.lock +++ b/stable/sonarr/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:24.291491413Z" +generated: "2021-08-31T18:23:08.341888751Z" diff --git a/stable/stash/1.9.9/Chart.lock b/stable/stash/1.9.9/Chart.lock index 7438a09e21..2ee2dabd8f 100644 --- a/stable/stash/1.9.9/Chart.lock +++ b/stable/stash/1.9.9/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:08:28.268646923Z" +generated: "2021-08-31T18:23:13.041605088Z" diff --git a/stable/syncthing/6.11.8/Chart.lock b/stable/syncthing/6.11.8/Chart.lock index 0d17f8c3e5..d5210c1409 100644 --- a/stable/syncthing/6.11.8/Chart.lock +++ b/stable/syncthing/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:32.216675975Z" +generated: "2021-08-31T18:23:17.665548437Z" diff --git a/stable/tautulli/6.11.8/Chart.lock b/stable/tautulli/6.11.8/Chart.lock index 2839f9da68..1dc6af2d30 100644 --- a/stable/tautulli/6.11.8/Chart.lock +++ b/stable/tautulli/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:36.184342924Z" +generated: "2021-08-31T18:23:22.312516949Z" diff --git a/stable/thelounge/1.11.8/Chart.lock b/stable/thelounge/1.11.8/Chart.lock index f37f771870..67851a0cf5 100644 --- a/stable/thelounge/1.11.8/Chart.lock +++ b/stable/thelounge/1.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:40.145205836Z" +generated: "2021-08-31T18:23:27.027551577Z" diff --git a/stable/traefik/6.13.8/CONFIG.md b/stable/traefik/6.13.8/CONFIG.md new file mode 100644 index 0000000000..fc9b2fa2d5 --- /dev/null +++ b/stable/traefik/6.13.8/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Internally" quick-start guide: +https://truecharts.org/manual/Quick-Start%20Guides/14-linking-apps/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/stable/traefik/6.13.8/Chart.lock b/stable/traefik/6.13.8/Chart.lock new file mode 100644 index 0000000000..06cb8b437e --- /dev/null +++ b/stable/traefik/6.13.8/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.12.2 +digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 +generated: "2021-08-31T18:23:31.699294931Z" diff --git a/stable/traefik/6.13.8/Chart.yaml b/stable/traefik/6.13.8/Chart.yaml new file mode 100644 index 0000000000..ba9ac80f3c --- /dev/null +++ b/stable/traefik/6.13.8/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: '2.4' +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.12.2 +deprecated: false +description: A Traefik based Reverse Proxy and Certificate Manager +home: https://github.com/truecharts/apps/tree/master/charts/stable/traefik +icon: https://raw.githubusercontent.com/traefik/traefik/v2.3/docs/content/assets/img/traefik.logo.png +keywords: +- traefik +- ingress +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: truecharts.org +- email: kjeld@schouten-lebbing.nl + name: Ornias1993 + url: truecharts.org +name: traefik +sources: +- https://github.com/traefik/traefik +- https://github.com/traefik/traefik-helm-chart +- https://traefik.io/ +type: application +upstream_version: v9.19.2 +version: 6.13.8 diff --git a/stable/traefik/6.13.8/LICENSE b/stable/traefik/6.13.8/LICENSE new file mode 100644 index 0000000000..907ff83212 --- /dev/null +++ b/stable/traefik/6.13.8/LICENSE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Containous + Copyright 2020 Traefik Labs + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/stable/traefik/6.13.8/README.md b/stable/traefik/6.13.8/README.md new file mode 100644 index 0000000000..0cdd14d678 --- /dev/null +++ b/stable/traefik/6.13.8/README.md @@ -0,0 +1,39 @@ +# Introduction + +A Traefik based Reverse Proxy and Certificate Manager + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 6.12.1 | + +## Installing the Chart + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/03-Installing-an-App/). + +## Uninstalling the Chart + +To remove this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/07-Deleting-an-App/). + +## Support + +- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/) first. +- See the [Wiki](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +--- +All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/6.13.8/app-readme.md b/stable/traefik/6.13.8/app-readme.md new file mode 100644 index 0000000000..6ac1d9a76a --- /dev/null +++ b/stable/traefik/6.13.8/app-readme.md @@ -0,0 +1,4 @@ +A Traefik based Reverse Proxy and Certificate Manager + +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A Traefik based Reverse Proxy and Certificate Manager diff --git a/stable/traefik/6.13.8/charts/common-6.12.2.tgz b/stable/traefik/6.13.8/charts/common-6.12.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..230363e0ca3c20b6ac0d92dddb2a76c921ecf904 GIT binary patch literal 28311 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/ 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" -}} +{{- $defServiceName := printf "%s/%s" .Release.Namespace (include "traefik.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/6.13.8/templates/_podtemplate.tpl b/stable/traefik/6.13.8/templates/_podtemplate.tpl new file mode 100644 index 0000000000..21e60ceba9 --- /dev/null +++ b/stable/traefik/6.13.8/templates/_podtemplate.tpl @@ -0,0 +1,265 @@ +{{- define "traefik.podTemplate" }} + metadata: + annotations: + {{- with .Values.deployment.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.deployment.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.deployment.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "traefik.serviceAccountName" . }} + terminationGracePeriodSeconds: 60 + hostNetwork: {{ .Values.hostNetwork }} + {{- with .Values.deployment.dnsPolicy }} + dnsPolicy: {{ . }} + {{- end }} + {{- with .Values.deployment.initContainers }} + initContainers: + {{- toYaml . | nindent 6 }} + {{- end }} + containers: + - image: "{{ .Values.image.repository }}:{{ default .Chart.AppVersion .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + name: {{ template "traefik.fullname" . }} + resources: + {{- with .Values.resources }} + {{- toYaml . | nindent 10 }} + {{- end }} + readinessProbe: + httpGet: + path: /ping + port: {{ default .Values.ports.traefik.port .Values.ports.traefik.healthchecksPort }} + failureThreshold: 1 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 2 + livenessProbe: + httpGet: + path: /ping + port: {{ default .Values.ports.traefik.port .Values.ports.traefik.healthchecksPort }} + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 2 + ports: + {{- range $name, $config := .Values.ports }} + {{- if $config }} + - name: {{ $name | quote }} + containerPort: {{ $config.port }} + {{- if $config.hostPort }} + hostPort: {{ $config.hostPort }} + {{- end }} + {{- if $config.hostIP }} + hostIP: {{ $config.hostIP }} + {{- end }} + protocol: {{ default "TCP" $config.protocol | quote }} + {{- end }} + {{- end }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 10 }} + {{- end }} + volumeMounts: + - name: {{ .Values.persistence.name }} + mountPath: {{ .Values.persistence.path }} + {{- if .Values.persistence.subPath }} + subPath: {{ .Values.persistence.subPath }} + {{- end }} + - name: tmp + mountPath: /tmp + {{- $root := . }} + {{- range .Values.volumes }} + - name: {{ tpl (.name) $root }} + mountPath: {{ .mountPath }} + readOnly: true + {{- end }} + {{- if .Values.experimental.plugins.enabled }} + - name: plugins + mountPath: "/plugins-storage" + {{- end }} + {{- if .Values.additionalVolumeMounts }} + {{- toYaml .Values.additionalVolumeMounts | nindent 10 }} + {{- end }} + args: + {{- with .Values.globalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- range $name, $config := .Values.ports }} + {{- if $config }} + - "--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default "tcp" $config.protocol | lower }}" + {{- end }} + {{- end }} + - "--api.dashboard=true" + - "--ping=true" + {{- if .Values.providers.kubernetesCRD.enabled }} + - "--providers.kubernetescrd" + {{- end }} + {{- if .Values.providers.kubernetesIngress.enabled }} + - "--providers.kubernetesingress" + {{- if and .Values.service.enabled .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 .Values.experimental.kubernetesGateway.enabled }} + - "--providers.kubernetesgateway" + - "--experimental.kubernetesgateway" + {{- 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 }} + {{- range $entrypoint, $config := $.Values.ports }} + {{- if $config.redirectTo }} + {{- $toPort := index $.Values.ports $config.redirectTo }} + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.exposedPort }}" + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" + {{- end }} + {{- if $config.tls }} + {{- if $config.tls.enabled }} + - "--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 }} + {{- if .general.format }} + - "--log.format={{ .general.format }}" + {{- end }} + {{- if ne .general.level "ERROR" }} + - "--log.level={{ .general.level | upper }}" + {{- end }} + {{- if .access.enabled }} + - "--accesslog=true" + {{- if .access.format }} + - "--accesslog.format={{ .access.format }}" + {{- end }} + {{- 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 }} + {{- if .Values.pilot.enabled }} + - "--pilot.token={{ .Values.pilot.token }}" + {{- end }} + {{- if hasKey .Values.pilot "dashboard" }} + - "--pilot.dashboard={{ .Values.pilot.dashboard }}" + {{- end }} + {{- with .Values.additionalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- with .Values.env }} + env: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- with .Values.envFrom }} + envFrom: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- if .Values.deployment.additionalContainers }} + {{- toYaml .Values.deployment.additionalContainers | nindent 6 }} + {{- end }} + volumes: + - name: {{ .Values.persistence.name }} + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ default (include "traefik.fullname" .) .Values.persistence.existingClaim }} + {{- else }} + emptyDir: {} + {{- end }} + - name: tmp + emptyDir: {} + {{- $root := . }} + {{- range .Values.volumes }} + - name: {{ tpl (.name) $root }} + {{- if eq .type "secret" }} + secret: + secretName: {{ tpl (.name) $root }} + {{- else if eq .type "configMap" }} + configMap: + name: {{ tpl (.name) $root }} + {{- end }} + {{- end }} + {{- if .Values.deployment.additionalVolumes }} + {{- toYaml .Values.deployment.additionalVolumes | nindent 8 }} + {{- end }} + {{- if .Values.experimental.plugins.enabled }} + - name: plugins + emptyDir: {} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName }} + {{- end }} + {{- with .Values.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} +{{ end -}} diff --git a/stable/traefik/6.13.8/templates/custom/common.yaml b/stable/traefik/6.13.8/templates/custom/common.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/stable/traefik/6.13.8/templates/custom/middleware-namespace.yaml b/stable/traefik/6.13.8/templates/custom/middleware-namespace.yaml new file mode 100644 index 0000000000..16156ee5e1 --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/middleware-namespace.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: traefikmiddlewares + namespace: traefikmiddlewares + annotations: + "helm.sh/hook": pre-install diff --git a/stable/traefik/6.13.8/templates/custom/middlewares/basic-middleware.yaml b/stable/traefik/6.13.8/templates/custom/middlewares/basic-middleware.yaml new file mode 100644 index 0000000000..98f7d1c170 --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/middlewares/basic-middleware.yaml @@ -0,0 +1,58 @@ +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: compress + namespace: traefikmiddlewares +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: traefikmiddlewares +spec: + rateLimit: + average: 300 + burst: 200 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: basic-secure-headers + namespace: traefikmiddlewares +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 + customResponseHeaders: + X-Robots-Tag: 'none' + server: '' +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: chain-basic + namespace: traefikmiddlewares +spec: + chain: + middlewares: + - name: basic-ratelimit + - name: basic-secure-headers + - name: compress diff --git a/stable/traefik/6.13.8/templates/custom/middlewares/basicauth.yaml b/stable/traefik/6.13.8/templates/custom/middlewares/basicauth.yaml new file mode 100644 index 0000000000..4e0f326a2f --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/middlewares/basicauth.yaml @@ -0,0 +1,29 @@ +{{ 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: traefikmiddlewares +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: traefikmiddlewares +spec: + basicAuth: + secret: {{printf "%v-%v" $middlewareData.name "secret" }} +{{ end }} diff --git a/stable/traefik/6.13.8/templates/custom/middlewares/chain.yaml b/stable/traefik/6.13.8/templates/custom/middlewares/chain.yaml new file mode 100644 index 0000000000..ef592c255b --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/middlewares/chain.yaml @@ -0,0 +1,16 @@ +{{ range $index, $middlewareData := .Values.middlewares.chain }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: traefikmiddlewares +spec: + chain: + middlewares: + {{ range $index, $chainData := .Values.middlewares.chainmiddlewares }} + - name: {{ printf "%v-%v@%v" "traefikmiddlewares" $chainData.name "kubernetescrd" }} + {{ end }} +{{ end }} diff --git a/stable/traefik/6.13.8/templates/custom/middlewares/forwardauth.yaml b/stable/traefik/6.13.8/templates/custom/middlewares/forwardauth.yaml new file mode 100644 index 0000000000..bb90d33775 --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/middlewares/forwardauth.yaml @@ -0,0 +1,23 @@ +{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: traefikmiddlewares +spec: + forwardAuth: + address: {{ $middlewareData.address }} + {{- if $middlewareData.authResponseHeaders }} + authResponseHeaders: {{ $middlewareData.authResponseHeaders }} + {{- end }} + {{- if $middlewareData.authRequestHeaders }} + authRequestHeaders: {{ $middlewareData.authRequestHeaders }} + {{- end }} + {{- if $middlewareData.authResponseHeadersRegex }} + authResponseHeadersRegex: {{ $middlewareData.authResponseHeadersRegex }} + {{- end }} + {{- if $middlewareData.trustForwardHeader }} + trustForwardHeader: true + {{- end }} +{{ end }} diff --git a/stable/traefik/6.13.8/templates/custom/middlewares/ratelimit.yaml b/stable/traefik/6.13.8/templates/custom/middlewares/ratelimit.yaml new file mode 100644 index 0000000000..b4bfa938e6 --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/middlewares/ratelimit.yaml @@ -0,0 +1,14 @@ +{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: traefikmiddlewares +spec: + rateLimit: + average: {{ $middlewareData.average }} + burst: {{ $middlewareData.burst }} +{{ end }} diff --git a/stable/traefik/6.13.8/templates/custom/middlewares/redirectScheme.yaml b/stable/traefik/6.13.8/templates/custom/middlewares/redirectScheme.yaml new file mode 100644 index 0000000000..070c8fc4a9 --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/middlewares/redirectScheme.yaml @@ -0,0 +1,14 @@ +{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: traefikmiddlewares +spec: + redirectScheme: + scheme: {{ $middlewareData.scheme }} + permanent: {{ $middlewareData.permanent }} +{{ end }} diff --git a/stable/traefik/6.13.8/templates/custom/portal.yaml b/stable/traefik/6.13.8/templates/custom/portal.yaml new file mode 100644 index 0000000000..92e80f287a --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/portal.yaml @@ -0,0 +1,45 @@ +{{- if .Values.portal }} +{{- if .Values.portal.enabled }} +{{- $ingr := dict -}} +{{- $host := "$node_ip" }} +{{- $port := 443 }} +{{- $protocol := "https" }} +{{- $portProtocol := "" }} +{{- $path := "/dashboard/" }} + +{{- if $ingr }} + {{- if $ingr.enabled }} + {{- range $ingr.hosts }} + {{- if .hostTpl }} + {{ $host = ( tpl .hostTpl $ ) }} + {{- else if .host }} + {{ $host = .host }} + {{- else }} + {{ $host = "$node_ip" }} + {{- end }} + {{- if .paths }} + {{- $path = (first .paths).path }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} + +{{- if eq $host "$node_ip" }} + {{- $port = .Values.ports.traefik.exposedPort }} + {{- $protocol = "http" }} +{{- end }} + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + protocol: {{ $protocol }} + host: {{ $host | quote }} + port: {{ $port | quote }} + path: {{ $path | quote }} + url: {{ ( printf "%v://%v:%v%v" $protocol $host $port $path ) | quote }} +{{- end }} +{{- end }} diff --git a/stable/traefik/6.13.8/templates/custom/portalhook.yaml b/stable/traefik/6.13.8/templates/custom/portalhook.yaml new file mode 100644 index 0000000000..5a9fee80da --- /dev/null +++ b/stable/traefik/6.13.8/templates/custom/portalhook.yaml @@ -0,0 +1,12 @@ +{{- if .Values.portalhook.enabled }} + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: portalhook + namespace: traefikmiddlewares +data: + websecureport: {{ .Values.ports.websecure.exposedPort | quote }} +{{- end }} diff --git a/stable/traefik/6.13.8/templates/daemonset.yaml b/stable/traefik/6.13.8/templates/daemonset.yaml new file mode 100644 index 0000000000..469e105c35 --- /dev/null +++ b/stable/traefik/6.13.8/templates/daemonset.yaml @@ -0,0 +1,40 @@ +{{- if and .Values.deployment.enabled (eq .Values.deployment.kind "DaemonSet") -}} + {{- with .Values.additionalArguments -}} + {{- range . -}} + {{- if contains ".acme." . -}} + {{- fail (printf "ACME functionality is not supported when running Traefik as a DaemonSet") -}} + {{- end -}} + {{- end -}} + {{- end -}} + {{- if eq (default .Chart.AppVersion .Values.image.tag) "latest" }} + {{- fail "\n\n ERROR: latest tag should not be used" }} + {{- end }} + +--- +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.deployment.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + annotations: + {{- with .Values.deployment.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + updateStrategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: {{ .Values.rollingUpdate.maxUnavailable }} + template: {{ template "traefik.podTemplate" . }} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/dashboard-hook-ingressroute.yaml b/stable/traefik/6.13.8/templates/dashboard-hook-ingressroute.yaml new file mode 100644 index 0000000000..ec278c2691 --- /dev/null +++ b/stable/traefik/6.13.8/templates/dashboard-hook-ingressroute.yaml @@ -0,0 +1,28 @@ +{{- if .Values.ingressRoute.dashboard.enabled -}} +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: {{ template "traefik.fullname" . }}-dashboard + annotations: + helm.sh/hook: "post-install,post-upgrade" + {{- with .Values.ingressRoute.dashboard.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.ingressRoute.dashboard.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + entryPoints: + - traefik + routes: + - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) + kind: Rule + services: + - name: api@internal + kind: TraefikService +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/deployment.yaml b/stable/traefik/6.13.8/templates/deployment.yaml new file mode 100644 index 0000000000..494087cfd0 --- /dev/null +++ b/stable/traefik/6.13.8/templates/deployment.yaml @@ -0,0 +1,47 @@ +{{- if and .Values.deployment.enabled (eq .Values.deployment.kind "Deployment") -}} + {{- if gt (int .Values.deployment.replicas) 1 -}} + {{- with .Values.additionalArguments -}} + {{- range . -}} + {{- if contains ".acme." . -}} + {{- fail (printf "You can not enable acme if you set more than one traefik replica") -}} + {{- end -}} + {{- end -}} + {{- end -}} + {{- end -}} + {{- if eq (default .Chart.AppVersion .Values.image.tag) "latest" }} + {{- fail "\n\n ERROR: latest tag should not be used" }} + {{- end }} + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.deployment.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + annotations: + {{- with .Values.deployment.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ default 1 .Values.deployment.replicas }} + {{- end }} + selector: + matchLabels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + rollingUpdate: + {{- with .Values.rollingUpdate }} + {{- toYaml . | nindent 6 }} + {{- end }} + template: {{ template "traefik.podTemplate" . }} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/gateway.yaml b/stable/traefik/6.13.8/templates/gateway.yaml new file mode 100644 index 0000000000..85194211fe --- /dev/null +++ b/stable/traefik/6.13.8/templates/gateway.yaml @@ -0,0 +1,33 @@ +{{- if .Values.experimental.kubernetesGateway.enabled }} +--- +apiVersion: networking.x-k8s.io/v1alpha1 +kind: Gateway +metadata: + name: traefik-gateway + namespace: default +spec: + gatewayClassName: traefik + listeners: + - port: {{ .Values.ports.web.port }} + protocol: HTTP + routes: + kind: HTTPRoute + selector: + matchLabels: + app: {{ .Values.experimental.kubernetesGateway.appLabelSelector }} + + {{- range $index, $cert:= .Values.experimental.kubernetesGateway.certificates }} + - port: {{ $.Values.ports.websecure.port }} + protocol: HTTPS + tls: + certificateRef: + name: {{ $cert.name }} + group: {{ $cert.group }} + kind: {{ $cert.kind }} + routes: + kind: HTTPRoute + selector: + matchLabels: + app: {{ $.Values.experimental.kubernetesGateway.appLabelSelector }} + {{- end }} +{{- end }} diff --git a/stable/traefik/6.13.8/templates/gatewayclass.yaml b/stable/traefik/6.13.8/templates/gatewayclass.yaml new file mode 100644 index 0000000000..61bf007db1 --- /dev/null +++ b/stable/traefik/6.13.8/templates/gatewayclass.yaml @@ -0,0 +1,9 @@ +{{- if .Values.experimental.kubernetesGateway.enabled }} +--- +kind: GatewayClass +apiVersion: networking.x-k8s.io/v1alpha1 +metadata: + name: traefik +spec: + controller: traefik.io/gateway-controller +{{- end }} diff --git a/stable/traefik/6.13.8/templates/hpa.yaml b/stable/traefik/6.13.8/templates/hpa.yaml new file mode 100644 index 0000000000..bf37117de6 --- /dev/null +++ b/stable/traefik/6.13.8/templates/hpa.yaml @@ -0,0 +1,20 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ template "traefik.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: +{{ toYaml .Values.autoscaling.metrics | indent 4 }} +{{- end }} diff --git a/stable/traefik/6.13.8/templates/ingressclass.yaml b/stable/traefik/6.13.8/templates/ingressclass.yaml new file mode 100644 index 0000000000..7c62458c82 --- /dev/null +++ b/stable/traefik/6.13.8/templates/ingressclass.yaml @@ -0,0 +1,23 @@ +{{- if and .Values.ingressClass.enabled (semverCompare ">=2.3.0" (default .Chart.AppVersion .Values.image.tag)) -}} + {{- 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 atleast networking.k8s.io/v1beta1 to use ingressClass" }} + {{- end }} +kind: IngressClass +metadata: + annotations: + ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + name: {{ template "traefik.fullname" . }} +spec: + controller: traefik.io/ingress-controller +{{- end }} diff --git a/stable/traefik/6.13.8/templates/poddisruptionbudget.yaml b/stable/traefik/6.13.8/templates/poddisruptionbudget.yaml new file mode 100644 index 0000000000..9893e52175 --- /dev/null +++ b/stable/traefik/6.13.8/templates/poddisruptionbudget.yaml @@ -0,0 +1,22 @@ +{{- if .Values.podDisruptionBudget.enabled -}} +apiVersion: policy/v1beta1 +kind: PodDisruptionBudget +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + selector: + matchLabels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.podDisruptionBudget.minAvailable | int }} + {{- end }} + {{- if .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable | int }} + {{- end }} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/rbac/clusterrole.yaml b/stable/traefik/6.13.8/templates/rbac/clusterrole.yaml new file mode 100644 index 0000000000..2c63e00641 --- /dev/null +++ b/stable/traefik/6.13.8/templates/rbac/clusterrole.yaml @@ -0,0 +1,112 @@ +{{- if and .Values.rbac.enabled (not .Values.rbac.namespaced) -}} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +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 + - tlsoptions + - tlsstores + - traefikservices + - serverstransports + verbs: + - get + - list + - watch +{{- if .Values.podSecurityPolicy.enabled }} + - apiGroups: + - policy + resourceNames: + - {{ template "traefik.fullname" . }} + resources: + - podsecuritypolicies + verbs: + - use +{{- end -}} +{{- if .Values.experimental.kubernetesGateway.enabled }} + - apiGroups: + - networking.x-k8s.io + resources: + - gatewayclasses + - gatewayclasses/status + - gateways + verbs: + - get + - list + - watch + - apiGroups: + - networking.x-k8s.io + resources: + - gatewayclasses/status + verbs: + - get + - patch + - update + - apiGroups: + - networking.x-k8s.io + resources: + - gateways/status + verbs: + - get + - patch + - update + - apiGroups: + - networking.x-k8s.io + resources: + - httproutes + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - networking.x-k8s.io + resources: + - httproutes/status + verbs: + - get + - patch + - update +{{- end -}} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/rbac/clusterrolebinding.yaml b/stable/traefik/6.13.8/templates/rbac/clusterrolebinding.yaml new file mode 100644 index 0000000000..509e92ff2b --- /dev/null +++ b/stable/traefik/6.13.8/templates/rbac/clusterrolebinding.yaml @@ -0,0 +1,19 @@ +{{- if and .Values.rbac.enabled (not .Values.rbac.namespaced) }} +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "traefik.fullname" . }} +subjects: + - kind: ServiceAccount + name: {{ include "traefik.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/rbac/podsecuritypolicy.yaml b/stable/traefik/6.13.8/templates/rbac/podsecuritypolicy.yaml new file mode 100644 index 0000000000..66bc1458d5 --- /dev/null +++ b/stable/traefik/6.13.8/templates/rbac/podsecuritypolicy.yaml @@ -0,0 +1,68 @@ +{{- if .Values.podSecurityPolicy.enabled }} +--- +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: runtime/default + seccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + privileged: false + allowPrivilegeEscalation: false + requiredDropCapabilities: + - ALL +{{- if not .Values.securityContext.runAsNonRoot }} + allowedCapabilities: + - NET_BIND_SERVICE +{{- end }} + hostNetwork: {{ .Values.hostNetwork }} + hostIPC: false + hostPID: false + fsGroup: +{{- if .Values.securityContext.runAsNonRoot }} + ranges: + - max: 65535 + min: 1 + rule: MustRunAs +{{- else }} + rule: RunAsAny +{{- end }} +{{- if .Values.hostNetwork }} + hostPorts: + - max: 65535 + min: 1 +{{- end }} + readOnlyRootFilesystem: true + runAsUser: +{{- if .Values.securityContext.runAsNonRoot }} + rule: MustRunAsNonRoot +{{- else }} + rule: RunAsAny +{{- end }} + seLinux: + rule: RunAsAny + supplementalGroups: +{{- if .Values.securityContext.runAsNonRoot }} + ranges: + - max: 65535 + min: 1 + rule: MustRunAs +{{- else }} + rule: RunAsAny +{{- end }} + volumes: + - configMap + - downwardAPI + - secret + - emptyDir + - projected +{{- if .Values.persistence.enabled }} + - persistentVolumeClaim +{{- end -}} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/rbac/role.yaml b/stable/traefik/6.13.8/templates/rbac/role.yaml new file mode 100644 index 0000000000..6c763065d6 --- /dev/null +++ b/stable/traefik/6.13.8/templates/rbac/role.yaml @@ -0,0 +1,61 @@ +{{- if and .Values.rbac.enabled .Values.rbac.namespaced }} +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +rules: + - apiGroups: + - "" + resources: + - services + - endpoints + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - extensions + resources: + - ingresses + verbs: + - get + - list + - watch + - apiGroups: + - extensions + resources: + - ingresses/status + verbs: + - update + - apiGroups: + - traefik.containo.us + resources: + - ingressroutes + - ingressroutetcps + - ingressrouteudps + - middlewares + - tlsoptions + - tlsstores + - traefikservices + - serverstransports + verbs: + - get + - list + - watch +{{- if .Values.podSecurityPolicy.enabled }} + - apiGroups: + - extensions + resourceNames: + - {{ template "traefik.fullname" . }} + resources: + - podsecuritypolicies + verbs: + - use +{{- end -}} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/rbac/rolebinding.yaml b/stable/traefik/6.13.8/templates/rbac/rolebinding.yaml new file mode 100644 index 0000000000..1041640186 --- /dev/null +++ b/stable/traefik/6.13.8/templates/rbac/rolebinding.yaml @@ -0,0 +1,19 @@ +{{- if and .Values.rbac.enabled .Values.rbac.namespaced }} +kind: RoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "traefik.fullname" . }} +subjects: + - kind: ServiceAccount + name: {{ include "traefik.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/rbac/serviceaccount.yaml b/stable/traefik/6.13.8/templates/rbac/serviceaccount.yaml new file mode 100644 index 0000000000..bcc941eec9 --- /dev/null +++ b/stable/traefik/6.13.8/templates/rbac/serviceaccount.yaml @@ -0,0 +1,15 @@ +{{- if not .Values.serviceAccount.name -}} +kind: ServiceAccount +apiVersion: v1 +metadata: + name: {{ include "traefik.serviceAccountName" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + annotations: + {{- with .Values.serviceAccountAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/service.yaml b/stable/traefik/6.13.8/templates/service.yaml new file mode 100644 index 0000000000..745bb9102d --- /dev/null +++ b/stable/traefik/6.13.8/templates/service.yaml @@ -0,0 +1,114 @@ +{{- if .Values.service.enabled -}} + +{{ $tcpPorts := dict }} +{{ $udpPorts := dict }} +{{- range $name, $config := .Values.ports }} + {{- if eq (toString $config.protocol) "UDP" }} + {{ $_ := set $udpPorts $name $config }} + {{- else }} + {{ $_ := set $tcpPorts $name $config }} + {{- end }} +{{- end }} + +apiVersion: v1 +kind: List +metadata: + name: {{ template "traefik.fullname" . }} +items: +{{- if $tcpPorts }} + - apiVersion: v1 + kind: Service + metadata: + name: {{ template "traefik.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.service.labels }} + {{- toYaml . | nindent 8 }} + {{- end }} + annotations: + {{- with .Values.service.annotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- $type := default "LoadBalancer" .Values.service.type }} + type: {{ $type }} + {{- with .Values.service.spec }} + {{- toYaml . | nindent 6 }} + {{- end }} + selector: + app.kubernetes.io/name: {{ template "traefik.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + ports: + {{- range $name, $config := $tcpPorts }} + {{- if $config.expose }} + - port: {{ default $config.port $config.exposedPort }} + name: {{ $name }} + targetPort: {{ $name | quote }} + protocol: {{ default "TCP" $config.protocol | quote }} + {{- if $config.nodePort }} + nodePort: {{ $config.nodePort }} + {{- end }} + {{- end }} + {{- end }} + {{- if eq $type "LoadBalancer" }} + {{- with .Values.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- toYaml . | nindent 6 }} + {{- end -}} + {{- end -}} + {{- with .Values.service.externalIPs }} + externalIPs: + {{- toYaml . | nindent 6 }} + {{- end -}} +{{- end }} + +{{- if $udpPorts }} + - apiVersion: v1 + kind: Service + metadata: + name: {{ template "traefik.fullname" . }}-udp + labels: + app.kubernetes.io/name: {{ template "traefik.name" . }} + helm.sh/chart: {{ template "traefik.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + annotations: + {{- with .Values.service.annotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- $type := default "LoadBalancer" .Values.service.type }} + type: {{ $type }} + {{- with .Values.service.spec }} + {{- toYaml . | nindent 6 }} + {{- end }} + selector: + app.kubernetes.io/name: {{ template "traefik.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + ports: + {{- range $name, $config := $udpPorts }} + {{- if $config.expose }} + - port: {{ default $config.port $config.exposedPort }} + name: {{ $name }} + targetPort: {{ $name | quote }} + protocol: {{ default "UDP" $config.protocol | quote }} + {{- if $config.nodePort }} + nodePort: {{ $config.nodePort }} + {{- end }} + {{- end }} + {{- end }} + {{- if eq $type "LoadBalancer" }} + {{- with .Values.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- toYaml . | nindent 6 }} + {{- end -}} + {{- end -}} + {{- with .Values.service.externalIPs }} + externalIPs: + {{- toYaml . | nindent 6 }} + {{- end -}} +{{- end }} +{{- end -}} diff --git a/stable/traefik/6.13.8/templates/tlsoption.yaml b/stable/traefik/6.13.8/templates/tlsoption.yaml new file mode 100644 index 0000000000..ec46e8bbc9 --- /dev/null +++ b/stable/traefik/6.13.8/templates/tlsoption.yaml @@ -0,0 +1,14 @@ +{{- range $name, $config := .Values.tlsOptions }} +apiVersion: traefik.containo.us/v1alpha1 +kind: TLSOption +metadata: + name: {{ $name }} + labels: + app.kubernetes.io/name: {{ template "traefik.name" $ }} + helm.sh/chart: {{ template "traefik.chart" $ }} + app.kubernetes.io/managed-by: {{ $.Release.Service }} + app.kubernetes.io/instance: {{ $.Release.Name }} +spec: + {{- toYaml $config | nindent 2 }} +--- +{{- end -}} diff --git a/stable/traefik/6.13.8/test_values.yaml b/stable/traefik/6.13.8/test_values.yaml new file mode 100644 index 0000000000..1fc81411b7 --- /dev/null +++ b/stable/traefik/6.13.8/test_values.yaml @@ -0,0 +1,438 @@ +# Default values for Traefik +image: + repository: traefik + # defaults to appVersion + tag: v2.4 + pullPolicy: IfNotPresent + +# +# Configure the deployment +# +deployment: + enabled: true + # Can be either Deployment or DaemonSet + kind: Deployment + # Number of pods of the deployment (only applies when kind == Deployment) + replicas: 1 + # Additional deployment annotations (e.g. for jaeger-operator sidecar injection) + annotations: {} + # Additional deployment labels (e.g. for filtering deployment by custom labels) + labels: {} + # Additional pod annotations (e.g. for mesh injection or prometheus scraping) + podAnnotations: {} + # Additional Pod labels (e.g. for filtering Pod by custom labels) + podLabels: {} + # Additional containers (e.g. for metric offloading sidecars) + additionalContainers: [] + # https://docs.datadoghq.com/developers/dogstatsd/unix_socket/?tab=host + # - name: socat-proxy + # image: alpine/socat:1.0.5 + # args: ["-s", "-u", "udp-recv:8125", "unix-sendto:/socket/socket"] + # volumeMounts: + # - name: dsdsocket + # mountPath: /socket + # Additional volumes available for use with initContainers and additionalContainers + additionalVolumes: [] + # - name: dsdsocket + # hostPath: + # path: /var/run/statsd-exporter + # Additional initContainers (e.g. for setting file permission as shown below) + initContainers: [] + # The "volume-permissions" init container is required if you run into permission issues. + # Related issue: https://github.com/traefik/traefik/issues/6972 + # - name: volume-permissions + # image: busybox:1.31.1 + # command: ["sh", "-c", "chmod -Rv 600 /data/*"] + # volumeMounts: + # - name: data + # mountPath: /data + # Custom pod DNS policy. Apply if `hostNetwork: true` + # dnsPolicy: ClusterFirstWithHostNet + # Additional imagePullSecrets + imagePullSecrets: [] + # - name: myRegistryKeySecretName + +# Pod disruption budget +podDisruptionBudget: + enabled: false + # maxUnavailable: 1 + # minAvailable: 0 + +# 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: + +# Activate Pilot integration +pilot: + enabled: false + token: "" + # Toggle Pilot Dashboard + # dashboard: false + +# Enable experimental features +experimental: + plugins: + enabled: false + kubernetesGateway: + enabled: false + appLabelSelector: "traefik" + certificates: [] + # - group: "core" + # kind: "Secret" + # name: "mysecret" + +# 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: {} + +rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 + + +# +# 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: false + # Published Kubernetes Service to copy status from. Format: namespace/servicename + # By default this Traefik service + # pathOverride: "" + +# +# Add volumes to the traefik pod. The volume name will be passed to tpl. +# This can be used to mount a cert pair or a configmap that holds a config.toml file. +# After the volume has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg: +# additionalArguments: +# - "--providers.file.filename=/config/dynamic.toml" +# - "--ping" +# - "--ping.entrypoint=web" +volumes: [] +# - name: public-cert +# mountPath: "/certs" +# type: secret +# - name: '{{ printf "%s-configs" .Release.Name }}' +# mountPath: "/config" +# type: configMap + +# Additional volumeMounts to add to the Traefik container +additionalVolumeMounts: [] + # For instance when using a logshipper for access logs + # - name: traefik-logs + # mountPath: /var/log/traefik + +# 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 logs use a text format (common), but you can + # also ask for the json format in the format option + # format: json + # By default, the level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO. + level: INFO + access: + # To enable access logs + enabled: false + # By default, logs are written using the Common Log Format (CLF). + # To write logs in JSON, use json in the format option. + # If the given format is unsupported, the default (CLF) is used instead. + # format: json + # 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 + +globalArguments: + - "--global.checknewversion" + +# +# Configure Traefik static configuration +# 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" + +# Environment variables to be passed to Traefik's binary +env: [] +# - name: SOME_VAR +# value: some-var-value +# - name: SOME_VAR_FROM_CONFIG_MAP +# valueFrom: +# configMapRef: +# name: configmap-name +# key: config-key +# - name: SOME_SECRET +# valueFrom: +# secretKeyRef: +# name: secret-name +# key: secret-key + +envFrom: [] +# - configMapRef: +# name: config-map-name +# - secretRef: +# name: secret-name + +# Configure ports +ports: + # The name of this one can't be changed as it is used for the readiness and + # liveness probes, but you can adjust its config to your liking + traefik: + port: 9000 + # Use hostPort if set. + # hostPort: 9000 + # + # Use hostIP if set. If not set, Kubernetes will default to 0.0.0.0, which + # means it's listening on all your interfaces and all your IPs. You may want + # to set this value if you need traefik to listen on specific interface + # only. + # hostIP: 192.168.100.10 + + # Defines whether the port is exposed if service.type is LoadBalancer or + # NodePort. + # + # You SHOULD NOT expose the traefik port on production deployments. + # If you want to access it from outside of your cluster, + # use `kubectl port-forward` or create a secure ingress + expose: false + # The exposed port for this service + exposedPort: 9000 + # The port protocol (TCP/UDP) + protocol: TCP + web: + port: 9080 + # hostPort: 8000 + expose: true + exposedPort: 80 + # The port protocol (TCP/UDP) + protocol: TCP + # Use nodeport if set. This is useful if you have configured Traefik in a + # LoadBalancer + # nodePort: 32080 + # Port Redirections + # Added in 2.2, you can make permanent redirects via entrypoints. + # https://docs.traefik.io/routing/entrypoints/#redirection + redirectTo: websecure + websecure: + port: 9443 + # hostPort: 8443 + expose: true + exposedPort: 443 + # The port protocol (TCP/UDP) + protocol: TCP + # nodePort: 32443 + # Set TLS at the entrypoint + # https://doc.traefik.io/traefik/routing/entrypoints/#tls + tls: + enabled: true + +# TLS Options are created as TLSOption CRDs +# https://doc.traefik.io/traefik/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. +service: + enabled: true + type: LoadBalancer + # Additional annotations (e.g. for cloud provider specific config) + annotations: {} + # Additional service labels (e.g. for filtering Service by custom labels) + labels: {} + # Additional entries here will be added to the service spec. Cannot contains + # type, selector or ports entries. + spec: {} + # externalTrafficPolicy: Cluster + # loadBalancerIP: "1.2.3.4" + # clusterIP: "2.3.4.5" + loadBalancerSourceRanges: [] + # - 192.168.0.1/32 + # - 172.16.0.0/16 + externalIPs: [] + # - 1.2.3.4 + +## Create HorizontalPodAutoscaler object. +## +autoscaling: + enabled: false +# minReplicas: 1 +# maxReplicas: 10 +# metrics: +# - type: Resource +# resource: +# name: cpu +# targetAverageUtilization: 60 +# - type: Resource +# resource: +# name: memory +# targetAverageUtilization: 60 + +# Enable persistence using Persistent Volume Claims +# ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ +# After the pvc has been mounted, add the configs into traefik by using the `additionalArguments` list below, eg: +# additionalArguments: +# - "--certificatesresolvers.le.acme.storage=/data/acme.json" +# It will persist TLS certificates. +persistence: + enabled: false + name: data + accessMode: ReadWriteOnce + size: 128Mi + path: /data + +# If hostNetwork is true, runs traefik in the host network namespace +# To prevent unschedulabel pods due to port collisions, if hostNetwork=true +# and replicas>1, a pod anti-affinity is recommended and will be set if the +# affinity is left as default. +hostNetwork: false + +# Whether Role Based Access Control objects like roles and rolebindings should be created +rbac: + enabled: true + + # If set to false, installs ClusterRole and ClusterRoleBinding so Traefik can be used across namespaces. + # If set to true, installs namespace-specific Role and RoleBinding and requires provider configuration be set to that same namespace + namespaced: false + +# Enable to create a PodSecurityPolicy and assign it to the Service Account via RoleBinding or ClusterRoleBinding +podSecurityPolicy: + enabled: false + +# The service account the pods will use to interact with the Kubernetes API +serviceAccount: + # If set, an existing service account is used + # If not set, a service account is created automatically using the fullname template + name: "" + +# Additional serviceAccount annotations (e.g. for oidc authentication) +serviceAccountAnnotations: {} + +resources: {} + # requests: + # cpu: "100m" + # memory: "50Mi" + # limits: + # cpu: "300m" + # memory: "150Mi" +affinity: {} +# # This example pod anti-affinity forces the scheduler to put traefik pods +# # on nodes where no other traefik pods are scheduled. +# # It should be used when hostNetwork: true to prevent port conflicts +# podAntiAffinity: +# requiredDuringSchedulingIgnoredDuringExecution: +# - labelSelector: +# matchExpressions: +# - key: app +# operator: In +# values: +# - {{ template "traefik.name" . }} +# topologyKey: failure-domain.beta.kubernetes.io/zone +nodeSelector: {} +tolerations: [] + +# Pods can have priority. +# Priority indicates the importance of a Pod relative to other Pods. +priorityClassName: "" + +# Set the container security context +# To run the container with ports below 1024 this will need to be adjust to run as root +securityContext: + capabilities: + drop: [ALL] + readOnlyRootFilesystem: true + runAsGroup: 65532 + runAsNonRoot: true + runAsUser: 65532 + +podSecurityContext: + fsGroup: 65532 + +## 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: [] + # middlewares: + # - name: compress + redirectScheme: [] + # scheme: https + # permanent: true + rateLimit: [] + # average: 300 + # burst: 200 + +portalhook: + enabled: true diff --git a/stable/traefik/6.13.8/values.yaml b/stable/traefik/6.13.8/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/stable/transmission/6.11.8/Chart.lock b/stable/transmission/6.11.8/Chart.lock index f8ca8e1824..2cb46e2cba 100644 --- a/stable/transmission/6.11.8/Chart.lock +++ b/stable/transmission/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:48.076081107Z" +generated: "2021-08-31T18:23:36.206735691Z" diff --git a/stable/truecommand/6.11.8/Chart.lock b/stable/truecommand/6.11.8/Chart.lock index 3a69a84750..92f32c6601 100644 --- a/stable/truecommand/6.11.8/Chart.lock +++ b/stable/truecommand/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:52.035857891Z" +generated: "2021-08-31T18:23:40.63552261Z" diff --git a/stable/tvheadend/7.11.8/Chart.lock b/stable/tvheadend/7.11.8/Chart.lock index 183bfd8eba..af97e25e4a 100644 --- a/stable/tvheadend/7.11.8/Chart.lock +++ b/stable/tvheadend/7.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:55.986082021Z" +generated: "2021-08-31T18:23:45.068798244Z" diff --git a/stable/unifi/6.11.8/Chart.lock b/stable/unifi/6.11.8/Chart.lock index 165284c6c2..e58e68d009 100644 --- a/stable/unifi/6.11.8/Chart.lock +++ b/stable/unifi/6.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:08:59.929265146Z" +generated: "2021-08-31T18:23:49.472162457Z" diff --git a/stable/unpackerr/1.11.8/Chart.lock b/stable/unpackerr/1.11.8/Chart.lock index e280989bc9..efbed7f653 100644 --- a/stable/unpackerr/1.11.8/Chart.lock +++ b/stable/unpackerr/1.11.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:09:03.962959966Z" +generated: "2021-08-31T18:23:53.996644012Z" diff --git a/stable/vaultwarden/6.1.0/CONFIG.md b/stable/vaultwarden/6.1.0/CONFIG.md new file mode 100644 index 0000000000..fc9b2fa2d5 --- /dev/null +++ b/stable/vaultwarden/6.1.0/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Internally" quick-start guide: +https://truecharts.org/manual/Quick-Start%20Guides/14-linking-apps/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/stable/vaultwarden/6.1.0/Chart.lock b/stable/vaultwarden/6.1.0/Chart.lock new file mode 100644 index 0000000000..9af9ad9249 --- /dev/null +++ b/stable/vaultwarden/6.1.0/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.12.1 +- name: postgresql + repository: https://truecharts.org/ + version: 1.5.1 +digest: sha256:8f143052e2c3c03042badc1bebcdd961d592c6863d53176fadf2a7b89044874f +generated: "2021-08-31T18:23:59.294858299Z" diff --git a/stable/vaultwarden/6.1.0/Chart.yaml b/stable/vaultwarden/6.1.0/Chart.yaml new file mode 100644 index 0000000000..3441e508ed --- /dev/null +++ b/stable/vaultwarden/6.1.0/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: auto +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.12.1 +- condition: postgresql.enabled + name: postgresql + repository: https://truecharts.org/ + version: 1.5.1 +deprecated: false +description: Unofficial Bitwarden compatible server written in Rust +home: https://github.com/truecharts/apps/tree/master/charts/stable/vaultwarden +icon: https://raw.githubusercontent.com/bitwarden/brand/master/icons/256x256.png +keywords: +- bitwarden +- bitwardenrs +- bitwarden_rs +- vaultwarden +- password +- rust +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: truecharts.org +- email: kjeld@schouten-lebbing.nl + name: Ornias1993 + url: truecharts.org +name: vaultwarden +sources: +- https://github.com/dani-garcia/vaultwarden +type: application +version: 6.1.0 diff --git a/stable/vaultwarden/6.1.0/README.md b/stable/vaultwarden/6.1.0/README.md new file mode 100644 index 0000000000..7e4c76a122 --- /dev/null +++ b/stable/vaultwarden/6.1.0/README.md @@ -0,0 +1,43 @@ +# Introduction + +![Version: 4.4.4](https://img.shields.io/badge/Version-4.4.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Unofficial Bitwarden compatible server written in Rust + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 6.10.7 | +| https://truecharts.org/ | postgresql | 1.2.4 | + +## Installing the Chart + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/03-Installing-an-App/). + +## Uninstalling the Chart + +To remove this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/07-Deleting-an-App/). + +## Support + +- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/) first. +- See the [Wiki](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/stable/vaultwarden/6.1.0/app-readme.md b/stable/vaultwarden/6.1.0/app-readme.md new file mode 100644 index 0000000000..badd081d74 --- /dev/null +++ b/stable/vaultwarden/6.1.0/app-readme.md @@ -0,0 +1,4 @@ +Unofficial Bitwarden compatible server written in Rust + +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Unofficial Bitwarden compatible server written in Rust diff --git a/stable/vaultwarden/6.1.0/charts/common-6.12.1.tgz b/stable/vaultwarden/6.1.0/charts/common-6.12.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7dacd3795f3c159b5a84150f46e24a9458b4d333 GIT binary patch literal 25243 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 literal 0 HcmV?d00001 diff --git a/stable/vaultwarden/6.1.0/charts/postgresql-1.5.1.tgz b/stable/vaultwarden/6.1.0/charts/postgresql-1.5.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8e827c8eff81247e723d1304eef80ec4ffb6a818 GIT binary patch literal 32168 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 literal 0 HcmV?d00001 diff --git a/stable/vaultwarden/6.1.0/ix_values.yaml b/stable/vaultwarden/6.1.0/ix_values.yaml new file mode 100644 index 0000000000..8a4b54a0a3 --- /dev/null +++ b/stable/vaultwarden/6.1.0/ix_values.yaml @@ -0,0 +1,55 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: vaultwarden/server + pullPolicy: IfNotPresent + tag: 1.22.2 + +envTpl: + DOMAIN: "https://{{ if .Values.ingress }}{{ if .Values.ingress.main.enabled }}{{ ( index .Values.ingress.main.hosts 0 ).host }}{{ else }}placeholder.com{{ end }}{{ else }}placeholder.com{{ end }}" + +envFrom: + - configMapRef: + name: vaultwardenconfig + - secretRef: + name: vaultwardensecret + + +envValueFrom: + DATABASE_URL: + secretKeyRef: + name: dbcreds + key: url + +database: + # Database type, must be one of: 'sqlite', 'mysql' or 'postgresql'. + type: postgresql + # Enable DB Write-Ahead-Log for SQLite, disabled for other databases. https://github.com/dani-garcia/bitwarden_rs/wiki/Running-without-WAL-enabled + wal: false + ## URL for external databases (mysql://user:pass@host:port or postgresql://user:pass@host:port). + # url: "" + ## Set the size of the database connection pool. + # maxConnections: 10 + ## Connection retries during startup, 0 for infinite. 1 second between retries. + retries: 30 + +# Enabled postgres +postgresql: + enabled: true + postgresqlUsername: vaultwarden + postgresqlDatabase: vaultwarden + existingSecret: dbcreds + persistence: + db: + storageClass: "SCALE-ZFS" + dbbackups: + storageClass: "SCALE-ZFS" + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/stable/vaultwarden/6.1.0/questions.yaml b/stable/vaultwarden/6.1.0/questions.yaml new file mode 100644 index 0000000000..4f1632e152 --- /dev/null +++ b/stable/vaultwarden/6.1.0/questions.yaml @@ -0,0 +1,1497 @@ +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: "Advanced" + description: "Advanced Configuration" +portals: + web_portal: + 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: controller + group: "Controller" + label: "" + schema: + type: dict + attrs: + - 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: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + 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: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + 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: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + + - variable: vaultwarden + label: "" + group: "App Configuration" + schema: + type: dict + attrs: + - variable: yubico + label: "Yubico OTP authentication" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable Yubico OTP authentication" + description: "Please refer to the manual at: https://github.com/dani-garcia/vaultwarden/wiki/Enabling-Yubikey-OTP-authentication" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: server + label: "Yubico server" + description: "Defaults to YubiCloud" + schema: + type: string + default: "" + - variable: clientId + label: "Yubico ID" + schema: + type: string + default: "" + - variable: secretKey + label: "Yubico Secret Key" + schema: + type: string + default: "" + - variable: admin + label: "Admin Portal" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable Admin Portal" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: disableAdminToken + label: "Make Accessible Without Password/Token" + schema: + type: boolean + default: false + - variable: token + label: "Admin Portal Password/Token" + description: "Will be automatically generated if not defined" + schema: + type: string + default: "" + - variable: icons + label: "Icon Download Settings" + schema: + type: dict + attrs: + - variable: disableDownload + label: "Disable Icon Download" + description: "Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache)" + schema: + type: boolean + default: false + - variable: cache + label: "Cache time-to-live" + description: "Cache time-to-live for icons fetched. 0 means no purging" + schema: + type: int + default: 2592000 + - variable: token + label: "Failed Downloads Cache time-to-live" + description: "Cache time-to-live for icons that were not available. 0 means no purging." + schema: + type: int + default: 2592000 + - variable: log + label: "Logging" + schema: + type: dict + attrs: + - variable: level + label: "Log level" + schema: + type: string + default: "info" + required: true + enum: + - value: "trace" + description: "trace" + - value: "debug" + description: "debug" + - value: "info" + description: "info" + - value: "warn" + description: "warn" + - value: "error" + description: "error" + - value: "off" + description: "off" + - variable: file + label: "Log-File Location" + schema: + type: string + default: "" + - variable: smtp + label: "SMTP Settings (Email)" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable SMTP Support" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: host + label: "SMTP hostname" + schema: + type: string + required: true + default: "" + - variable: from + label: "SMTP sender e-mail address" + schema: + type: string + required: true + default: "" + - variable: fromName + label: "SMTP sender name" + schema: + type: string + required: true + default: "" + - variable: user + label: "SMTP username" + schema: + type: string + required: true + default: "" + - variable: password + label: "SMTP password" + description: "Required is user is specified, ignored if no user provided" + schema: + type: string + default: "" + - variable: ssl + label: "Enable SSL connection" + schema: + type: boolean + default: true + - variable: port + label: "SMTP port" + description: "Usually: 25 without SSL, 587 with SSL" + schema: + type: int + default: 587 + - variable: authMechanism + label: "SMTP Authentication Mechanisms" + description: "Comma-separated options: Plain, Login and Xoauth2" + schema: + type: string + default: "Plain" + - variable: heloName + label: "SMTP HELO - Hostname" + description: "Hostname to be sent for SMTP HELO. Defaults to pod name" + schema: + type: string + default: "" + - variable: port + label: "SMTP timeout" + schema: + type: int + default: 15 + - variable: invalidHostname + label: "Accept Invalid Hostname" + description: "Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks!" + schema: + type: boolean + default: false + - variable: invalidCertificate + label: "Accept Invalid Certificate" + description: "Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks!" + schema: + type: boolean + default: false + - variable: allowSignups + label: "Allow Signup" + description: "Allow any user to sign-up: https://github.com/dani-garcia/vaultwarden/wiki/Disable-registration-of-new-users" + schema: + type: boolean + default: true + - variable: allowInvitation + label: "Always allow Invitation" + description: "Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/vaultwarden/wiki/Disable-invitations" + schema: + type: boolean + default: true + - variable: defaultInviteName + label: "Default Invite Organisation Name" + description: "Default organization name in invitation e-mails that are not coming from a specific organization." + schema: + type: string + default: "" + - variable: showPasswordHint + label: "Show password hints" + description: "https://github.com/dani-garcia/vaultwarden/wiki/Password-hint-display" + schema: + type: boolean + default: true + - variable: signupwhitelistenable + label: "Enable Signup Whitelist" + description: "allowSignups is ignored if set" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: signupDomains + label: "Signup Whitelist Domains" + schema: + type: list + default: [] + items: + - variable: domain + label: "Domain" + schema: + type: string + default: "" + - variable: verifySignup + label: "Verifiy Signup" + description: "Verify e-mail before login is enabled. SMTP must be enabled" + schema: + type: boolean + default: false + - variable: requireEmail + label: "Block Login if email fails" + description: "When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled" + schema: + type: boolean + default: false + - variable: emailAttempts + label: "Email token reset attempts" + description: "Maximum attempts before an email token is reset and a new email will need to be sent" + schema: + type: int + default: 3 + - variable: emailTokenExpiration + label: "Email token validity in seconds" + schema: + type: int + default: 600 + - variable: enableWebsockets + label: "Enable Websocket Connections" + description: "Enable Websockets for notification. https://github.com/dani-garcia/vaultwarden/wiki/Enabling-WebSocket-notifications" + schema: + type: boolean + default: true + hidden: true + - variable: enableWebVault + label: "Enable Webvault" + description: "Enable Web Vault (static content). https://github.com/dani-garcia/vaultwarden/wiki/Disabling-or-overriding-the-Vault-interface-hosting" + schema: + type: boolean + default: true + - variable: orgCreationUsers + label: "Limit Organisation Creation to (users)" + description: "Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users." + schema: + type: string + default: "all" + - variable: attachmentLimitOrg + label: "Limit Attachment Disk Usage per Organisation" + schema: + type: string + default: "" + - variable: attachmentLimitUser + label: "Limit Attachment Disk Usage per User" + schema: + type: string + default: "" + - variable: hibpApiKey + label: "HaveIBeenPwned API Key" + description: "Can be purchased at https://haveibeenpwned.com/API/Key" + schema: + type: string + default: "" + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: TZ + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: UMASK + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Configure Enviroment Variables + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: hostNetwork + group: "Networking and Services" + label: "Enable Host Networking" + schema: + type: boolean + default: false + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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: "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: "Service's Port(s) Configuration" + schema: + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: port + label: "Container Port" + schema: + type: int + default: 8080 + editable: true + 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 + default: 36000 + - variable: ws + label: "WebSocket Service" + description: "WebSocket Service" + schema: + 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: "ClusterIP" + 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: "Service's Port(s) Configuration" + schema: + type: dict + attrs: + - variable: ws + label: "WebSocket Service Port Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3012 + editable: false + hidden: true + - variable: port + label: "Container Port" + schema: + type: int + default: 3012 + editable: true + 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 + default: 36001 + + + - variable: serviceList + label: "Additional Services" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + 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: "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: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + 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: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + 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: "pvc" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - 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: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "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: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + 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: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + 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" + enum: + - value: "pvc" + description: "pvc" + - value: "emptyDir" + description: "emptyDir" + - value: "hostPath" + description: "hostPath" + - variable: storageClass + label: "(Advanced) storageClass" + description: " Warning: Anything other than SCALE-ZFS will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - 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: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: hostPathType + label: "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: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + required: true + default: "" + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "100Gi" + + - variable: ingress + label: "" + group: "Ingress" + schema: + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + 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: + 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: + 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: + 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: ingressList + label: "Additional Ingress" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + 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: + 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: + 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: + 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: + 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: + 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: + 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: securityContext + group: "Security and Permissions" + label: "Security Context" + schema: + 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: true + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - 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: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: resources + group: "Resources and Devices" + label: "" + schema: + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "2000m" + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "2Gi" + - variable: requests + label: "Advanced Request minimum resources required" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "10m" + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "50Mi" + + + - variable: autoscaling + group: "Resources and Devices" + label: "Horizontal Pod Autoscaler" + schema: + 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 diff --git a/stable/vaultwarden/6.1.0/templates/_configmap.tpl b/stable/vaultwarden/6.1.0/templates/_configmap.tpl new file mode 100644 index 0000000000..8809925abd --- /dev/null +++ b/stable/vaultwarden/6.1.0/templates/_configmap.tpl @@ -0,0 +1,116 @@ +{{/* Define the configmap */}} +{{- define "vaultwarden.configmap" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: vaultwardenconfig +data: + ROCKET_PORT: "8080" + SIGNUPS_ALLOWED: {{ .Values.vaultwarden.allowSignups | quote }} + {{- if .Values.vaultwarden.signupDomains }} + SIGNUPS_DOMAINS_WHITELIST: {{ join "," .Values.vaultwarden.signupDomains | quote }} + {{- end }} + {{- if and (eq .Values.vaultwarden.verifySignup true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Signup verification requires SMTP to be enabled" nil}}{{end}} + SIGNUPS_VERIFY: {{ .Values.vaultwarden.verifySignup | quote }} + {{- if and (eq .Values.vaultwarden.requireEmail true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Requiring emails for login depends on SMTP" nil}}{{end}} + REQUIRE_DEVICE_EMAIL: {{ .Values.vaultwarden.requireEmail | quote }} + {{- if .Values.vaultwarden.emailAttempts }} + EMAIL_ATTEMPTS_LIMIT: {{ .Values.vaultwarden.emailAttempts | quote }} + {{- end }} + {{- if .Values.vaultwarden.emailTokenExpiration }} + EMAIL_EXPIRATION_TIME: {{ .Values.vaultwarden.emailTokenExpiration | quote }} + {{- end }} + INVITATIONS_ALLOWED: {{ .Values.vaultwarden.allowInvitation | quote }} + {{- if .Values.vaultwarden.defaultInviteName }} + INVITATION_ORG_NAME: {{ .Values.vaultwarden.defaultInviteName | quote }} + {{- end }} + SHOW_PASSWORD_HINT: {{ .Values.vaultwarden.showPasswordHint | quote }} + WEBSOCKET_ENABLED: {{ .Values.vaultwarden.enableWebsockets | quote }} + WEB_VAULT_ENABLED: {{ .Values.vaultwarden.enableWebVault | quote }} + ORG_CREATION_USERS: {{ .Values.vaultwarden.orgCreationUsers | quote }} + {{- if .Values.vaultwarden.attachmentLimitOrg }} + ORG_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitOrg | quote }} + {{- end }} + {{- if .Values.vaultwarden.attachmentLimitUser }} + USER_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitUser | quote }} + {{- end }} + {{- if .Values.vaultwarden.hibpApiKey }} + HIBP_API_KEY: {{ .Values.vaultwarden.hibpApiKey | quote }} + {{- end }} + {{- include "vaultwarden.dbTypeValid" . }} + {{- if .Values.database.retries }} + DB_CONNECTION_RETRIES: {{ .Values.database.retries | quote }} + {{- end }} + {{- if .Values.database.maxConnections }} + DATABASE_MAX_CONNS: {{ .Values.database.maxConnections | quote }} + {{- end }} + {{- if eq .Values.vaultwarden.smtp.enabled true }} + SMTP_HOST: {{ required "SMTP host is required to enable SMTP" .Values.vaultwarden.smtp.host | quote }} + SMTP_FROM: {{ required "SMTP sender address ('from') is required to enable SMTP" .Values.vaultwarden.smtp.from | quote }} + {{- if .Values.vaultwarden.smtp.fromName }} + SMTP_FROM_NAME: {{ .Values.vaultwarden.smtp.fromName | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.ssl }} + SMTP_SSL: {{ .Values.vaultwarden.smtp.ssl | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.port }} + SMTP_PORT: {{ .Values.vaultwarden.smtp.port | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.authMechanism }} + SMTP_AUTH_MECHANISM: {{ .Values.vaultwarden.smtp.authMechanism | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.heloName }} + HELO_NAME: {{ .Values.vaultwarden.smtp.heloName | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.timeout }} + SMTP_TIMEOUT: {{ .Values.vaultwarden.smtp.timeout | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.invalidHostname }} + SMTP_ACCEPT_INVALID_HOSTNAMES: {{ .Values.vaultwarden.smtp.invalidHostname | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.invalidCertificate }} + SMTP_ACCEPT_INVALID_CERTS: {{ .Values.vaultwarden.smtp.invalidCertificate | quote }} + {{- end }} + {{- end }} + {{- if .Values.vaultwarden.log.file }} + LOG_FILE: {{ .Values.vaultwarden.log.file | quote }} + {{- end }} + {{- if or .Values.vaultwarden.log.level .Values.vaultwarden.log.timeFormat }} + EXTENDED_LOGGING: "true" + {{- end }} + {{- if .Values.vaultwarden.log.level }} + {{- include "vaultwarden.logLevelValid" . }} + LOG_LEVEL: {{ .Values.vaultwarden.log.level | quote }} + {{- end }} + {{- if .Values.vaultwarden.log.timeFormat }} + LOG_TIMESTAMP_FORMAT: {{ .Values.vaultwarden.log.timeFormat | quote }} + {{- end }} + {{- if .Values.vaultwarden.icons.disableDownload }} + DISABLE_ICON_DOWNLOAD: {{ .Values.vaultwarden.icons.disableDownload | quote }} + {{- if and (not .Values.vaultwarden.icons.cache) (eq .Values.vaultwarden.icons.disableDownload "true") }} + ICON_CACHE_TTL: "0" + {{- end }} + {{- end }} + {{- if .Values.vaultwarden.icons.cache }} + ICON_CACHE_TTL: {{ .Values.vaultwarden.icons.cache | quote }} + {{- end }} + {{- if .Values.vaultwarden.icons.cacheFailed }} + ICON_CACHE_NEGTTL: {{ .Values.vaultwarden.icons.cacheFailed | quote }} + {{- end }} + {{- if eq .Values.vaultwarden.admin.enabled true }} + {{- if eq .Values.vaultwarden.admin.disableAdminToken true }} + DISABLE_ADMIN_TOKEN: "true" + {{- end }} + {{- end }} + {{- if eq .Values.vaultwarden.yubico.enabled true }} + {{- if .Values.vaultwarden.yubico.server }} + YUBICO_SERVER: {{ .Values.vaultwarden.yubico.server | quote }} + {{- end }} + {{- end }} + {{- if eq .Values.database.type "sqlite" }} + ENABLE_DB_WAL: {{ .Values.database.wal | quote }} + {{- else }} + ENABLE_DB_WAL: "false" + {{- end }} +{{- end -}} diff --git a/stable/vaultwarden/6.1.0/templates/_secrets.tpl b/stable/vaultwarden/6.1.0/templates/_secrets.tpl new file mode 100644 index 0000000000..6a7bf408bb --- /dev/null +++ b/stable/vaultwarden/6.1.0/templates/_secrets.tpl @@ -0,0 +1,59 @@ +{{/* Define the secrets */}} +{{- define "vaultwarden.secrets" -}} + +{{- $adminToken := "" }} +{{- if eq .Values.vaultwarden.admin.enabled true }} +{{- $adminToken = .Values.vaultwarden.admin.token | default (randAlphaNum 48) | b64enc | quote }} +{{- end -}} + +{{- $smtpUser := "" }} +{{- if and (eq .Values.vaultwarden.smtp.enabled true ) (.Values.vaultwarden.smtp.user) }} +{{- $smtpUser = .Values.vaultwarden.smtp.user | b64enc | quote }} +{{- end -}} + +{{- $yubicoClientId := "" }} +{{- if eq .Values.vaultwarden.yubico.enabled true }} +{{- $yubicoClientId = required "Yubico Client ID required" .Values.vaultwarden.yubico.clientId | toString | b64enc | quote }} +{{- end -}} +--- + +apiVersion: v1 +kind: Secret +metadata: + name: vaultwardensecret +data: + {{- if ne $adminToken "" }} + ADMIN_TOKEN: {{ $adminToken }} + {{- end }} + {{- if ne $smtpUser "" }} + SMTP_USERNAME: {{ $smtpUser }} + SMTP_PASSWORD: {{ required "Must specify SMTP password" .Values.vaultwarden.smtp.password | b64enc | quote }} + {{- end }} + {{- if ne $yubicoClientId "" }} + YUBICO_CLIENT_ID: {{ $yubicoClientId }} + YUBICO_SECRET_KEY: {{ required "Yubico Secret Key required" .Values.vaultwarden.yubico.secretKey | b64enc | quote }} + {{- end }} + +--- + +apiVersion: v1 +kind: Secret +metadata: + labels: + {{- include "common.labels" . | nindent 4 }} + name: dbcreds +{{- $previous := lookup "v1" "Secret" .Release.Namespace "dbcreds" }} +{{- $dbPass := "" }} +data: +{{- if $previous }} + {{- $dbPass = ( index $previous.data "postgresql-password" ) | b64dec }} + postgresql-password: {{ ( index $previous.data "postgresql-password" ) }} + postgresql-postgres-password: {{ ( index $previous.data "postgresql-postgres-password" ) }} +{{- else }} + {{- $dbPass = randAlphaNum 50 }} + postgresql-password: {{ $dbPass | b64enc | quote }} + postgresql-postgres-password: {{ randAlphaNum 50 | b64enc | quote }} +{{- end }} + url: {{ ( printf "%v%v:%v@%v-%v:%v/%v" "postgresql://" .Values.postgresql.postgresqlUsername $dbPass .Release.Name "postgresql" "5432" .Values.postgresql.postgresqlDatabase ) | b64enc | quote }} +type: Opaque +{{- end -}} diff --git a/stable/vaultwarden/6.1.0/templates/_validate.tpl b/stable/vaultwarden/6.1.0/templates/_validate.tpl new file mode 100644 index 0000000000..e4832c2f6e --- /dev/null +++ b/stable/vaultwarden/6.1.0/templates/_validate.tpl @@ -0,0 +1,17 @@ +{{/* +Ensure valid DB type is select, defaults to SQLite +*/}} +{{- define "vaultwarden.dbTypeValid" -}} +{{- if not (or (eq .Values.database.type "postgresql") (eq .Values.database.type "mysql") (eq .Values.database.type "sqlite")) }} +{{- required "Invalid database type" nil }} +{{- end -}} +{{- end -}} + +{{/* +Ensure log type is valid +*/}} +{{- define "vaultwarden.logLevelValid" -}} +{{- if not (or (eq .Values.vaultwarden.log.level "trace") (eq .Values.vaultwarden.log.level "debug") (eq .Values.vaultwarden.log.level "info") (eq .Values.vaultwarden.log.level "warn") (eq .Values.vaultwarden.log.level "error") (eq .Values.vaultwarden.log.level "off")) }} +{{- required "Invalid log level" nil }} +{{- end }} +{{- end }} diff --git a/stable/vaultwarden/6.1.0/templates/common.yaml b/stable/vaultwarden/6.1.0/templates/common.yaml new file mode 100644 index 0000000000..74f04d2d8c --- /dev/null +++ b/stable/vaultwarden/6.1.0/templates/common.yaml @@ -0,0 +1,11 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Render the templates */}} +{{ include "common.all" . }} + +{{/* Render configmap for vaultwarden */}} +{{- include "vaultwarden.configmap" . }} + +{{/* Render secrets for vaultwarden */}} +{{- include "vaultwarden.secrets" . }} diff --git a/stable/vaultwarden/6.1.0/test_values.yaml b/stable/vaultwarden/6.1.0/test_values.yaml new file mode 100644 index 0000000000..9cfc0aa76a --- /dev/null +++ b/stable/vaultwarden/6.1.0/test_values.yaml @@ -0,0 +1,161 @@ +# Default values for Bitwarden. + +image: + repository: vaultwarden/server + pullPolicy: IfNotPresent + tag: 1.22.2 + +strategy: + type: Recreate + +service: + main: + ports: + main: + port: 8080 + ws: + ports: + ws: + enabled: true + port: 3012 + +env: {} + +envTpl: + DOMAIN: "https://{{ if .Values.ingress }}{{ if .Values.ingress.main.enabled }}{{ ( index .Values.ingress.main.hosts 0 ).host }}{{ else }}placeholder.com{{ end }}{{ else }}placeholder.com{{ end }}" + +envFrom: + - configMapRef: + name: vaultwardenconfig + - secretRef: + name: vaultwardensecret + +envValueFrom: + DATABASE_URL: + secretKeyRef: + name: dbcreds + key: url + +database: + # Database type, must be one of: 'sqlite', 'mysql' or 'postgresql'. + type: postgresql + # Enable DB Write-Ahead-Log for SQLite, disabled for other databases. https://github.com/dani-garcia/bitwarden_rs/wiki/Running-without-WAL-enabled + wal: true + ## URL for external databases (mysql://user:pass@host:port or postgresql://user:pass@host:port). + # url: "" + ## Set the size of the database connection pool. + # maxConnections: 10 + ## Connection retries during startup, 0 for infinite. 1 second between retries. + # retries: 15 + +# Set Bitwarden_rs application variables +vaultwarden: + # Allow any user to sign-up: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-registration-of-new-users + allowSignups: true + ## Whitelist domains allowed to sign-up. 'allowSignups' is ignored if set. + # signupDomains: + # - domain.tld + # Verify e-mail before login is enabled. SMTP must be enabled. + verifySignup: false + # When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled. + requireEmail: false + ## Maximum attempts before an email token is reset and a new email will need to be sent. + # emailAttempts: 3 + ## Email token validity in seconds. + # emailTokenExpiration: 600 + # Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-invitations + allowInvitation: true + # Show password hints: https://github.com/dani-garcia/bitwarden_rs/wiki/Password-hint-display + ## Default organization name in invitation e-mails that are not coming from a specific organization. + # defaultInviteName: "" + showPasswordHint: true + # Enable Websockets for notification. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-WebSocket-notifications + # Redirect HTTP path "/notifications/hub" to port 3012. Ingress/IngressRoute controllers are automatically configured. + enableWebsockets: true + # Enable Web Vault (static content). https://github.com/dani-garcia/bitwarden_rs/wiki/Disabling-or-overriding-the-Vault-interface-hosting + enableWebVault: true + # Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users. + orgCreationUsers: all + ## Limit attachment disk usage per organization. + # attachmentLimitOrg: + ## Limit attachment disk usage per user. + # attachmentLimitUser: + ## HaveIBeenPwned API Key. Can be purchased at https://haveibeenpwned.com/API/Key. + # hibpApiKey: + + admin: + # Enable admin portal. + enabled: false + # Disabling the admin token will make the admin portal accessible to anyone, use carefully: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-admin-token + disableAdminToken: false + ## Token for admin login, will be generated if not defined. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-admin-page + # token: + + # Enable SMTP. https://github.com/dani-garcia/bitwarden_rs/wiki/SMTP-configuration + smtp: + enabled: false + # SMTP hostname, required if SMTP is enabled. + host: "" + # SMTP sender e-mail address, required if SMTP is enabled. + from: "" + ## SMTP sender name, defaults to 'Bitwarden_RS'. + # fromName: "" + ## Enable SSL connection. + # ssl: true + ## SMTP port. Defaults to 25 without SSL, 587 with SSL. + # port: 587 + ## SMTP Authentication Mechanisms. Comma-separated options: 'Plain', 'Login' and 'Xoauth2'. Defaults to 'Plain'. + # authMechanism: Plain + ## Hostname to be sent for SMTP HELO. Defaults to pod name. + # heloName: "" + ## SMTP timeout. + # timeout: 15 + ## Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks! + # invalidHostname: false + ## Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks! + # invalidCertificate: false + ## SMTP username. + # user: "" + ## SMTP password. Required is user is specified, ignored if no user provided. + # password: "" + + ## Enable Yubico OTP authentication. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-Yubikey-OTP-authentication + yubico: + enabled: false + ## Yubico server. Defaults to YubiCloud. + # server: + ## Yubico ID and Secret Key. + # clientId: + # secretKey: + + ## Logging options. https://github.com/dani-garcia/bitwarden_rs/wiki/Logging + log: + # Log to file. + file: "" + # Log level. Options are "trace", "debug", "info", "warn", "error" or "off". + level: "trace" + ## Log timestamp format. See https://docs.rs/chrono/0.4.15/chrono/format/strftime/index.html. Defaults to time in milliseconds. + # timeFormat: "" + + icons: + # Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache). TTL will default to zero. + disableDownload: false + ## Cache time-to-live for icons fetched. 0 means no purging. + # cache: 2592000 + ## Cache time-to-live for icons that were not available. 0 means no purging. + # cacheFailed: 259200 + +persistence: + data: + enabled: true + mountPath: "/data" + type: pvc + accessMode: ReadWriteOnce + size: "100Gi" + +# Enabled postgres +postgresql: + enabled: true + postgresqlUsername: vaultwarden + postgresqlDatabase: vaultwarden + existingSecret: dbcreds diff --git a/stable/vaultwarden/6.1.0/values.yaml b/stable/vaultwarden/6.1.0/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/stable/xteve/1.9.8/Chart.lock b/stable/xteve/1.9.8/Chart.lock index 45eac9519b..11c4290cca 100644 --- a/stable/xteve/1.9.8/Chart.lock +++ b/stable/xteve/1.9.8/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org version: 6.12.2 digest: sha256:1f100433fb6030b1b7a9e6ea6a4f3fe2333270eb30261b851bbf95ec6ec1b89f -generated: "2021-08-31T18:09:13.800266226Z" +generated: "2021-08-31T18:24:04.696907588Z" diff --git a/stable/zwavejs2mqtt/6.11.9/Chart.lock b/stable/zwavejs2mqtt/6.11.9/Chart.lock index 82d62f74dc..c5cabdf05c 100644 --- a/stable/zwavejs2mqtt/6.11.9/Chart.lock +++ b/stable/zwavejs2mqtt/6.11.9/Chart.lock @@ -3,4 +3,4 @@ dependencies: repository: https://truecharts.org/ version: 6.12.2 digest: sha256:2328d590b204d8dee6aba8209ff24261bd23f16f1c895e874e85573d592fa218 -generated: "2021-08-31T18:09:17.936016912Z" +generated: "2021-08-31T18:24:09.356685805Z"