From 28686ea4e20ed3ab146f782d940e9fee0ed2055f Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sat, 4 Sep 2021 05:11:55 +0000 Subject: [PATCH] Daily Prune Signed-off-by: TrueCharts-Bot --- incubator/jdownloader2/0.3.11/CONFIG.md | 8 - incubator/jdownloader2/0.3.11/Chart.lock | 6 - incubator/jdownloader2/0.3.11/Chart.yaml | 29 - incubator/jdownloader2/0.3.11/README.md | 39 - incubator/jdownloader2/0.3.11/app-readme.md | 4 - .../0.3.11/charts/common-6.12.4.tgz | Bin 28316 -> 0 bytes incubator/jdownloader2/0.3.11/helm-values.md | 40 - incubator/jdownloader2/0.3.11/ix_values.yaml | 21 - incubator/jdownloader2/0.3.11/questions.yaml | 1187 ----------------- .../jdownloader2/0.3.11/templates/common.yaml | 1 - .../jdownloader2/0.3.11/test_values.yaml | 50 - incubator/jdownloader2/0.3.11/values.yaml | 0 incubator/traefik/0.0.1/CONFIG.md | 8 - incubator/traefik/0.0.1/Chart.lock | 6 - incubator/traefik/0.0.1/Chart.yaml | 25 - incubator/traefik/0.0.1/README.md | 39 - incubator/traefik/0.0.1/app-readme.md | 4 - .../traefik/0.0.1/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.1/crds/ingressroute.yaml | 198 --- .../traefik/0.0.1/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.1/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.1/crds/middlewares.yaml | 563 -------- .../traefik/0.0.1/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.1/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.1/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.1/crds/tlsstores.yaml | 64 - .../traefik/0.0.1/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.1/helm-values.md | 50 - incubator/traefik/0.0.1/ix_values.yaml | 178 --- incubator/traefik/0.0.1/questions.yaml | 1142 ---------------- incubator/traefik/0.0.1/templates/_args.tpl | 141 -- .../traefik/0.0.1/templates/_helpers.tpl | 21 - .../traefik/0.0.1/templates/_ingressclass.tpl | 23 - .../traefik/0.0.1/templates/_ingressroute.tpl | 25 - .../traefik/0.0.1/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.1/templates/common.yaml | 23 - .../0.0.1/templates/middleware-namespace.yaml | 7 - .../middlewares/basic-middleware.yaml | 58 - .../templates/middlewares/basicauth.yaml | 29 - .../0.0.1/templates/middlewares/chain.yaml | 16 - .../templates/middlewares/forwardauth.yaml | 23 - .../templates/middlewares/ratelimit.yaml | 14 - .../templates/middlewares/redirectScheme.yaml | 14 - incubator/traefik/0.0.1/test_values.yaml | 319 ----- incubator/traefik/0.0.1/values.yaml | 0 incubator/traefik/0.0.10/CONFIG.md | 8 - incubator/traefik/0.0.10/Chart.lock | 6 - incubator/traefik/0.0.10/Chart.yaml | 25 - incubator/traefik/0.0.10/README.md | 39 - incubator/traefik/0.0.10/app-readme.md | 4 - .../traefik/0.0.10/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.10/crds/ingressroute.yaml | 198 --- .../traefik/0.0.10/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.10/crds/ingressrouteudp.yaml | 84 -- .../traefik/0.0.10/crds/middlewares.yaml | 563 -------- .../traefik/0.0.10/crds/middlewarestcp.yaml | 59 - .../0.0.10/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.10/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.10/crds/tlsstores.yaml | 64 - .../traefik/0.0.10/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.10/helm-values.md | 50 - incubator/traefik/0.0.10/ix_values.yaml | 181 --- incubator/traefik/0.0.10/questions.yaml | 1144 ---------------- incubator/traefik/0.0.10/templates/_args.tpl | 141 -- .../traefik/0.0.10/templates/_helpers.tpl | 21 - .../0.0.10/templates/_ingressclass.tpl | 24 - .../0.0.10/templates/_ingressroute.tpl | 25 - .../traefik/0.0.10/templates/_tlsoptions.tpl | 12 - .../traefik/0.0.10/templates/common.yaml | 23 - .../templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../0.0.10/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - .../traefik/0.0.10/templates/portalhook.yaml | 23 - incubator/traefik/0.0.10/test_values.yaml | 324 ----- incubator/traefik/0.0.10/values.yaml | 0 incubator/traefik/0.0.11/CONFIG.md | 8 - incubator/traefik/0.0.11/Chart.lock | 6 - incubator/traefik/0.0.11/Chart.yaml | 25 - incubator/traefik/0.0.11/README.md | 39 - incubator/traefik/0.0.11/app-readme.md | 4 - .../traefik/0.0.11/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.11/crds/ingressroute.yaml | 198 --- .../traefik/0.0.11/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.11/crds/ingressrouteudp.yaml | 84 -- .../traefik/0.0.11/crds/middlewares.yaml | 563 -------- .../traefik/0.0.11/crds/middlewarestcp.yaml | 59 - .../0.0.11/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.11/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.11/crds/tlsstores.yaml | 64 - .../traefik/0.0.11/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.11/helm-values.md | 50 - incubator/traefik/0.0.11/ix_values.yaml | 181 --- incubator/traefik/0.0.11/questions.yaml | 1144 ---------------- incubator/traefik/0.0.11/templates/_args.tpl | 141 -- .../traefik/0.0.11/templates/_helpers.tpl | 21 - .../0.0.11/templates/_ingressclass.tpl | 24 - .../0.0.11/templates/_ingressroute.tpl | 25 - .../traefik/0.0.11/templates/_tlsoptions.tpl | 12 - .../traefik/0.0.11/templates/common.yaml | 23 - .../templates/middleware-namespace.yaml | 7 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../0.0.11/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - .../traefik/0.0.11/templates/portalhook.yaml | 24 - incubator/traefik/0.0.11/test_values.yaml | 324 ----- incubator/traefik/0.0.11/values.yaml | 0 incubator/traefik/0.0.2/CONFIG.md | 8 - incubator/traefik/0.0.2/Chart.lock | 6 - incubator/traefik/0.0.2/Chart.yaml | 25 - incubator/traefik/0.0.2/README.md | 39 - incubator/traefik/0.0.2/app-readme.md | 4 - .../traefik/0.0.2/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.2/crds/ingressroute.yaml | 198 --- .../traefik/0.0.2/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.2/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.2/crds/middlewares.yaml | 563 -------- .../traefik/0.0.2/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.2/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.2/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.2/crds/tlsstores.yaml | 64 - .../traefik/0.0.2/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.2/helm-values.md | 50 - incubator/traefik/0.0.2/ix_values.yaml | 178 --- incubator/traefik/0.0.2/questions.yaml | 1142 ---------------- incubator/traefik/0.0.2/templates/_args.tpl | 141 -- .../traefik/0.0.2/templates/_helpers.tpl | 21 - .../traefik/0.0.2/templates/_ingressclass.tpl | 23 - .../traefik/0.0.2/templates/_ingressroute.tpl | 25 - .../traefik/0.0.2/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.2/templates/common.yaml | 23 - .../0.0.2/templates/middleware-namespace.yaml | 7 - .../middlewares/basic-middleware.yaml | 58 - .../templates/middlewares/basicauth.yaml | 29 - .../0.0.2/templates/middlewares/chain.yaml | 16 - .../templates/middlewares/forwardauth.yaml | 23 - .../templates/middlewares/ratelimit.yaml | 14 - .../templates/middlewares/redirectScheme.yaml | 14 - incubator/traefik/0.0.2/test_values.yaml | 319 ----- incubator/traefik/0.0.2/values.yaml | 0 incubator/traefik/0.0.3/CONFIG.md | 8 - incubator/traefik/0.0.3/Chart.lock | 6 - incubator/traefik/0.0.3/Chart.yaml | 25 - incubator/traefik/0.0.3/README.md | 39 - incubator/traefik/0.0.3/app-readme.md | 4 - .../traefik/0.0.3/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.3/crds/ingressroute.yaml | 198 --- .../traefik/0.0.3/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.3/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.3/crds/middlewares.yaml | 563 -------- .../traefik/0.0.3/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.3/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.3/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.3/crds/tlsstores.yaml | 64 - .../traefik/0.0.3/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.3/helm-values.md | 50 - incubator/traefik/0.0.3/ix_values.yaml | 178 --- incubator/traefik/0.0.3/questions.yaml | 1142 ---------------- incubator/traefik/0.0.3/templates/_args.tpl | 141 -- .../traefik/0.0.3/templates/_helpers.tpl | 21 - .../traefik/0.0.3/templates/_ingressclass.tpl | 15 - .../traefik/0.0.3/templates/_ingressroute.tpl | 25 - .../traefik/0.0.3/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.3/templates/common.yaml | 23 - .../0.0.3/templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 58 - .../templates/middlewares/basicauth.yaml | 29 - .../0.0.3/templates/middlewares/chain.yaml | 16 - .../templates/middlewares/forwardauth.yaml | 23 - .../templates/middlewares/ratelimit.yaml | 14 - .../templates/middlewares/redirectScheme.yaml | 14 - incubator/traefik/0.0.3/test_values.yaml | 320 ----- incubator/traefik/0.0.3/values.yaml | 0 incubator/traefik/0.0.4/CONFIG.md | 8 - incubator/traefik/0.0.4/Chart.lock | 6 - incubator/traefik/0.0.4/Chart.yaml | 25 - incubator/traefik/0.0.4/README.md | 39 - incubator/traefik/0.0.4/app-readme.md | 4 - .../traefik/0.0.4/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.4/crds/ingressroute.yaml | 198 --- .../traefik/0.0.4/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.4/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.4/crds/middlewares.yaml | 563 -------- .../traefik/0.0.4/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.4/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.4/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.4/crds/tlsstores.yaml | 64 - .../traefik/0.0.4/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.4/helm-values.md | 50 - incubator/traefik/0.0.4/ix_values.yaml | 178 --- incubator/traefik/0.0.4/questions.yaml | 1144 ---------------- incubator/traefik/0.0.4/templates/_args.tpl | 141 -- .../traefik/0.0.4/templates/_helpers.tpl | 21 - .../traefik/0.0.4/templates/_ingressclass.tpl | 15 - .../traefik/0.0.4/templates/_ingressroute.tpl | 25 - .../traefik/0.0.4/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.4/templates/common.yaml | 23 - .../0.0.4/templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 58 - .../templates/middlewares/basicauth.yaml | 29 - .../0.0.4/templates/middlewares/chain.yaml | 16 - .../templates/middlewares/forwardauth.yaml | 23 - .../templates/middlewares/ratelimit.yaml | 14 - .../templates/middlewares/redirectScheme.yaml | 14 - incubator/traefik/0.0.4/test_values.yaml | 320 ----- incubator/traefik/0.0.4/values.yaml | 0 incubator/traefik/0.0.5/CONFIG.md | 8 - incubator/traefik/0.0.5/Chart.lock | 6 - incubator/traefik/0.0.5/Chart.yaml | 25 - incubator/traefik/0.0.5/README.md | 39 - incubator/traefik/0.0.5/app-readme.md | 4 - .../traefik/0.0.5/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.5/crds/ingressroute.yaml | 198 --- .../traefik/0.0.5/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.5/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.5/crds/middlewares.yaml | 563 -------- .../traefik/0.0.5/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.5/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.5/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.5/crds/tlsstores.yaml | 64 - .../traefik/0.0.5/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.5/helm-values.md | 50 - incubator/traefik/0.0.5/ix_values.yaml | 178 --- incubator/traefik/0.0.5/questions.yaml | 1144 ---------------- incubator/traefik/0.0.5/templates/_args.tpl | 141 -- .../traefik/0.0.5/templates/_helpers.tpl | 21 - .../traefik/0.0.5/templates/_ingressclass.tpl | 15 - .../traefik/0.0.5/templates/_ingressroute.tpl | 25 - .../traefik/0.0.5/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.5/templates/common.yaml | 23 - .../0.0.5/templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 60 - .../templates/middlewares/basicauth.yaml | 31 - .../0.0.5/templates/middlewares/chain.yaml | 18 - .../templates/middlewares/forwardauth.yaml | 25 - .../templates/middlewares/ratelimit.yaml | 16 - .../templates/middlewares/redirectScheme.yaml | 16 - incubator/traefik/0.0.5/test_values.yaml | 321 ----- incubator/traefik/0.0.5/values.yaml | 0 incubator/traefik/0.0.6/CONFIG.md | 8 - incubator/traefik/0.0.6/Chart.lock | 6 - incubator/traefik/0.0.6/Chart.yaml | 25 - incubator/traefik/0.0.6/README.md | 39 - incubator/traefik/0.0.6/app-readme.md | 4 - .../traefik/0.0.6/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.6/crds/ingressroute.yaml | 198 --- .../traefik/0.0.6/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.6/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.6/crds/middlewares.yaml | 563 -------- .../traefik/0.0.6/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.6/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.6/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.6/crds/tlsstores.yaml | 64 - .../traefik/0.0.6/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.6/helm-values.md | 50 - incubator/traefik/0.0.6/ix_values.yaml | 178 --- incubator/traefik/0.0.6/questions.yaml | 1144 ---------------- incubator/traefik/0.0.6/templates/_args.tpl | 141 -- .../traefik/0.0.6/templates/_helpers.tpl | 21 - .../traefik/0.0.6/templates/_ingressclass.tpl | 15 - .../traefik/0.0.6/templates/_ingressroute.tpl | 25 - .../traefik/0.0.6/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.6/templates/common.yaml | 23 - .../0.0.6/templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../0.0.6/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - incubator/traefik/0.0.6/test_values.yaml | 321 ----- incubator/traefik/0.0.6/values.yaml | 0 incubator/traefik/0.0.7/CONFIG.md | 8 - incubator/traefik/0.0.7/Chart.lock | 6 - incubator/traefik/0.0.7/Chart.yaml | 25 - incubator/traefik/0.0.7/README.md | 39 - incubator/traefik/0.0.7/app-readme.md | 4 - .../traefik/0.0.7/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.7/crds/ingressroute.yaml | 198 --- .../traefik/0.0.7/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.7/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.7/crds/middlewares.yaml | 563 -------- .../traefik/0.0.7/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.7/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.7/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.7/crds/tlsstores.yaml | 64 - .../traefik/0.0.7/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.7/helm-values.md | 50 - incubator/traefik/0.0.7/ix_values.yaml | 178 --- incubator/traefik/0.0.7/questions.yaml | 1144 ---------------- incubator/traefik/0.0.7/templates/_args.tpl | 141 -- .../traefik/0.0.7/templates/_helpers.tpl | 21 - .../traefik/0.0.7/templates/_ingressclass.tpl | 24 - .../traefik/0.0.7/templates/_ingressroute.tpl | 25 - .../traefik/0.0.7/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.7/templates/common.yaml | 23 - .../0.0.7/templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../0.0.7/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - incubator/traefik/0.0.7/test_values.yaml | 321 ----- incubator/traefik/0.0.7/values.yaml | 0 incubator/traefik/0.0.8/CONFIG.md | 8 - incubator/traefik/0.0.8/Chart.lock | 6 - incubator/traefik/0.0.8/Chart.yaml | 25 - incubator/traefik/0.0.8/README.md | 39 - incubator/traefik/0.0.8/app-readme.md | 4 - .../traefik/0.0.8/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.8/crds/ingressroute.yaml | 198 --- .../traefik/0.0.8/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.8/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.8/crds/middlewares.yaml | 563 -------- .../traefik/0.0.8/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.8/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.8/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.8/crds/tlsstores.yaml | 64 - .../traefik/0.0.8/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.8/helm-values.md | 50 - incubator/traefik/0.0.8/ix_values.yaml | 181 --- incubator/traefik/0.0.8/questions.yaml | 1144 ---------------- incubator/traefik/0.0.8/templates/_args.tpl | 141 -- .../traefik/0.0.8/templates/_helpers.tpl | 21 - .../traefik/0.0.8/templates/_ingressclass.tpl | 24 - .../traefik/0.0.8/templates/_ingressroute.tpl | 25 - .../traefik/0.0.8/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.8/templates/common.yaml | 23 - .../0.0.8/templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../0.0.8/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - .../traefik/0.0.8/templates/portalhook.yaml | 23 - incubator/traefik/0.0.8/test_values.yaml | 324 ----- incubator/traefik/0.0.8/values.yaml | 0 incubator/traefik/0.0.9/CONFIG.md | 8 - incubator/traefik/0.0.9/Chart.lock | 6 - incubator/traefik/0.0.9/Chart.yaml | 25 - incubator/traefik/0.0.9/README.md | 39 - incubator/traefik/0.0.9/app-readme.md | 4 - .../traefik/0.0.9/charts/common-6.13.4.tgz | Bin 29057 -> 0 bytes .../traefik/0.0.9/crds/ingressroute.yaml | 198 --- .../traefik/0.0.9/crds/ingressroutetcp.yaml | 160 --- .../traefik/0.0.9/crds/ingressrouteudp.yaml | 84 -- incubator/traefik/0.0.9/crds/middlewares.yaml | 563 -------- .../traefik/0.0.9/crds/middlewarestcp.yaml | 59 - .../traefik/0.0.9/crds/serverstransports.yaml | 101 -- incubator/traefik/0.0.9/crds/tlsoptions.yaml | 87 -- incubator/traefik/0.0.9/crds/tlsstores.yaml | 64 - .../traefik/0.0.9/crds/traefikservices.yaml | 270 ---- incubator/traefik/0.0.9/helm-values.md | 50 - incubator/traefik/0.0.9/ix_values.yaml | 181 --- incubator/traefik/0.0.9/questions.yaml | 1144 ---------------- incubator/traefik/0.0.9/templates/_args.tpl | 141 -- .../traefik/0.0.9/templates/_helpers.tpl | 21 - .../traefik/0.0.9/templates/_ingressclass.tpl | 24 - .../traefik/0.0.9/templates/_ingressroute.tpl | 25 - .../traefik/0.0.9/templates/_tlsoptions.tpl | 12 - incubator/traefik/0.0.9/templates/common.yaml | 23 - .../0.0.9/templates/middleware-namespace.yaml | 10 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../0.0.9/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - .../traefik/0.0.9/templates/portalhook.yaml | 23 - incubator/traefik/0.0.9/test_values.yaml | 324 ----- incubator/traefik/0.0.9/values.yaml | 0 stable/jdownloader2/1.0.0/CONFIG.md | 8 - stable/jdownloader2/1.0.0/Chart.lock | 6 - stable/jdownloader2/1.0.0/Chart.yaml | 26 - stable/jdownloader2/1.0.0/README.md | 39 - stable/jdownloader2/1.0.0/app-readme.md | 4 - .../1.0.0/charts/common-6.13.5.tgz | Bin 29106 -> 0 bytes stable/jdownloader2/1.0.0/helm-values.md | 40 - stable/jdownloader2/1.0.0/ix_values.yaml | 21 - stable/jdownloader2/1.0.0/questions.yaml | 1187 ----------------- .../jdownloader2/1.0.0/templates/common.yaml | 1 - stable/jdownloader2/1.0.0/test_values.yaml | 50 - stable/jdownloader2/1.0.0/values.yaml | 0 stable/k8s-gateway/1.0.1/CONFIG.md | 8 - stable/k8s-gateway/1.0.1/Chart.lock | 6 - stable/k8s-gateway/1.0.1/Chart.yaml | 23 - stable/k8s-gateway/1.0.1/README.md | 37 - stable/k8s-gateway/1.0.1/app-readme.md | 4 - .../1.0.1/charts/common-6.13.3.tgz | Bin 28898 -> 0 bytes stable/k8s-gateway/1.0.1/helm-values.md | 63 - stable/k8s-gateway/1.0.1/ix_values.yaml | 110 -- stable/k8s-gateway/1.0.1/questions.yaml | 779 ----------- .../1.0.1/templates/_configmap.tpl | 63 - .../k8s-gateway/1.0.1/templates/common.yaml | 24 - stable/k8s-gateway/1.0.1/test_values.yaml | 115 -- stable/k8s-gateway/1.0.1/values.yaml | 0 stable/k8s-gateway/1.0.2/CONFIG.md | 8 - stable/k8s-gateway/1.0.2/Chart.lock | 6 - stable/k8s-gateway/1.0.2/Chart.yaml | 23 - stable/k8s-gateway/1.0.2/README.md | 37 - stable/k8s-gateway/1.0.2/app-readme.md | 4 - .../1.0.2/charts/common-6.13.3.tgz | Bin 28898 -> 0 bytes stable/k8s-gateway/1.0.2/helm-values.md | 63 - stable/k8s-gateway/1.0.2/ix_values.yaml | 110 -- stable/k8s-gateway/1.0.2/questions.yaml | 779 ----------- .../1.0.2/templates/_configmap.tpl | 63 - .../k8s-gateway/1.0.2/templates/common.yaml | 24 - stable/k8s-gateway/1.0.2/test_values.yaml | 115 -- stable/k8s-gateway/1.0.2/values.yaml | 0 stable/k8s-gateway/1.0.3/CONFIG.md | 8 - stable/k8s-gateway/1.0.3/Chart.lock | 6 - stable/k8s-gateway/1.0.3/Chart.yaml | 23 - stable/k8s-gateway/1.0.3/README.md | 37 - stable/k8s-gateway/1.0.3/app-readme.md | 4 - .../1.0.3/charts/common-6.13.3.tgz | Bin 28898 -> 0 bytes stable/k8s-gateway/1.0.3/helm-values.md | 63 - stable/k8s-gateway/1.0.3/ix_values.yaml | 110 -- stable/k8s-gateway/1.0.3/questions.yaml | 779 ----------- .../1.0.3/templates/_configmap.tpl | 64 - .../k8s-gateway/1.0.3/templates/common.yaml | 24 - stable/k8s-gateway/1.0.3/test_values.yaml | 115 -- stable/k8s-gateway/1.0.3/values.yaml | 0 stable/k8s-gateway/1.0.4/CONFIG.md | 8 - stable/k8s-gateway/1.0.4/Chart.lock | 6 - stable/k8s-gateway/1.0.4/Chart.yaml | 23 - stable/k8s-gateway/1.0.4/README.md | 37 - stable/k8s-gateway/1.0.4/app-readme.md | 4 - .../1.0.4/charts/common-6.13.3.tgz | Bin 28898 -> 0 bytes stable/k8s-gateway/1.0.4/helm-values.md | 63 - stable/k8s-gateway/1.0.4/ix_values.yaml | 110 -- stable/k8s-gateway/1.0.4/questions.yaml | 779 ----------- .../1.0.4/templates/_configmap.tpl | 64 - .../k8s-gateway/1.0.4/templates/common.yaml | 24 - stable/k8s-gateway/1.0.4/test_values.yaml | 115 -- stable/k8s-gateway/1.0.4/values.yaml | 0 stable/k8s-gateway/1.0.5/CONFIG.md | 8 - stable/k8s-gateway/1.0.5/Chart.lock | 6 - stable/k8s-gateway/1.0.5/Chart.yaml | 23 - stable/k8s-gateway/1.0.5/README.md | 37 - stable/k8s-gateway/1.0.5/app-readme.md | 4 - .../1.0.5/charts/common-6.13.3.tgz | Bin 28898 -> 0 bytes stable/k8s-gateway/1.0.5/helm-values.md | 63 - stable/k8s-gateway/1.0.5/ix_values.yaml | 110 -- stable/k8s-gateway/1.0.5/questions.yaml | 779 ----------- .../1.0.5/templates/_configmap.tpl | 64 - .../k8s-gateway/1.0.5/templates/common.yaml | 24 - stable/k8s-gateway/1.0.5/test_values.yaml | 115 -- stable/k8s-gateway/1.0.5/values.yaml | 0 stable/traefik/6.13.17/CONFIG.md | 8 - stable/traefik/6.13.17/Chart.lock | 6 - stable/traefik/6.13.17/Chart.yaml | 29 - stable/traefik/6.13.17/LICENSE | 202 --- stable/traefik/6.13.17/README.md | 39 - stable/traefik/6.13.17/app-readme.md | 4 - .../traefik/6.13.17/charts/common-6.12.4.tgz | Bin 28316 -> 0 bytes stable/traefik/6.13.17/crds/ingressroute.yaml | 12 - .../traefik/6.13.17/crds/ingressroutetcp.yaml | 12 - .../traefik/6.13.17/crds/ingressrouteudp.yaml | 13 - stable/traefik/6.13.17/crds/middlewares.yaml | 12 - .../6.13.17/crds/serverstransports.yaml | 12 - stable/traefik/6.13.17/crds/tlsoptions.yaml | 12 - stable/traefik/6.13.17/crds/tlsstores.yaml | 13 - .../traefik/6.13.17/crds/traefikservices.yaml | 12 - stable/traefik/6.13.17/helm-values.md | 124 -- stable/traefik/6.13.17/ix_values.yaml | 332 ----- stable/traefik/6.13.17/questions.yaml | 508 ------- stable/traefik/6.13.17/templates/_helpers.tpl | 62 - .../6.13.17/templates/_podtemplate.tpl | 265 ---- .../6.13.17/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.17/templates/custom/portal.yaml | 45 - .../6.13.17/templates/custom/portalhook.yaml | 12 - .../traefik/6.13.17/templates/daemonset.yaml | 40 - .../dashboard-hook-ingressroute.yaml | 28 - .../traefik/6.13.17/templates/deployment.yaml | 47 - stable/traefik/6.13.17/templates/gateway.yaml | 33 - .../6.13.17/templates/gatewayclass.yaml | 9 - stable/traefik/6.13.17/templates/hpa.yaml | 20 - .../6.13.17/templates/ingressclass.yaml | 23 - .../templates/poddisruptionbudget.yaml | 22 - .../6.13.17/templates/rbac/clusterrole.yaml | 112 -- .../templates/rbac/clusterrolebinding.yaml | 19 - .../templates/rbac/podsecuritypolicy.yaml | 68 - .../traefik/6.13.17/templates/rbac/role.yaml | 63 - .../6.13.17/templates/rbac/rolebinding.yaml | 19 - .../templates/rbac/serviceaccount.yaml | 15 - stable/traefik/6.13.17/templates/service.yaml | 114 -- .../traefik/6.13.17/templates/tlsoption.yaml | 14 - stable/traefik/6.13.17/test_values.yaml | 438 ------ stable/traefik/6.13.17/values.yaml | 0 stable/traefik/6.13.18/CONFIG.md | 8 - stable/traefik/6.13.18/Chart.lock | 6 - stable/traefik/6.13.18/Chart.yaml | 29 - stable/traefik/6.13.18/LICENSE | 202 --- stable/traefik/6.13.18/README.md | 39 - stable/traefik/6.13.18/app-readme.md | 4 - .../traefik/6.13.18/charts/common-6.12.4.tgz | Bin 28316 -> 0 bytes stable/traefik/6.13.18/crds/ingressroute.yaml | 12 - .../traefik/6.13.18/crds/ingressroutetcp.yaml | 12 - .../traefik/6.13.18/crds/ingressrouteudp.yaml | 13 - stable/traefik/6.13.18/crds/middlewares.yaml | 12 - .../6.13.18/crds/serverstransports.yaml | 12 - stable/traefik/6.13.18/crds/tlsoptions.yaml | 12 - stable/traefik/6.13.18/crds/tlsstores.yaml | 13 - .../traefik/6.13.18/crds/traefikservices.yaml | 12 - stable/traefik/6.13.18/helm-values.md | 124 -- stable/traefik/6.13.18/ix_values.yaml | 332 ----- stable/traefik/6.13.18/questions.yaml | 508 ------- stable/traefik/6.13.18/templates/_helpers.tpl | 62 - .../6.13.18/templates/_podtemplate.tpl | 265 ---- .../6.13.18/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.18/templates/custom/portal.yaml | 45 - .../6.13.18/templates/custom/portalhook.yaml | 12 - .../traefik/6.13.18/templates/daemonset.yaml | 40 - .../dashboard-hook-ingressroute.yaml | 28 - .../traefik/6.13.18/templates/deployment.yaml | 47 - stable/traefik/6.13.18/templates/gateway.yaml | 33 - .../6.13.18/templates/gatewayclass.yaml | 9 - stable/traefik/6.13.18/templates/hpa.yaml | 20 - .../6.13.18/templates/ingressclass.yaml | 23 - .../templates/poddisruptionbudget.yaml | 22 - .../6.13.18/templates/rbac/clusterrole.yaml | 112 -- .../templates/rbac/clusterrolebinding.yaml | 19 - .../templates/rbac/podsecuritypolicy.yaml | 68 - .../traefik/6.13.18/templates/rbac/role.yaml | 63 - .../6.13.18/templates/rbac/rolebinding.yaml | 19 - .../templates/rbac/serviceaccount.yaml | 15 - stable/traefik/6.13.18/templates/service.yaml | 114 -- .../traefik/6.13.18/templates/tlsoption.yaml | 14 - stable/traefik/6.13.18/test_values.yaml | 438 ------ stable/traefik/6.13.18/values.yaml | 0 stable/traefik/6.13.19/CONFIG.md | 8 - stable/traefik/6.13.19/Chart.lock | 6 - stable/traefik/6.13.19/Chart.yaml | 29 - stable/traefik/6.13.19/LICENSE | 202 --- stable/traefik/6.13.19/README.md | 39 - stable/traefik/6.13.19/app-readme.md | 4 - .../traefik/6.13.19/charts/common-6.12.4.tgz | Bin 28316 -> 0 bytes stable/traefik/6.13.19/crds/ingressroute.yaml | 12 - .../traefik/6.13.19/crds/ingressroutetcp.yaml | 12 - .../traefik/6.13.19/crds/ingressrouteudp.yaml | 13 - stable/traefik/6.13.19/crds/middlewares.yaml | 12 - .../6.13.19/crds/serverstransports.yaml | 12 - stable/traefik/6.13.19/crds/tlsoptions.yaml | 12 - stable/traefik/6.13.19/crds/tlsstores.yaml | 13 - .../traefik/6.13.19/crds/traefikservices.yaml | 12 - stable/traefik/6.13.19/helm-values.md | 124 -- stable/traefik/6.13.19/ix_values.yaml | 332 ----- stable/traefik/6.13.19/questions.yaml | 508 ------- stable/traefik/6.13.19/templates/_helpers.tpl | 62 - .../6.13.19/templates/_podtemplate.tpl | 265 ---- .../6.13.19/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.19/templates/custom/portal.yaml | 45 - .../6.13.19/templates/custom/portalhook.yaml | 12 - .../traefik/6.13.19/templates/daemonset.yaml | 40 - .../dashboard-hook-ingressroute.yaml | 28 - .../traefik/6.13.19/templates/deployment.yaml | 47 - stable/traefik/6.13.19/templates/gateway.yaml | 33 - .../6.13.19/templates/gatewayclass.yaml | 9 - stable/traefik/6.13.19/templates/hpa.yaml | 20 - .../6.13.19/templates/ingressclass.yaml | 23 - .../templates/poddisruptionbudget.yaml | 22 - .../6.13.19/templates/rbac/clusterrole.yaml | 112 -- .../templates/rbac/clusterrolebinding.yaml | 19 - .../templates/rbac/podsecuritypolicy.yaml | 68 - .../traefik/6.13.19/templates/rbac/role.yaml | 63 - .../6.13.19/templates/rbac/rolebinding.yaml | 19 - .../templates/rbac/serviceaccount.yaml | 15 - stable/traefik/6.13.19/templates/service.yaml | 114 -- .../traefik/6.13.19/templates/tlsoption.yaml | 14 - stable/traefik/6.13.19/test_values.yaml | 438 ------ stable/traefik/6.13.19/values.yaml | 0 stable/traefik/7.0.0/CONFIG.md | 8 - stable/traefik/7.0.0/Chart.lock | 6 - stable/traefik/7.0.0/Chart.yaml | 25 - stable/traefik/7.0.0/README.md | 39 - stable/traefik/7.0.0/app-readme.md | 4 - stable/traefik/7.0.0/charts/common-6.13.6.tgz | Bin 29078 -> 0 bytes stable/traefik/7.0.0/crds/ingressroute.yaml | 198 --- .../traefik/7.0.0/crds/ingressroutetcp.yaml | 160 --- .../traefik/7.0.0/crds/ingressrouteudp.yaml | 84 -- stable/traefik/7.0.0/crds/middlewares.yaml | 563 -------- stable/traefik/7.0.0/crds/middlewarestcp.yaml | 59 - .../traefik/7.0.0/crds/serverstransports.yaml | 101 -- stable/traefik/7.0.0/crds/tlsoptions.yaml | 87 -- stable/traefik/7.0.0/crds/tlsstores.yaml | 64 - .../traefik/7.0.0/crds/traefikservices.yaml | 270 ---- stable/traefik/7.0.0/helm-values.md | 50 - stable/traefik/7.0.0/ix_values.yaml | 181 --- stable/traefik/7.0.0/questions.yaml | 1144 ---------------- stable/traefik/7.0.0/templates/_args.tpl | 141 -- stable/traefik/7.0.0/templates/_helpers.tpl | 21 - .../traefik/7.0.0/templates/_ingressclass.tpl | 24 - .../traefik/7.0.0/templates/_ingressroute.tpl | 25 - .../traefik/7.0.0/templates/_portalhook.tpl | 27 - .../traefik/7.0.0/templates/_tlsoptions.tpl | 12 - stable/traefik/7.0.0/templates/common.yaml | 24 - .../7.0.0/templates/middleware-namespace.yaml | 7 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../7.0.0/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - stable/traefik/7.0.0/test_values.yaml | 320 ----- stable/traefik/7.0.0/values.yaml | 0 stable/traefik/7.0.1/CONFIG.md | 8 - stable/traefik/7.0.1/Chart.lock | 6 - stable/traefik/7.0.1/Chart.yaml | 25 - stable/traefik/7.0.1/README.md | 39 - stable/traefik/7.0.1/app-readme.md | 4 - stable/traefik/7.0.1/charts/common-6.13.6.tgz | Bin 29078 -> 0 bytes stable/traefik/7.0.1/crds/ingressroute.yaml | 198 --- .../traefik/7.0.1/crds/ingressroutetcp.yaml | 160 --- .../traefik/7.0.1/crds/ingressrouteudp.yaml | 84 -- stable/traefik/7.0.1/crds/middlewares.yaml | 563 -------- stable/traefik/7.0.1/crds/middlewarestcp.yaml | 59 - .../traefik/7.0.1/crds/serverstransports.yaml | 101 -- stable/traefik/7.0.1/crds/tlsoptions.yaml | 87 -- stable/traefik/7.0.1/crds/tlsstores.yaml | 64 - .../traefik/7.0.1/crds/traefikservices.yaml | 270 ---- stable/traefik/7.0.1/helm-values.md | 50 - stable/traefik/7.0.1/ix_values.yaml | 181 --- stable/traefik/7.0.1/questions.yaml | 1166 ---------------- stable/traefik/7.0.1/templates/_args.tpl | 141 -- stable/traefik/7.0.1/templates/_helpers.tpl | 21 - .../traefik/7.0.1/templates/_ingressclass.tpl | 24 - .../traefik/7.0.1/templates/_ingressroute.tpl | 25 - .../traefik/7.0.1/templates/_portalhook.tpl | 27 - .../traefik/7.0.1/templates/_tlsoptions.tpl | 12 - stable/traefik/7.0.1/templates/common.yaml | 24 - .../7.0.1/templates/middleware-namespace.yaml | 7 - .../middlewares/basic-middleware.yaml | 63 - .../templates/middlewares/basicauth.yaml | 34 - .../7.0.1/templates/middlewares/chain.yaml | 21 - .../templates/middlewares/forwardauth.yaml | 28 - .../templates/middlewares/ratelimit.yaml | 19 - .../templates/middlewares/redirectScheme.yaml | 19 - stable/traefik/7.0.1/test_values.yaml | 320 ----- stable/traefik/7.0.1/values.yaml | 0 668 files changed, 67276 deletions(-) delete mode 100644 incubator/jdownloader2/0.3.11/CONFIG.md delete mode 100644 incubator/jdownloader2/0.3.11/Chart.lock delete mode 100644 incubator/jdownloader2/0.3.11/Chart.yaml delete mode 100644 incubator/jdownloader2/0.3.11/README.md delete mode 100644 incubator/jdownloader2/0.3.11/app-readme.md delete mode 100644 incubator/jdownloader2/0.3.11/charts/common-6.12.4.tgz delete mode 100644 incubator/jdownloader2/0.3.11/helm-values.md delete mode 100644 incubator/jdownloader2/0.3.11/ix_values.yaml delete mode 100644 incubator/jdownloader2/0.3.11/questions.yaml delete mode 100644 incubator/jdownloader2/0.3.11/templates/common.yaml delete mode 100644 incubator/jdownloader2/0.3.11/test_values.yaml delete mode 100644 incubator/jdownloader2/0.3.11/values.yaml delete mode 100644 incubator/traefik/0.0.1/CONFIG.md delete mode 100644 incubator/traefik/0.0.1/Chart.lock delete mode 100644 incubator/traefik/0.0.1/Chart.yaml delete mode 100644 incubator/traefik/0.0.1/README.md delete mode 100644 incubator/traefik/0.0.1/app-readme.md delete mode 100644 incubator/traefik/0.0.1/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.1/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.1/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.1/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.1/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.1/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.1/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.1/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.1/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.1/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.1/helm-values.md delete mode 100644 incubator/traefik/0.0.1/ix_values.yaml delete mode 100644 incubator/traefik/0.0.1/questions.yaml delete mode 100644 incubator/traefik/0.0.1/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.1/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.1/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.1/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.1/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.1/templates/common.yaml delete mode 100644 incubator/traefik/0.0.1/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.1/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.1/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.1/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.1/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.1/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.1/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.1/test_values.yaml delete mode 100644 incubator/traefik/0.0.1/values.yaml delete mode 100644 incubator/traefik/0.0.10/CONFIG.md delete mode 100644 incubator/traefik/0.0.10/Chart.lock delete mode 100644 incubator/traefik/0.0.10/Chart.yaml delete mode 100644 incubator/traefik/0.0.10/README.md delete mode 100644 incubator/traefik/0.0.10/app-readme.md delete mode 100644 incubator/traefik/0.0.10/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.10/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.10/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.10/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.10/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.10/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.10/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.10/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.10/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.10/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.10/helm-values.md delete mode 100644 incubator/traefik/0.0.10/ix_values.yaml delete mode 100644 incubator/traefik/0.0.10/questions.yaml delete mode 100644 incubator/traefik/0.0.10/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.10/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.10/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.10/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.10/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.10/templates/common.yaml delete mode 100644 incubator/traefik/0.0.10/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.10/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.10/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.10/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.10/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.10/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.10/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.10/templates/portalhook.yaml delete mode 100644 incubator/traefik/0.0.10/test_values.yaml delete mode 100644 incubator/traefik/0.0.10/values.yaml delete mode 100644 incubator/traefik/0.0.11/CONFIG.md delete mode 100644 incubator/traefik/0.0.11/Chart.lock delete mode 100644 incubator/traefik/0.0.11/Chart.yaml delete mode 100644 incubator/traefik/0.0.11/README.md delete mode 100644 incubator/traefik/0.0.11/app-readme.md delete mode 100644 incubator/traefik/0.0.11/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.11/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.11/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.11/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.11/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.11/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.11/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.11/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.11/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.11/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.11/helm-values.md delete mode 100644 incubator/traefik/0.0.11/ix_values.yaml delete mode 100644 incubator/traefik/0.0.11/questions.yaml delete mode 100644 incubator/traefik/0.0.11/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.11/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.11/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.11/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.11/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.11/templates/common.yaml delete mode 100644 incubator/traefik/0.0.11/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.11/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.11/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.11/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.11/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.11/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.11/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.11/templates/portalhook.yaml delete mode 100644 incubator/traefik/0.0.11/test_values.yaml delete mode 100644 incubator/traefik/0.0.11/values.yaml delete mode 100644 incubator/traefik/0.0.2/CONFIG.md delete mode 100644 incubator/traefik/0.0.2/Chart.lock delete mode 100644 incubator/traefik/0.0.2/Chart.yaml delete mode 100644 incubator/traefik/0.0.2/README.md delete mode 100644 incubator/traefik/0.0.2/app-readme.md delete mode 100644 incubator/traefik/0.0.2/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.2/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.2/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.2/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.2/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.2/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.2/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.2/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.2/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.2/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.2/helm-values.md delete mode 100644 incubator/traefik/0.0.2/ix_values.yaml delete mode 100644 incubator/traefik/0.0.2/questions.yaml delete mode 100644 incubator/traefik/0.0.2/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.2/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.2/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.2/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.2/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.2/templates/common.yaml delete mode 100644 incubator/traefik/0.0.2/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.2/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.2/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.2/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.2/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.2/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.2/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.2/test_values.yaml delete mode 100644 incubator/traefik/0.0.2/values.yaml delete mode 100644 incubator/traefik/0.0.3/CONFIG.md delete mode 100644 incubator/traefik/0.0.3/Chart.lock delete mode 100644 incubator/traefik/0.0.3/Chart.yaml delete mode 100644 incubator/traefik/0.0.3/README.md delete mode 100644 incubator/traefik/0.0.3/app-readme.md delete mode 100644 incubator/traefik/0.0.3/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.3/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.3/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.3/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.3/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.3/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.3/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.3/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.3/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.3/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.3/helm-values.md delete mode 100644 incubator/traefik/0.0.3/ix_values.yaml delete mode 100644 incubator/traefik/0.0.3/questions.yaml delete mode 100644 incubator/traefik/0.0.3/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.3/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.3/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.3/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.3/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.3/templates/common.yaml delete mode 100644 incubator/traefik/0.0.3/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.3/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.3/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.3/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.3/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.3/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.3/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.3/test_values.yaml delete mode 100644 incubator/traefik/0.0.3/values.yaml delete mode 100644 incubator/traefik/0.0.4/CONFIG.md delete mode 100644 incubator/traefik/0.0.4/Chart.lock delete mode 100644 incubator/traefik/0.0.4/Chart.yaml delete mode 100644 incubator/traefik/0.0.4/README.md delete mode 100644 incubator/traefik/0.0.4/app-readme.md delete mode 100644 incubator/traefik/0.0.4/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.4/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.4/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.4/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.4/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.4/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.4/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.4/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.4/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.4/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.4/helm-values.md delete mode 100644 incubator/traefik/0.0.4/ix_values.yaml delete mode 100644 incubator/traefik/0.0.4/questions.yaml delete mode 100644 incubator/traefik/0.0.4/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.4/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.4/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.4/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.4/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.4/templates/common.yaml delete mode 100644 incubator/traefik/0.0.4/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.4/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.4/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.4/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.4/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.4/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.4/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.4/test_values.yaml delete mode 100644 incubator/traefik/0.0.4/values.yaml delete mode 100644 incubator/traefik/0.0.5/CONFIG.md delete mode 100644 incubator/traefik/0.0.5/Chart.lock delete mode 100644 incubator/traefik/0.0.5/Chart.yaml delete mode 100644 incubator/traefik/0.0.5/README.md delete mode 100644 incubator/traefik/0.0.5/app-readme.md delete mode 100644 incubator/traefik/0.0.5/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.5/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.5/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.5/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.5/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.5/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.5/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.5/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.5/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.5/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.5/helm-values.md delete mode 100644 incubator/traefik/0.0.5/ix_values.yaml delete mode 100644 incubator/traefik/0.0.5/questions.yaml delete mode 100644 incubator/traefik/0.0.5/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.5/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.5/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.5/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.5/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.5/templates/common.yaml delete mode 100644 incubator/traefik/0.0.5/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.5/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.5/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.5/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.5/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.5/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.5/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.5/test_values.yaml delete mode 100644 incubator/traefik/0.0.5/values.yaml delete mode 100644 incubator/traefik/0.0.6/CONFIG.md delete mode 100644 incubator/traefik/0.0.6/Chart.lock delete mode 100644 incubator/traefik/0.0.6/Chart.yaml delete mode 100644 incubator/traefik/0.0.6/README.md delete mode 100644 incubator/traefik/0.0.6/app-readme.md delete mode 100644 incubator/traefik/0.0.6/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.6/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.6/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.6/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.6/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.6/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.6/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.6/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.6/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.6/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.6/helm-values.md delete mode 100644 incubator/traefik/0.0.6/ix_values.yaml delete mode 100644 incubator/traefik/0.0.6/questions.yaml delete mode 100644 incubator/traefik/0.0.6/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.6/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.6/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.6/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.6/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.6/templates/common.yaml delete mode 100644 incubator/traefik/0.0.6/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.6/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.6/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.6/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.6/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.6/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.6/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.6/test_values.yaml delete mode 100644 incubator/traefik/0.0.6/values.yaml delete mode 100644 incubator/traefik/0.0.7/CONFIG.md delete mode 100644 incubator/traefik/0.0.7/Chart.lock delete mode 100644 incubator/traefik/0.0.7/Chart.yaml delete mode 100644 incubator/traefik/0.0.7/README.md delete mode 100644 incubator/traefik/0.0.7/app-readme.md delete mode 100644 incubator/traefik/0.0.7/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.7/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.7/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.7/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.7/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.7/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.7/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.7/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.7/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.7/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.7/helm-values.md delete mode 100644 incubator/traefik/0.0.7/ix_values.yaml delete mode 100644 incubator/traefik/0.0.7/questions.yaml delete mode 100644 incubator/traefik/0.0.7/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.7/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.7/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.7/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.7/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.7/templates/common.yaml delete mode 100644 incubator/traefik/0.0.7/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.7/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.7/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.7/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.7/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.7/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.7/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.7/test_values.yaml delete mode 100644 incubator/traefik/0.0.7/values.yaml delete mode 100644 incubator/traefik/0.0.8/CONFIG.md delete mode 100644 incubator/traefik/0.0.8/Chart.lock delete mode 100644 incubator/traefik/0.0.8/Chart.yaml delete mode 100644 incubator/traefik/0.0.8/README.md delete mode 100644 incubator/traefik/0.0.8/app-readme.md delete mode 100644 incubator/traefik/0.0.8/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.8/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.8/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.8/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.8/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.8/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.8/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.8/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.8/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.8/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.8/helm-values.md delete mode 100644 incubator/traefik/0.0.8/ix_values.yaml delete mode 100644 incubator/traefik/0.0.8/questions.yaml delete mode 100644 incubator/traefik/0.0.8/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.8/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.8/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.8/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.8/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.8/templates/common.yaml delete mode 100644 incubator/traefik/0.0.8/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.8/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.8/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.8/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.8/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.8/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.8/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.8/templates/portalhook.yaml delete mode 100644 incubator/traefik/0.0.8/test_values.yaml delete mode 100644 incubator/traefik/0.0.8/values.yaml delete mode 100644 incubator/traefik/0.0.9/CONFIG.md delete mode 100644 incubator/traefik/0.0.9/Chart.lock delete mode 100644 incubator/traefik/0.0.9/Chart.yaml delete mode 100644 incubator/traefik/0.0.9/README.md delete mode 100644 incubator/traefik/0.0.9/app-readme.md delete mode 100644 incubator/traefik/0.0.9/charts/common-6.13.4.tgz delete mode 100644 incubator/traefik/0.0.9/crds/ingressroute.yaml delete mode 100644 incubator/traefik/0.0.9/crds/ingressroutetcp.yaml delete mode 100644 incubator/traefik/0.0.9/crds/ingressrouteudp.yaml delete mode 100644 incubator/traefik/0.0.9/crds/middlewares.yaml delete mode 100644 incubator/traefik/0.0.9/crds/middlewarestcp.yaml delete mode 100644 incubator/traefik/0.0.9/crds/serverstransports.yaml delete mode 100644 incubator/traefik/0.0.9/crds/tlsoptions.yaml delete mode 100644 incubator/traefik/0.0.9/crds/tlsstores.yaml delete mode 100644 incubator/traefik/0.0.9/crds/traefikservices.yaml delete mode 100644 incubator/traefik/0.0.9/helm-values.md delete mode 100644 incubator/traefik/0.0.9/ix_values.yaml delete mode 100644 incubator/traefik/0.0.9/questions.yaml delete mode 100644 incubator/traefik/0.0.9/templates/_args.tpl delete mode 100644 incubator/traefik/0.0.9/templates/_helpers.tpl delete mode 100644 incubator/traefik/0.0.9/templates/_ingressclass.tpl delete mode 100644 incubator/traefik/0.0.9/templates/_ingressroute.tpl delete mode 100644 incubator/traefik/0.0.9/templates/_tlsoptions.tpl delete mode 100644 incubator/traefik/0.0.9/templates/common.yaml delete mode 100644 incubator/traefik/0.0.9/templates/middleware-namespace.yaml delete mode 100644 incubator/traefik/0.0.9/templates/middlewares/basic-middleware.yaml delete mode 100644 incubator/traefik/0.0.9/templates/middlewares/basicauth.yaml delete mode 100644 incubator/traefik/0.0.9/templates/middlewares/chain.yaml delete mode 100644 incubator/traefik/0.0.9/templates/middlewares/forwardauth.yaml delete mode 100644 incubator/traefik/0.0.9/templates/middlewares/ratelimit.yaml delete mode 100644 incubator/traefik/0.0.9/templates/middlewares/redirectScheme.yaml delete mode 100644 incubator/traefik/0.0.9/templates/portalhook.yaml delete mode 100644 incubator/traefik/0.0.9/test_values.yaml delete mode 100644 incubator/traefik/0.0.9/values.yaml delete mode 100644 stable/jdownloader2/1.0.0/CONFIG.md delete mode 100644 stable/jdownloader2/1.0.0/Chart.lock delete mode 100644 stable/jdownloader2/1.0.0/Chart.yaml delete mode 100644 stable/jdownloader2/1.0.0/README.md delete mode 100644 stable/jdownloader2/1.0.0/app-readme.md delete mode 100644 stable/jdownloader2/1.0.0/charts/common-6.13.5.tgz delete mode 100644 stable/jdownloader2/1.0.0/helm-values.md delete mode 100644 stable/jdownloader2/1.0.0/ix_values.yaml delete mode 100644 stable/jdownloader2/1.0.0/questions.yaml delete mode 100644 stable/jdownloader2/1.0.0/templates/common.yaml delete mode 100644 stable/jdownloader2/1.0.0/test_values.yaml delete mode 100644 stable/jdownloader2/1.0.0/values.yaml delete mode 100644 stable/k8s-gateway/1.0.1/CONFIG.md delete mode 100644 stable/k8s-gateway/1.0.1/Chart.lock delete mode 100644 stable/k8s-gateway/1.0.1/Chart.yaml delete mode 100644 stable/k8s-gateway/1.0.1/README.md delete mode 100644 stable/k8s-gateway/1.0.1/app-readme.md delete mode 100644 stable/k8s-gateway/1.0.1/charts/common-6.13.3.tgz delete mode 100644 stable/k8s-gateway/1.0.1/helm-values.md delete mode 100644 stable/k8s-gateway/1.0.1/ix_values.yaml delete mode 100644 stable/k8s-gateway/1.0.1/questions.yaml delete mode 100644 stable/k8s-gateway/1.0.1/templates/_configmap.tpl delete mode 100644 stable/k8s-gateway/1.0.1/templates/common.yaml delete mode 100644 stable/k8s-gateway/1.0.1/test_values.yaml delete mode 100644 stable/k8s-gateway/1.0.1/values.yaml delete mode 100644 stable/k8s-gateway/1.0.2/CONFIG.md delete mode 100644 stable/k8s-gateway/1.0.2/Chart.lock delete mode 100644 stable/k8s-gateway/1.0.2/Chart.yaml delete mode 100644 stable/k8s-gateway/1.0.2/README.md delete mode 100644 stable/k8s-gateway/1.0.2/app-readme.md delete mode 100644 stable/k8s-gateway/1.0.2/charts/common-6.13.3.tgz delete mode 100644 stable/k8s-gateway/1.0.2/helm-values.md delete mode 100644 stable/k8s-gateway/1.0.2/ix_values.yaml delete mode 100644 stable/k8s-gateway/1.0.2/questions.yaml delete mode 100644 stable/k8s-gateway/1.0.2/templates/_configmap.tpl delete mode 100644 stable/k8s-gateway/1.0.2/templates/common.yaml delete mode 100644 stable/k8s-gateway/1.0.2/test_values.yaml delete mode 100644 stable/k8s-gateway/1.0.2/values.yaml delete mode 100644 stable/k8s-gateway/1.0.3/CONFIG.md delete mode 100644 stable/k8s-gateway/1.0.3/Chart.lock delete mode 100644 stable/k8s-gateway/1.0.3/Chart.yaml delete mode 100644 stable/k8s-gateway/1.0.3/README.md delete mode 100644 stable/k8s-gateway/1.0.3/app-readme.md delete mode 100644 stable/k8s-gateway/1.0.3/charts/common-6.13.3.tgz delete mode 100644 stable/k8s-gateway/1.0.3/helm-values.md delete mode 100644 stable/k8s-gateway/1.0.3/ix_values.yaml delete mode 100644 stable/k8s-gateway/1.0.3/questions.yaml delete mode 100644 stable/k8s-gateway/1.0.3/templates/_configmap.tpl delete mode 100644 stable/k8s-gateway/1.0.3/templates/common.yaml delete mode 100644 stable/k8s-gateway/1.0.3/test_values.yaml delete mode 100644 stable/k8s-gateway/1.0.3/values.yaml delete mode 100644 stable/k8s-gateway/1.0.4/CONFIG.md delete mode 100644 stable/k8s-gateway/1.0.4/Chart.lock delete mode 100644 stable/k8s-gateway/1.0.4/Chart.yaml delete mode 100644 stable/k8s-gateway/1.0.4/README.md delete mode 100644 stable/k8s-gateway/1.0.4/app-readme.md delete mode 100644 stable/k8s-gateway/1.0.4/charts/common-6.13.3.tgz delete mode 100644 stable/k8s-gateway/1.0.4/helm-values.md delete mode 100644 stable/k8s-gateway/1.0.4/ix_values.yaml delete mode 100644 stable/k8s-gateway/1.0.4/questions.yaml delete mode 100644 stable/k8s-gateway/1.0.4/templates/_configmap.tpl delete mode 100644 stable/k8s-gateway/1.0.4/templates/common.yaml delete mode 100644 stable/k8s-gateway/1.0.4/test_values.yaml delete mode 100644 stable/k8s-gateway/1.0.4/values.yaml delete mode 100644 stable/k8s-gateway/1.0.5/CONFIG.md delete mode 100644 stable/k8s-gateway/1.0.5/Chart.lock delete mode 100644 stable/k8s-gateway/1.0.5/Chart.yaml delete mode 100644 stable/k8s-gateway/1.0.5/README.md delete mode 100644 stable/k8s-gateway/1.0.5/app-readme.md delete mode 100644 stable/k8s-gateway/1.0.5/charts/common-6.13.3.tgz delete mode 100644 stable/k8s-gateway/1.0.5/helm-values.md delete mode 100644 stable/k8s-gateway/1.0.5/ix_values.yaml delete mode 100644 stable/k8s-gateway/1.0.5/questions.yaml delete mode 100644 stable/k8s-gateway/1.0.5/templates/_configmap.tpl delete mode 100644 stable/k8s-gateway/1.0.5/templates/common.yaml delete mode 100644 stable/k8s-gateway/1.0.5/test_values.yaml delete mode 100644 stable/k8s-gateway/1.0.5/values.yaml delete mode 100644 stable/traefik/6.13.17/CONFIG.md delete mode 100644 stable/traefik/6.13.17/Chart.lock delete mode 100644 stable/traefik/6.13.17/Chart.yaml delete mode 100644 stable/traefik/6.13.17/LICENSE delete mode 100644 stable/traefik/6.13.17/README.md delete mode 100644 stable/traefik/6.13.17/app-readme.md delete mode 100644 stable/traefik/6.13.17/charts/common-6.12.4.tgz delete mode 100644 stable/traefik/6.13.17/crds/ingressroute.yaml delete mode 100644 stable/traefik/6.13.17/crds/ingressroutetcp.yaml delete mode 100644 stable/traefik/6.13.17/crds/ingressrouteudp.yaml delete mode 100644 stable/traefik/6.13.17/crds/middlewares.yaml delete mode 100644 stable/traefik/6.13.17/crds/serverstransports.yaml delete mode 100644 stable/traefik/6.13.17/crds/tlsoptions.yaml delete mode 100644 stable/traefik/6.13.17/crds/tlsstores.yaml delete mode 100644 stable/traefik/6.13.17/crds/traefikservices.yaml delete mode 100644 stable/traefik/6.13.17/helm-values.md delete mode 100644 stable/traefik/6.13.17/ix_values.yaml delete mode 100644 stable/traefik/6.13.17/questions.yaml delete mode 100644 stable/traefik/6.13.17/templates/_helpers.tpl delete mode 100644 stable/traefik/6.13.17/templates/_podtemplate.tpl delete mode 100644 stable/traefik/6.13.17/templates/custom/common.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/middleware-namespace.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/middlewares/basic-middleware.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/middlewares/basicauth.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/middlewares/chain.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/middlewares/forwardauth.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/middlewares/ratelimit.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/middlewares/redirectScheme.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/portal.yaml delete mode 100644 stable/traefik/6.13.17/templates/custom/portalhook.yaml delete mode 100644 stable/traefik/6.13.17/templates/daemonset.yaml delete mode 100644 stable/traefik/6.13.17/templates/dashboard-hook-ingressroute.yaml delete mode 100644 stable/traefik/6.13.17/templates/deployment.yaml delete mode 100644 stable/traefik/6.13.17/templates/gateway.yaml delete mode 100644 stable/traefik/6.13.17/templates/gatewayclass.yaml delete mode 100644 stable/traefik/6.13.17/templates/hpa.yaml delete mode 100644 stable/traefik/6.13.17/templates/ingressclass.yaml delete mode 100644 stable/traefik/6.13.17/templates/poddisruptionbudget.yaml delete mode 100644 stable/traefik/6.13.17/templates/rbac/clusterrole.yaml delete mode 100644 stable/traefik/6.13.17/templates/rbac/clusterrolebinding.yaml delete mode 100644 stable/traefik/6.13.17/templates/rbac/podsecuritypolicy.yaml delete mode 100644 stable/traefik/6.13.17/templates/rbac/role.yaml delete mode 100644 stable/traefik/6.13.17/templates/rbac/rolebinding.yaml delete mode 100644 stable/traefik/6.13.17/templates/rbac/serviceaccount.yaml delete mode 100644 stable/traefik/6.13.17/templates/service.yaml delete mode 100644 stable/traefik/6.13.17/templates/tlsoption.yaml delete mode 100644 stable/traefik/6.13.17/test_values.yaml delete mode 100644 stable/traefik/6.13.17/values.yaml delete mode 100644 stable/traefik/6.13.18/CONFIG.md delete mode 100644 stable/traefik/6.13.18/Chart.lock delete mode 100644 stable/traefik/6.13.18/Chart.yaml delete mode 100644 stable/traefik/6.13.18/LICENSE delete mode 100644 stable/traefik/6.13.18/README.md delete mode 100644 stable/traefik/6.13.18/app-readme.md delete mode 100644 stable/traefik/6.13.18/charts/common-6.12.4.tgz delete mode 100644 stable/traefik/6.13.18/crds/ingressroute.yaml delete mode 100644 stable/traefik/6.13.18/crds/ingressroutetcp.yaml delete mode 100644 stable/traefik/6.13.18/crds/ingressrouteudp.yaml delete mode 100644 stable/traefik/6.13.18/crds/middlewares.yaml delete mode 100644 stable/traefik/6.13.18/crds/serverstransports.yaml delete mode 100644 stable/traefik/6.13.18/crds/tlsoptions.yaml delete mode 100644 stable/traefik/6.13.18/crds/tlsstores.yaml delete mode 100644 stable/traefik/6.13.18/crds/traefikservices.yaml delete mode 100644 stable/traefik/6.13.18/helm-values.md delete mode 100644 stable/traefik/6.13.18/ix_values.yaml delete mode 100644 stable/traefik/6.13.18/questions.yaml delete mode 100644 stable/traefik/6.13.18/templates/_helpers.tpl delete mode 100644 stable/traefik/6.13.18/templates/_podtemplate.tpl delete mode 100644 stable/traefik/6.13.18/templates/custom/common.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/middleware-namespace.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/middlewares/basic-middleware.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/middlewares/basicauth.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/middlewares/chain.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/middlewares/forwardauth.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/middlewares/ratelimit.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/middlewares/redirectScheme.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/portal.yaml delete mode 100644 stable/traefik/6.13.18/templates/custom/portalhook.yaml delete mode 100644 stable/traefik/6.13.18/templates/daemonset.yaml delete mode 100644 stable/traefik/6.13.18/templates/dashboard-hook-ingressroute.yaml delete mode 100644 stable/traefik/6.13.18/templates/deployment.yaml delete mode 100644 stable/traefik/6.13.18/templates/gateway.yaml delete mode 100644 stable/traefik/6.13.18/templates/gatewayclass.yaml delete mode 100644 stable/traefik/6.13.18/templates/hpa.yaml delete mode 100644 stable/traefik/6.13.18/templates/ingressclass.yaml delete mode 100644 stable/traefik/6.13.18/templates/poddisruptionbudget.yaml delete mode 100644 stable/traefik/6.13.18/templates/rbac/clusterrole.yaml delete mode 100644 stable/traefik/6.13.18/templates/rbac/clusterrolebinding.yaml delete mode 100644 stable/traefik/6.13.18/templates/rbac/podsecuritypolicy.yaml delete mode 100644 stable/traefik/6.13.18/templates/rbac/role.yaml delete mode 100644 stable/traefik/6.13.18/templates/rbac/rolebinding.yaml delete mode 100644 stable/traefik/6.13.18/templates/rbac/serviceaccount.yaml delete mode 100644 stable/traefik/6.13.18/templates/service.yaml delete mode 100644 stable/traefik/6.13.18/templates/tlsoption.yaml delete mode 100644 stable/traefik/6.13.18/test_values.yaml delete mode 100644 stable/traefik/6.13.18/values.yaml delete mode 100644 stable/traefik/6.13.19/CONFIG.md delete mode 100644 stable/traefik/6.13.19/Chart.lock delete mode 100644 stable/traefik/6.13.19/Chart.yaml delete mode 100644 stable/traefik/6.13.19/LICENSE delete mode 100644 stable/traefik/6.13.19/README.md delete mode 100644 stable/traefik/6.13.19/app-readme.md delete mode 100644 stable/traefik/6.13.19/charts/common-6.12.4.tgz delete mode 100644 stable/traefik/6.13.19/crds/ingressroute.yaml delete mode 100644 stable/traefik/6.13.19/crds/ingressroutetcp.yaml delete mode 100644 stable/traefik/6.13.19/crds/ingressrouteudp.yaml delete mode 100644 stable/traefik/6.13.19/crds/middlewares.yaml delete mode 100644 stable/traefik/6.13.19/crds/serverstransports.yaml delete mode 100644 stable/traefik/6.13.19/crds/tlsoptions.yaml delete mode 100644 stable/traefik/6.13.19/crds/tlsstores.yaml delete mode 100644 stable/traefik/6.13.19/crds/traefikservices.yaml delete mode 100644 stable/traefik/6.13.19/helm-values.md delete mode 100644 stable/traefik/6.13.19/ix_values.yaml delete mode 100644 stable/traefik/6.13.19/questions.yaml delete mode 100644 stable/traefik/6.13.19/templates/_helpers.tpl delete mode 100644 stable/traefik/6.13.19/templates/_podtemplate.tpl delete mode 100644 stable/traefik/6.13.19/templates/custom/common.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/middleware-namespace.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/middlewares/basic-middleware.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/middlewares/basicauth.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/middlewares/chain.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/middlewares/forwardauth.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/middlewares/ratelimit.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/middlewares/redirectScheme.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/portal.yaml delete mode 100644 stable/traefik/6.13.19/templates/custom/portalhook.yaml delete mode 100644 stable/traefik/6.13.19/templates/daemonset.yaml delete mode 100644 stable/traefik/6.13.19/templates/dashboard-hook-ingressroute.yaml delete mode 100644 stable/traefik/6.13.19/templates/deployment.yaml delete mode 100644 stable/traefik/6.13.19/templates/gateway.yaml delete mode 100644 stable/traefik/6.13.19/templates/gatewayclass.yaml delete mode 100644 stable/traefik/6.13.19/templates/hpa.yaml delete mode 100644 stable/traefik/6.13.19/templates/ingressclass.yaml delete mode 100644 stable/traefik/6.13.19/templates/poddisruptionbudget.yaml delete mode 100644 stable/traefik/6.13.19/templates/rbac/clusterrole.yaml delete mode 100644 stable/traefik/6.13.19/templates/rbac/clusterrolebinding.yaml delete mode 100644 stable/traefik/6.13.19/templates/rbac/podsecuritypolicy.yaml delete mode 100644 stable/traefik/6.13.19/templates/rbac/role.yaml delete mode 100644 stable/traefik/6.13.19/templates/rbac/rolebinding.yaml delete mode 100644 stable/traefik/6.13.19/templates/rbac/serviceaccount.yaml delete mode 100644 stable/traefik/6.13.19/templates/service.yaml delete mode 100644 stable/traefik/6.13.19/templates/tlsoption.yaml delete mode 100644 stable/traefik/6.13.19/test_values.yaml delete mode 100644 stable/traefik/6.13.19/values.yaml delete mode 100644 stable/traefik/7.0.0/CONFIG.md delete mode 100644 stable/traefik/7.0.0/Chart.lock delete mode 100644 stable/traefik/7.0.0/Chart.yaml delete mode 100644 stable/traefik/7.0.0/README.md delete mode 100644 stable/traefik/7.0.0/app-readme.md delete mode 100644 stable/traefik/7.0.0/charts/common-6.13.6.tgz delete mode 100644 stable/traefik/7.0.0/crds/ingressroute.yaml delete mode 100644 stable/traefik/7.0.0/crds/ingressroutetcp.yaml delete mode 100644 stable/traefik/7.0.0/crds/ingressrouteudp.yaml delete mode 100644 stable/traefik/7.0.0/crds/middlewares.yaml delete mode 100644 stable/traefik/7.0.0/crds/middlewarestcp.yaml delete mode 100644 stable/traefik/7.0.0/crds/serverstransports.yaml delete mode 100644 stable/traefik/7.0.0/crds/tlsoptions.yaml delete mode 100644 stable/traefik/7.0.0/crds/tlsstores.yaml delete mode 100644 stable/traefik/7.0.0/crds/traefikservices.yaml delete mode 100644 stable/traefik/7.0.0/helm-values.md delete mode 100644 stable/traefik/7.0.0/ix_values.yaml delete mode 100644 stable/traefik/7.0.0/questions.yaml delete mode 100644 stable/traefik/7.0.0/templates/_args.tpl delete mode 100644 stable/traefik/7.0.0/templates/_helpers.tpl delete mode 100644 stable/traefik/7.0.0/templates/_ingressclass.tpl delete mode 100644 stable/traefik/7.0.0/templates/_ingressroute.tpl delete mode 100644 stable/traefik/7.0.0/templates/_portalhook.tpl delete mode 100644 stable/traefik/7.0.0/templates/_tlsoptions.tpl delete mode 100644 stable/traefik/7.0.0/templates/common.yaml delete mode 100644 stable/traefik/7.0.0/templates/middleware-namespace.yaml delete mode 100644 stable/traefik/7.0.0/templates/middlewares/basic-middleware.yaml delete mode 100644 stable/traefik/7.0.0/templates/middlewares/basicauth.yaml delete mode 100644 stable/traefik/7.0.0/templates/middlewares/chain.yaml delete mode 100644 stable/traefik/7.0.0/templates/middlewares/forwardauth.yaml delete mode 100644 stable/traefik/7.0.0/templates/middlewares/ratelimit.yaml delete mode 100644 stable/traefik/7.0.0/templates/middlewares/redirectScheme.yaml delete mode 100644 stable/traefik/7.0.0/test_values.yaml delete mode 100644 stable/traefik/7.0.0/values.yaml delete mode 100644 stable/traefik/7.0.1/CONFIG.md delete mode 100644 stable/traefik/7.0.1/Chart.lock delete mode 100644 stable/traefik/7.0.1/Chart.yaml delete mode 100644 stable/traefik/7.0.1/README.md delete mode 100644 stable/traefik/7.0.1/app-readme.md delete mode 100644 stable/traefik/7.0.1/charts/common-6.13.6.tgz delete mode 100644 stable/traefik/7.0.1/crds/ingressroute.yaml delete mode 100644 stable/traefik/7.0.1/crds/ingressroutetcp.yaml delete mode 100644 stable/traefik/7.0.1/crds/ingressrouteudp.yaml delete mode 100644 stable/traefik/7.0.1/crds/middlewares.yaml delete mode 100644 stable/traefik/7.0.1/crds/middlewarestcp.yaml delete mode 100644 stable/traefik/7.0.1/crds/serverstransports.yaml delete mode 100644 stable/traefik/7.0.1/crds/tlsoptions.yaml delete mode 100644 stable/traefik/7.0.1/crds/tlsstores.yaml delete mode 100644 stable/traefik/7.0.1/crds/traefikservices.yaml delete mode 100644 stable/traefik/7.0.1/helm-values.md delete mode 100644 stable/traefik/7.0.1/ix_values.yaml delete mode 100644 stable/traefik/7.0.1/questions.yaml delete mode 100644 stable/traefik/7.0.1/templates/_args.tpl delete mode 100644 stable/traefik/7.0.1/templates/_helpers.tpl delete mode 100644 stable/traefik/7.0.1/templates/_ingressclass.tpl delete mode 100644 stable/traefik/7.0.1/templates/_ingressroute.tpl delete mode 100644 stable/traefik/7.0.1/templates/_portalhook.tpl delete mode 100644 stable/traefik/7.0.1/templates/_tlsoptions.tpl delete mode 100644 stable/traefik/7.0.1/templates/common.yaml delete mode 100644 stable/traefik/7.0.1/templates/middleware-namespace.yaml delete mode 100644 stable/traefik/7.0.1/templates/middlewares/basic-middleware.yaml delete mode 100644 stable/traefik/7.0.1/templates/middlewares/basicauth.yaml delete mode 100644 stable/traefik/7.0.1/templates/middlewares/chain.yaml delete mode 100644 stable/traefik/7.0.1/templates/middlewares/forwardauth.yaml delete mode 100644 stable/traefik/7.0.1/templates/middlewares/ratelimit.yaml delete mode 100644 stable/traefik/7.0.1/templates/middlewares/redirectScheme.yaml delete mode 100644 stable/traefik/7.0.1/test_values.yaml delete mode 100644 stable/traefik/7.0.1/values.yaml diff --git a/incubator/jdownloader2/0.3.11/CONFIG.md b/incubator/jdownloader2/0.3.11/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/jdownloader2/0.3.11/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/jdownloader2/0.3.11/Chart.lock b/incubator/jdownloader2/0.3.11/Chart.lock deleted file mode 100644 index a97677b1b4b..00000000000 --- a/incubator/jdownloader2/0.3.11/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.12.4 -digest: sha256:62b51750a57da4ed871c5222664ac35112f28bb013f042fc09ff928bf466a970 -generated: "2021-09-03T22:09:15.700203217Z" diff --git a/incubator/jdownloader2/0.3.11/Chart.yaml b/incubator/jdownloader2/0.3.11/Chart.yaml deleted file mode 100644 index 6b085c89c06..00000000000 --- a/incubator/jdownloader2/0.3.11/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: auto -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.12.4 -deprecated: false -description: JDownloader is a free, open-source download management tool with a huge - community of developers that makes downloading as easy and fast as it should be. -home: https://github.com/truecharts/apps/tree/master/charts/stable/jackett -icon: https://jdownloader.org/_media/knowledge/wiki/jdownloader.png?w=150 -keywords: -- jdownloader -- download -kubeVersion: '>=1.16.0-0' -maintainers: -- email: info@truecharts.org - name: TrueCharts - url: truecharts.org -- email: Simoneu01@users.noreply.github.com - name: Simoneu01 - url: truecharts.org -name: jdownloader2 -sources: -- https://github.com/jlesage/docker-jdownloader-2 -- https://hub.docker.com/r/jlesage/jdownloader-2 -- https://jdownloader.org/ -type: application -version: 0.3.11 diff --git a/incubator/jdownloader2/0.3.11/README.md b/incubator/jdownloader2/0.3.11/README.md deleted file mode 100644 index c78c4aeb468..00000000000 --- a/incubator/jdownloader2/0.3.11/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -JDownloader is a free, open-source download management tool with a huge community of developers that makes downloading as easy and fast as it should be. - -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.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/jdownloader2/0.3.11/app-readme.md b/incubator/jdownloader2/0.3.11/app-readme.md deleted file mode 100644 index fcc6e45d8ae..00000000000 --- a/incubator/jdownloader2/0.3.11/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -JDownloader is a free, open-source download management tool with a huge community of developers that makes downloading as easy and fast as it should be. - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -JDownloader is a free, open-source download management tool with a huge diff --git a/incubator/jdownloader2/0.3.11/charts/common-6.12.4.tgz b/incubator/jdownloader2/0.3.11/charts/common-6.12.4.tgz deleted file mode 100644 index f7e20aac30df991d05052fb30a581adb93c16418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28316 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

M-G;Sj2%sWM_u+ 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 diff --git a/incubator/jdownloader2/0.3.11/helm-values.md b/incubator/jdownloader2/0.3.11/helm-values.md deleted file mode 100644 index c628cf14cfa..00000000000 --- a/incubator/jdownloader2/0.3.11/helm-values.md +++ /dev/null @@ -1,40 +0,0 @@ -# Default Helm-Values - -TrueCharts is primarily build to supply TrueNAS SCALE Apps. -However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. - -Most of our Apps also consume our "common" Helm Chart. -If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. -You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| env.CLEAN_TMP_DIR | string | `"1"` | | -| env.DISPLAY_HEIGHT | string | `"768"` | | -| env.DISPLAY_WIDTH | string | `"1280"` | | -| env.KEEP_APP_RUNNING | string | `"0"` | | -| env.PGID | string | `"568"` | | -| env.PUID | string | `"568"` | | -| env.SECURE_CONNECTION | string | `"0"` | | -| env.VNC_PASSWORD | string | `nil` | | -| envTpl.GROUP_ID | string | `"{{ .Values.env.PGID }}"` | | -| envTpl.USER_ID | string | `"{{ .Values.env.PUID }}"` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"jlesage/jdownloader-2"` | | -| image.tag | string | `"v1.7.1"` | | -| persistence.config.accessMode | string | `"ReadWriteOnce"` | | -| persistence.config.enabled | bool | `true` | | -| persistence.config.mountPath | string | `"/config"` | | -| persistence.config.size | string | `"100Gi"` | | -| persistence.config.type | string | `"pvc"` | | -| service.main.ports.main.port | int | `5800` | | -| service.vnc.enabled | bool | `true` | | -| service.vnc.ports.vnc.enabled | bool | `true` | | -| service.vnc.ports.vnc.port | int | `5900` | | -| service.vnc.ports.vnc.protocol | string | `"TCP"` | | -| service.vnc.type | string | `"ClusterIP"` | | -| strategy.type | string | `"Recreate"` | | - -All Rights Reserved - The TrueCharts Project diff --git a/incubator/jdownloader2/0.3.11/ix_values.yaml b/incubator/jdownloader2/0.3.11/ix_values.yaml deleted file mode 100644 index f54d8d42d59..00000000000 --- a/incubator/jdownloader2/0.3.11/ix_values.yaml +++ /dev/null @@ -1,21 +0,0 @@ -## -# 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: jlesage/jdownloader-2 - tag: v1.7.1 - pullPolicy: IfNotPresent - -#All values here are set as the docker defaults. -envTpl: - # Permissions Settings - USER_ID: "{{ .Values.env.PUID }}" - GROUP_ID: "{{ .Values.env.PGID }}" - -## -# 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/incubator/jdownloader2/0.3.11/questions.yaml b/incubator/jdownloader2/0.3.11/questions.yaml deleted file mode 100644 index dbc87cce0db..00000000000 --- a/incubator/jdownloader2/0.3.11/questions.yaml +++ /dev/null @@ -1,1187 +0,0 @@ -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: - # Portal - - 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: 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: PUID - label: "PUID" - description: "Sets the PUID env var for jdownloader2 containers" - schema: - type: int - default: 568 - - variable: PGID - label: "PGID" - description: "Sets the PGID env var for jdownloader2 containers" - schema: - type: int - default: 568 - - variable: UMASK - label: "UMASK" - description: "Sets the UMASK env var for jdownloader2 containers" - schema: - type: string - default: "022" - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to 1, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: int - default: 0 - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: string - default: "1280" - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: string - default: "768" - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to 1, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: string - default: "0" - required: true - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - private: true - type: string - default: "" - - 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: 5800 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 5580 - 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: 36093 - - variable: myjd - label: "MyJDownloader" - description: "Port used by MyJDownloader mobile applications and browser extensions to establish a direct connect to the JDownloader" - 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: "LoadBalancer" - 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: myjd - label: "myjd 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: 3129 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 3129 - 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 - - variable: vnc - label: "VNC Service" - description: "The VNC 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: "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: vnc - label: "VNC 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: 5900 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 5900 - 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: 36094 - - - variable: persistence - label: "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: "/config" - 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: 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/incubator/jdownloader2/0.3.11/templates/common.yaml b/incubator/jdownloader2/0.3.11/templates/common.yaml deleted file mode 100644 index a6613c2ce21..00000000000 --- a/incubator/jdownloader2/0.3.11/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "common.all" . }} diff --git a/incubator/jdownloader2/0.3.11/test_values.yaml b/incubator/jdownloader2/0.3.11/test_values.yaml deleted file mode 100644 index bf467dbc38c..00000000000 --- a/incubator/jdownloader2/0.3.11/test_values.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Default values for jdownloader2. - -image: - repository: jlesage/jdownloader-2 - pullPolicy: IfNotPresent - tag: v1.7.1 - -strategy: - type: Recreate - -service: - main: - ports: - main: - port: 5800 - vnc: - enabled: true - type: ClusterIP - ports: - vnc: - enabled: true - port: 5900 - protocol: "TCP" - -# All values here are set as the docker defaults. -envTpl: - # Permissions Settings - USER_ID: "{{ .Values.env.PUID }}" - GROUP_ID: "{{ .Values.env.PGID }}" - -env: - # Permissions Settings - PUID: "568" - PGID: "568" - # General Settings - KEEP_APP_RUNNING: "0" - CLEAN_TMP_DIR: "1" - # GUI Settings - DISPLAY_WIDTH: "1280" - DISPLAY_HEIGHT: "768" - SECURE_CONNECTION: "0" - VNC_PASSWORD: - -persistence: - config: - enabled: true - mountPath: "/config" - type: pvc - accessMode: ReadWriteOnce - size: "100Gi" diff --git a/incubator/jdownloader2/0.3.11/values.yaml b/incubator/jdownloader2/0.3.11/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.1/CONFIG.md b/incubator/traefik/0.0.1/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.1/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.1/Chart.lock b/incubator/traefik/0.0.1/Chart.lock deleted file mode 100644 index f9d5c38b481..00000000000 --- a/incubator/traefik/0.0.1/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T13:03:54.324462399Z" diff --git a/incubator/traefik/0.0.1/Chart.yaml b/incubator/traefik/0.0.1/Chart.yaml deleted file mode 100644 index fe2b4b965c5..00000000000 --- a/incubator/traefik/0.0.1/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.1 diff --git a/incubator/traefik/0.0.1/README.md b/incubator/traefik/0.0.1/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.1/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.1/app-readme.md b/incubator/traefik/0.0.1/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.1/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.1/charts/common-6.13.4.tgz b/incubator/traefik/0.0.1/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.1/templates/_ingressclass.tpl b/incubator/traefik/0.0.1/templates/_ingressclass.tpl deleted file mode 100644 index 27ea822a64d..00000000000 --- a/incubator/traefik/0.0.1/templates/_ingressclass.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- 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 at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ include "common.names.fullname" . }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.1/templates/_ingressroute.tpl b/incubator/traefik/0.0.1/templates/_ingressroute.tpl deleted file mode 100644 index 922872618cb..00000000000 --- a/incubator/traefik/0.0.1/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - traefik - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.1/templates/_tlsoptions.tpl b/incubator/traefik/0.0.1/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.1/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.1/templates/common.yaml b/incubator/traefik/0.0.1/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.1/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.1/templates/middleware-namespace.yaml b/incubator/traefik/0.0.1/templates/middleware-namespace.yaml deleted file mode 100644 index 16156ee5e12..00000000000 --- a/incubator/traefik/0.0.1/templates/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install diff --git a/incubator/traefik/0.0.1/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.1/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index 98f7d1c170c..00000000000 --- a/incubator/traefik/0.0.1/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -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/incubator/traefik/0.0.1/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.1/templates/middlewares/basicauth.yaml deleted file mode 100644 index 4e0f326a2f4..00000000000 --- a/incubator/traefik/0.0.1/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{ 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/incubator/traefik/0.0.1/templates/middlewares/chain.yaml b/incubator/traefik/0.0.1/templates/middlewares/chain.yaml deleted file mode 100644 index ef592c255ba..00000000000 --- a/incubator/traefik/0.0.1/templates/middlewares/chain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{ 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/incubator/traefik/0.0.1/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.1/templates/middlewares/forwardauth.yaml deleted file mode 100644 index bb90d33775e..00000000000 --- a/incubator/traefik/0.0.1/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{ 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/incubator/traefik/0.0.1/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.1/templates/middlewares/ratelimit.yaml deleted file mode 100644 index b4bfa938e6e..00000000000 --- a/incubator/traefik/0.0.1/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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/incubator/traefik/0.0.1/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.1/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 070c8fc4a90..00000000000 --- a/incubator/traefik/0.0.1/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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/incubator/traefik/0.0.1/test_values.yaml b/incubator/traefik/0.0.1/test_values.yaml deleted file mode 100644 index 1840f8f5d7b..00000000000 --- a/incubator/traefik/0.0.1/test_values.yaml +++ /dev/null @@ -1,319 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - -# -- TLS Options to be 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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- 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 diff --git a/incubator/traefik/0.0.1/values.yaml b/incubator/traefik/0.0.1/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.10/CONFIG.md b/incubator/traefik/0.0.10/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.10/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.10/Chart.lock b/incubator/traefik/0.0.10/Chart.lock deleted file mode 100644 index 64fee09251b..00000000000 --- a/incubator/traefik/0.0.10/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T19:53:02.647461276Z" diff --git a/incubator/traefik/0.0.10/Chart.yaml b/incubator/traefik/0.0.10/Chart.yaml deleted file mode 100644 index 7bae1bbdc7b..00000000000 --- a/incubator/traefik/0.0.10/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.10 diff --git a/incubator/traefik/0.0.10/README.md b/incubator/traefik/0.0.10/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.10/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.10/app-readme.md b/incubator/traefik/0.0.10/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.10/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.10/charts/common-6.13.4.tgz b/incubator/traefik/0.0.10/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 zcmV)cK&ZbTiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POw!d)u~>IEwGDAN>_rCjHjxT9oa)b@g4JXI&?4b5CA;W2e2l zJ$+(`ge24y$r7L()y@6e?}NcR3F^gm+@2ouhr}X*nE^1E84L!4q?pf(e0V&=6_1yA zp8ebHKYM$7dru!fhX42W_L~3iJ$v-%-}WEx?>~ODzkl#(@89&=Qe8KD{HB^wQgQ_5%cI8KWBkXJQHpv(}LB^&aJkl`FNPO71LFB!2% z6M;yBzzfWA#bODnW~54roRgdb)Oz^r>EpeM9$dMnMDR;un&o|ILzFQFD?HGBO_1d>ZGOf%Ue^DQ5fs`JazEV98>t6?|Eek#1sd zq1*E`-hUK7?rk*wYW^>9RulG_1i8jPn$%e)7*Vn9TUFYFBFd4R(~3YDl#&U}sgNE$ zWB}NjJu$JXBFji+z>pk|GXjw8*SLq&hg43ECQ@4ziTM%3_aAUZQ&fN)V+dD*o-!+z zbCUC2lwvY3az;2RD#SSEWKw60@E$^PirKJK)L))lZ;)-kef$T3ME#Aoy6+kMoph6X*8D+evmMEih%3;*yhwtV4SK{>uJ?i!7 z98azMf?t9~3Pwda$uH_hqZG%&65x2+cwg38hRPzNiKs4qoxqP#uLq^H=u<2=pW{5; zVSOWU)zAVrf;rMtg9_@n=BZ_hwEK6(G1 z(~SNGJ$XW^gydZCv?%zsE%%zti)y*DsBHDIlwgch3z`s|Bt@O`Mq5t_L1U5?mpxVN zNEWk(KuHohp@gB!8R0WhA*>-H1ro7YQD-R{6C{OZ+C%Cu-BTKx!zqXtf<454V(1z$ z1By+zvyCn=Zrb0Kwho|0dOO)-EHmp@7zN?}8LyfG&C$EB# zE36*>LK4n2Be!XgtVr`Dt5Y?ccw8*ZY-!F=WMDcX?6}A$bXp5robbz{x{$ia=nGh2 zq8X`3+{tNP&9yA&mG0oKq-MOB)8AB;vPe%!MiO3B#$W+d)OVvVtVa&&t7 z=#1(>kLrMYEDJ^kWsweOJ}IiXEGt_1gCGqCLbvtJ+vhJnyg7RPVx*RY6H2o59hvCg z>dgt}vk}aLI4@EndZE|TqpIz{1O(k{Tta3dm9I^)0Xhaj zh02N+73E8mWSB`~JEfBesRT=NA&!B$$4hBhBr}rM!a&sZjzzUMfC4>0Y{@v84@6rA zNkutLaHcKJEGsUVp7X+@z)DzJs6cDa{4`+k<%JmBL5lM!sfwBnEFoRc$wx7ul%rX} zzyK9&&xHciFZ8PA#~I0$kt066ky0Mb@dXjfIU;41SOVru3)}*oE4B75tr!@ic z@#qB(ATyFot#G1!ZCFaBJX8u9$Wtb&Ag-8%Wic?cvL=`i!$190k;%_L@2n6GNs%X{ z!v|8o(0n@JGooMjdr}RY%Ac=je!+aku%?V?)+tG9 zn3Bgu&dEn^ESeL!nA6|Y=b%Zn63$$xF1w6o4S2$ksOW-bWa_T$DuUCudA5946#QG7 z5jofGcPyshiLUrUEE2KYVgZk4ki?8mNU}^a(nXso;4Y)(Bo~?;(VX&QU7AU25B-l& z=t?6Yp|(kiXs)%sSm|Ompe*kBwOv<&gTh&{C)dVgfduiLRK=K>=?C2=KWxCRQkUtv zQbQR+o%b1Ckeo0!5Cci!FUE1j>vB*E^laGgw3B54V<5j$pimj0Ta*byK}gf!ILKaD zhj`|J?MVyA_lkRNO=)YMi%;i57796iN!d)iRhmG&t59*78{j7fw$whBffZ~ z6#twW@zs}2E-|0!Iw91OH4(Qq;Uveu8OMSLAF~5hmyzp(j1-fK4&I7OR_C7Up&H`Li&)fqu{J+i<(z zZMV$sVc>r?snQOb9o5#4S4*~8eV?z0G$cK z<^<;qiPauv2%|avNayuj5cTA%M|+3+PxizLSkwhB5=5f9L}TeNq8ug#3s0ygo%81D zUa!YVHK#fDw(Wc)7lsydbUCAm^np#Nm>Grh#y5MvWXJ)F=7cdkHBJ_ESy9eO9&2>c zNL*zjRs>e`32{CSa7l+^S(6nw9f*}(T_uDKh5fkLA3iXq_h7&Oa}Q}Mz-3|N#mhVu zt001A#pUJ=vD+isQJ8jxG@Og2#yPBm&%ec4Hpa=tS@EivvbXt*sw%4UKd2k@#-~F5 zTuDh`{u@q{4q%iMBKc1D1wqpaCuCA*+47F42igJaNlRU{mS)b9M~kVg-0DoPbk#0q zXz8~G@KJz-1m}WhaGFXdupkrUc1j_H4_8ZcL6(ToIn8jTmtkKDp8QgSSxfZ@b|q=v z(q-)p0aYWQ(rn$=_(J=|LHp3TAX9JA?bK??C|6j!LLGrSmM3u>_Z{I3?rotV<}wHZ z=V)Jp*>#*%;6N|(Y-vA3EnHm?u^iPTNYLs>i)wEhUV6{!$%KBC;I(d(Lr0m{5setA zhH|&NlR}3&%2au&UP_f3jw0%ax#^6$QJ7DvVjssMJ-Az)URyG9VMy$OY(&HA2CGb4|G*d%RO9bO;8|;sg*mM55U` zMa4&rvL~WkSrxoUiY#`%oz^A5aCZ65g=KucEB`+gf1DkkDBb`5`N_FkT^iBilQO4E ze3>IGY;qg_kf&%$xRq5j=cE#>^#0u|_zIHEx{;mMOM*uLz0oA&9JHbg!cd^8jrEG$ zOY!6$v|4Vz%?NV*$nYihNB7)K&N#s-Dkcsd zQTn_D6fhdG7-6-SDtahYQ%~>2GC6dv0)T~qrQK59(fDLCCWmJS=(+{V&f;K@@HaIsRDs;W0NvJ{vuVXCow zb|cGl?kXz__^_CuIZe}yT;hr_Ef9Ex$%J0GUoO680Ev}2Av*pH*Srv#IKgsx0(*!M zn8Ogx9h=Aob+|CajKyV1#0p5j7rzy1i_64d*qZXA!gm5)Mzf{ugR`n8Z;npU>G9F4 z7lu~L!#j+W5V6+x$PqLaHAk?2uQoR48av6;LCus3o6wIWeQm31jXx0chUSAYW;AiS z+L=FpiC%ZW8N>EZYKLpN@5^~TK_HZ2gz_oPKXw%585`gPA{WJ^jQ+_j`&(WU=%t$K zP>Au^L?}H#?<8>MMgqV|wEu(xEFO|i4p*;=_o$g#e${m1oK&p zHX{icSMSh!Cw*>k4k8t%rm)7GV}IyxhiE_Ee>~W0K{|s)_6Zz$@;*9Vj}|7aU_5V! z)Ktb9Wm!R>X+V)-HXB0*Yj!ip&RU~k`kcKwZL&*@zA5-j#Xv!*nGlbXv&0CLRRM8< z*dHA^9z0`?G%yiXl6^g{8Ssob6zNE46#)q*KStlZe`%fUzD`R>#pwk6sYb{k2*^Js z756qveD;5!IW5G*P1CRxyu!HX;T1;fdojy-p##K)2C`yBw1H#uR z+Jj_VxuG4La*^yJGB5e^Ijwd3(y=IM0XwCCK?u zOg``#`5>$R?R-}iRiTxlexTdF&jq!-&=6feenwnPy94BBpl2YQH9;oS~{Hqzq&A z*i0QUlmk|e!J1TL$;nj}C7!BaRZrR-K|Js4!p$0>W|KT}GA~kM zrjT`@j#Vg&8a_F$DXIQl0o}^6DPasPg#$?;(}BqYK?Rd;O>CMrLhlGpf2=4cZ-pge zn}0SV2utBuObm^>6+)j7X5GM@eZ%N)WQ6v=qXx8GVHRM~N`4d~RtC-faE$7*$kF*s z*y43Ah8Abpxe{BVVDmiRu`yD$p3!_EhGHhP(3tQ`LUM#NH;lLE^zk-bZ2A@OrL^j= zj*b!}q@yl7M(RFIdQ<2RW$nQ7d`?nYgD)$RM_?nX%rN5fa>CHgyQ9~GF-|VTFqx?B zzMe1&s0rSYBdh_7ffjX{an~!A1m9s&NyNUSf&GM2`WulSzX9w&$Syla6N0&zB~x|q zRCUNM2&e?-T6Nl87W$iwkvRE_znl{%y5!M?BKV=h&GHu-+8+VA}n3OD5S~*IdZfN6}Kr+#X=Nip< z$T*oVpS!3}-NQb*;@PqUQ&kA}WJZz;9fifKrLvWLN;OTQPaU^XS|qiwj@A03sI=AT zcZYO*L{X>31f8*ky`-J^ZSGRxgO;~CS3*#5FxThGS8#=6BL5THtWJABpXK@->@8_q z%8~d%ffVMH=(igvRXyjW@|3?s13Y)MIjJ`?uaGv`q^5m*u;+Y|tHk+oppRhLqqH5C zl9Mw?@`tlDJa_yxG*9V*rZvvQNL@&)o8Sb@D30@l#68&vu(|YsRi+LdrkG=SKFd`^ z;w`*%ZHLG+9wPYeDEtQx(Ax@uwTUvyxRcRB$nm;tVR2p?>y6LIsr-8j{0HAr`O7nn zlNrI~K)oBlR)OmEH^M}dhMVZ{q{tbsFog^eTd|Bhn@IENfGng_W{4T1(;Uv`2sJu< zApX^dzWY7#%bfMLC!HimGlVCwfxmQUl4tL?KGC)bX&T!A=jj0FoDTGxeoy}uIF7}E zEM8mO|XU zJki?*vXDL{dMl>}aheVk0Rvt@UlX1TfQEsX+3@E8OUj4+p3@F<4w#lB6z%`#LA?L; z>v%uj-`kViZYY&Ac7P)708WZ|q~Bd$UdG=0o@Yzy&{1vGGc=SLhFHhZytrqgP4%(o z2k1wFYF6VcTcV02#e7ck6#O$z=)OH{p{mQh$^vBsFVrqR1aS*yPiRpy2|Jk;)Nzy6 zj8w4<{>B+A5Y2_?gAj(9kZ(*nQW>i1T$oSJ@lbW5JfoaL8jA-HEHS%?)yYf{@S5gS zjB~6P&uL-S&$=y6wK|vWmEAchvaGn2={6obK$)1vy9lSh)Qrm=Xv|Pfgc!rsQl>Fb zxfZ1UsSR8$2riqseYC{9qFuofN4}a}@LPx~U=8 z@9JtGL+%KQWPx~A;s^~s2`MSQ(g})xkjY1!d|I(u1gL_t=)+lw!6!I6)CqG8RH>eH zQl<#SeoYyKw|V7HpL&DApyy`Kb*LLI4#tGz{oV!5(-G>JQN20gSXz(TyuG@zjR5l0 zzJejNNtygEDEb}cG*5+0eJrZ#(?Wpi3|gmBY9QoMU6yRP*oXI$+N-OM_FH>etP@o) zn4N1;FEmiHXVLFQm$`in0K8OZ9Z;My4yb(vz|D)+1;CbZ06bCv2(M`3c5|5NR;OCi z-7!$h(RWG-sYQ&|Np_E4B_=6r^F|^#S`cAyJ4n{_?mCJ@lZ18Q{9M_>6-nZ**+{7` zZ`#fc=<=GXe+-nQ(SQHZLibPfwDmvEvK#37(6dheKW*iIe!TzW(Y^k^iwE?-%Fo5C zWm#xl-&Wajkr1PoT%NA1NS=}kb_r_nS0-JOnv>8NGm@I*nsT#7XSVHD|2WHB^*{Uy zy(ZOECA}yToT;D>eHJ25T~g&YlRWOLp=(Jrw3?y>lJ6*OW|4kVQ<*2tY0ye&XF-`*Hh6{s{ybgIPJ<`_yX1?8;6|heKA3WV_ z=>I2=o;lI8=X(Ie8q0( zkMe7O(7nF*Q{CHwo&DYb<}BcS-n~H=ecdFZN%5-&D{n$*#-byUVQ_0R94WjRjyYWV$y2 z{`pOSD&)TRYAV;gA>*OG(g=+XjXOWm7cT`D*QSQMw}kT)?c~IPXMyxvU)&3cB5$GI zz4$lPVd+2dE{{^40E436>SzD%CLQT^b>)z?0XuqkJ~f;lst?Got6I8KR49h~no#WA z`((NxaH*6}lT*p!pW~13olB%(@K@LoK14~43+oi_lUffYupMH1``#G6H%9-3jM29J zr_TZ3-X73e`|nZ9|Fd_0|L@&A!u~_=U?)e~doNXr7H!(;laTsa3%SG6WyBfZueXEq zow^@OWk|9abg%>8+g+(}J|*a(D8Gvy>a;PVLn99KD}RGSmu!WHD5F7rmM{c316p~I zWy#@J@(v5TjTBUwdBGbXWA|8}G9TcG*iMI&JXZN`BJ{A|cc@kLeh@SYQW}&;E}lr? z7_=m`*C-Dhir&KbN_Y|4Nom4SWQNbj*KfdX$;=Fk;k2Xw5c!zZa0)T{aTh)0nKJ~< zF6360oj< zxR#=Z-P0OD+lL`$SVj3-E=Wklzb~?sRFQ)x*lkTlAQd+oHV?0DggHN)KYL16@w&=e zhcBCXtfcr_C#UT6v!dsrk{vINloBfp(J|K$PlN5`lO38C5ps_EVQXf0FtjoJup&$> zibjVhiZ-FWjk7^L2)!9*e@G16Vwx2@BI(P*6_=&&KL*0w|?Z_)L=z&!)=f-G5} z3BRKWtr!mg_W}H?h6uIoKkw$gTd@My*nj&^pFVBae@_pd-rIk7@__&Eo0gC7jdx9? z5~kqgQwQ6X>}S6Xh4n>jgLoxMS0 z%srg4wtF$>)@@slk2vcFViIiLHWqJr;w19i63^9V4`6M}|8kMsZT#o{!QQi0{O7a1 zd-;DC56FLa{eNQfQm7-raO!onKcHLiLs(?k8Bi{gwGIHiVm$fb*fp=+gi382Rg^Xw zWQY7}@0E#w9QZCn?chaUE#;w_n_i{4?tSRsb$kedxIxoH01#W{yO)&>`@fB;xy+MG z$MB+mo7J9!DGK1-bnP#D)(dlM8u%;Lc7OCV_?La!^1mA6TUG$;_|41egQPPc)p01D&wX2bUl%~P6B??-VvG*yuibr2Mn z^t-C4%N0G}(}zOcd9(GBxR$~punzW*xkz#c3gxNy4cf5=uMh2wJJQG|c9#JH?q&Ki zw|qPDBHaJFIkrro>kn2LJAWoWV_W}A_x){J0BiLB-jlti|L^hBr%&(o|6M#v|HBRF zl?mxbyg*~4#Jg3s-s%Y`V$CH}Q0Z3U*z9tjb}E1FNAEAm#&>A%|Y zB{cu#wO@A@|8ekm@1Pa`@#ud3-^tVR|LB|MuIcYFhXq#!fS6kJ)PALAvO(N|1ZB(L1?~;dAF(Mw?&0|D#V>XQu@msexM&x=SB4&Vn zbep<~Z1rt-{(H{OfAeZkm5F@~Q?Ah*xPuHRx^uws3G15Zw1S>R>sX!%=$ewvLA&HM>h41xJ?vtQiO8eq-*fBdYK z|L4iGC->+7?&P_~`M*=eAh(?Xz)QQLiae~OpH64y^Za(}j|n=Y{)rsLw{=c%72sQx zT7S}`e%=YSo1FK1n?ENR`HbiN+zGS6fxjBioo;dLZ?iLe>&^wnC9b%<`dYybp6WBD zI!ACd(5pKQj2HY1eg_E^wT$bK2dXud|~TOtx=$rx6*nNVvNe57l)! zPn6GdJb`jM%ZI^&La- zUC5lp@fm_MD4N>7{L`s|en-F7g?k>@=I`{dyUDQaqpk%Qg-L^pXqrTw{BRs33JM3P zafigaLd+@Cybw&z^9cyUXb`n43y~W|CInU&HFu!}svuG4>Z*ON2u1Xxe?LOxn=G=T ziMCZ7-~+b}Z_WG`bKUx4qGkUpN8N3n16^(Z@9*vJx7Pnp_U_|9@8sD!{-=39^foO2 z*7-rlYbTWRwn@FOoU@*~t_9?jS(uH0(7`QhH7ZYN-1LbLS|+~xy>$xA$9lNJ!yE96 zdM?>T$j9H;@5521tzJ27iZk!)3Roczv~mQWS|9V2@Ro~w{T@f$cLzwB`={29>l({u z4>jm%^_2g8MUMqYXm?zo&;}R+PHG>}Nl|g#l}&hMQE}Gp(8flKEM~h`?cyvH12=%G z{UtMn*eQpM9f7%*;1Z8%Mme>N9_tEzCftV;`jMosX_{u_5?6As#RL>~Jll0u0a>Z|B|% zBZb!WT!?W)uw0|JU1PIe3NWAp-?X>smkXul4M`ANN68TB$WvBF$CVkb+PX!5oo4f< zlkSFLotnK&oBbQIs-otQ!CR+eXOUVuN@|=u?e-#z=#q>XN$QH2Y}%Wlad~{y8hLL` z*6Nqr$RFm+3af530!6vK>=~dm-+H|huF`Uw!m6^7Z-QstUWP`-ie^=@LWc{=d?$?p zVk*b-A~k1u2Mc>%ir#wIwE}LXO%TLen1RF?GO*3`O*=P5GeZURl$Vksq8}4d@hFTb zBxE5;he6y)3^dj$XPVvR|LTelLC6a^SAD$*bhI2Biydx;4RrU6^U@AriTTWPc~~ql zd~?Uik1qlp888V0$v8@7;ROsoFx|qrN?IW&K`N}b+`KYoVcw?4rO2rYzddtulWZje z=s(-%aC2;s#a*s85}@(DG?&v}U0IoTQjrP$7)ju8Rc-)mi!vlHMb1;-owc3_<4$f? zbX8F!F3oF1QSo+Fgz|bmCY7uX-P@|$He?zUy;+Z+S;kt6DwKNW{s7-!^6B>f-QGFy zHT(aM9_=^Je?NKp=zjnIPM$yE`9JSOv5wXYxa!h#rJc_|sZ z>8OU}SeBGG1@Dh0IRbFdbbNdZVvv;V5)XoT}l4o8v_A;Bhm^azKY|+r(!EA6! zd;4@2d=?fQeZZS*D1uaGoAz&+9 znm8r>y&dO6d&@3}?d3_drsS&vr{CZV=LxA+)79i}r=so$|D8vCsQ4-iP&f9h!jlP2 zRIX94gS=0{o(fc6h0~?+6jlfCa6Z+WpIu)^T@$h8rW!9?9sokXD{G2%mjiqr*Baycc;YBOz|v#(UT#nbl)PMde7am>*m|FvE=uAdjC?-TK~@nxkS5(7if+D zXaCWY=KkNaXOHgl|KG{e%&Zc+Qw2l~_{9UTZhPYKyo$TD%s^gfq+yYzaNU#-v?US{1;koKYskkX}4PCiYnle^~;~Q-dc5G~}DD<#1 z#u&{`TMdHL=J=%Mn^%lR}b ziVHD9Sy5cnC5jgN5sIX1?KLht&a6bXZqz+f6%W8PvQ&Ajak#3Erd=N_Y18d-Q0sFn z7WA<>z)*V5j}{?2YOZy_aZW;rFA-|nP0fxLHV9E%(d3CMCnDM-#BH?pYji?T-y5=t z`z|A|%^IblO`xVjuCvT(>ll+SOAb3KZ^_m61e6C|)7R|6zB>#qDQ@Kk z16n883TQ@_aX+ld#p1};&DzwMB!GUCmTB=7sJ;a{5IbInN$C_S)&M&g40>VLn-MVq z*P8^`h%?(}KlOThpPGn<|JP$kbKpbvt+#XPJJK58^q~dWdEU3W%38;1M#JG3i_sSg z85O2UkVqx?hiX_HP^%qpce_k!+5f*3V>bLSFY271kZMk0FXyxRf1W&Q<$r$m?9rop z`~NPUYvg}x@&@{)7|Spq%1~A3y)l^-mA)yQ=8WSklebEAdWwE2#&HvFNUtjeP1X1%J25W!pr zdAuPDQmIc#k#kIQQaJ}P2deKG;R6_cx67SFYjh6L-8d_0PDYR7N6t6V;aCjoPtkBp z^C6o>yC@nY(a%mHTumD(ubg@GVHZ7|m2+^ZHn_>*VM%W?D=u?1c;~Xq=!+D6!6LLH zB&(e5kO5#;&XpjP_6L(zL%#{NwNMq043?H;bW*M)z^25v7+q8lHVsh829OZIPidwf z(+*{cc};7THgmI_$E+TQ3#ktlU}wo-2L)csJ_{e*-ngr--Az~WeuSg!5-*vU#1m2> zoFj-Ecup&n3t3MmM!yPK=v+0RVLUVyMu%vE#Y!l6a2Wc`lntH#Z59e_p@b11B3{+u zGsXV3l&jwg{03&|Yf&`_oRgH+^Tta?eDG( zdD)4fgGz+Vhpq6099~YF(N$;&Hh`cR-|scERx)Q~B3%$Rbs&!~wAZ|D;My?RT__a$ zeoNbcS=`Nu z5(@6!j69#V>tXfIsTllM8(r#SL7Pn4egCA%cD)+`fwB>{HGwoTp>s9rR6}dePOv3j zV4BGca}QA;MZ)AzObT^1W&g;(VE@P?6b%LgaNurzHQmEzE*rIa+sef$L%aQ>6+C0c zg~>A(C(0WcZZL!vCx0hP*ivRBQ{~bI!{;#5BL0|mtL4pD3geI87QFs{_QdcDH4)|-x zXy?G=2D&V8>T^ek)OpSLb3)4FqFg#r6IQF~^OKSa0qbqar3cPYaDOLD83eDxuh&v! zks0T>+tLqZMHtDsfoO%KUVvXg^q>1HBuniDcXAk{&_@?!i3)ERR(HIkEBl`UJ-qKAqkV2^@2&Zg7n-2dNu zdeFT8?b*}4`}p5GdEm0+W0|MJJ-5$hxFRXSNmV$PJ#ms2i_>LM#}8ncq91a2FJ z^)&X|=|^)qFz2M2;DoSaWq|@FA!I=bUVP2s#eSURG*0qlBG%YB;erggTK}b>If`~s zbPd=Y@j09J!IsVc1H|O2`R^s@zJUN(d;aU7dH>6^r_UbW&;Pr4VE!LvS#gQ}UXO|L zk*RxM3+V?3S_~KajR+=2<_l6C7xNM>5%{nDc>h16 zfR}D61ua& zd~adi&a+DXt8@N0_5iMv|9fr!-;@3O_|H3eT>DSutJ===(|aFc^64-#;GY#2Zo+qU zzeneGN+7?47Y=$XfW${-spUKD@|2B4Rtx6>l6IA@l#*>YbDZNTNe5%OwPLblp4xot zZ83YQT5yw|ZFR#SNZ* zb%=IM%BsL;y=;)5yjYHYXRZLdDgpHXa?fDV5WTRF0BYDruj)KOPanabbbeY-CiElZ zat>PIy<^Cjim;(zQfJu`{aWLUPN+~6WeEck_kJW2I+W)EhZr1&#w5WtBZw7q0t+}P z)#WfwD9KWpW+J0=%1J8Lb$mt{+8Hllh@ZbX6=i8Yg^=ui+H=E{M1^28#SQR| za&$?vOe_&=Cg@}c1M!O5)huI!gdDcXSH=|uuJ@Ef@U6NC@|Jk51+L9+ts)Jc)2&<2 zcQTe$S8vwq#OIOSIA3v1V4i#53AHt2uM(qpra>bEh@vE1riH+-3|DgPs!F`8ONMV>I?vfAfKuNA=qy5 zW-29)Fk0Y@rl^T?=L^=4x+n@s;Kt*viG!^|Ly6MC-?h*ck+OAdrhjTWb>>@ zaHcezii6NA1C`8Qep7mf#RWnirs_YbV%B|fe zYc{Vznv1rlw)VVc9Qs4pNS77mq)C;F&I4s4gJKlf0BcQ+hbbg~dH`qm6@r4OEYc&p zrTB_6E>95o@6BPbE19vw{q~$D+?)lrrPLjk_GobvjRVjII|V>X^(lwisbo*^Xqs@I z7tpuRurTHzh7cuYJpJ-sS1X+Tj((M{G_OnLt5$Ey*Bf=DqhT@&zpF1Dz#DgChR5w* zY@uy}U(tt7WfW;guHTIr9tV5T)(kRf@U!2$!6MuCG~R@DyD@Fn^|pSPk;C+?!n^61 z;12%wDOxi?O>S>~=^B>L!}~$_+m6GgGa-my^*gv4`F45cH zuiA$-T@j~Rsq!>HW171xejlbptjyMR-eI>CVSokBd|7>I zEBI2LRGO<%7gvWZk>GbvoNUh1o~{c5UMY!W?{B0IRzTlO4)Hl8i)o?kXo9aap!O;n zf;2tX)9sGv25Lq2>{=@-2=f|4=-uPgB-c|lt-)KPR@AtK zOe+sV*N8a-rlMx-FzIxnu5O|E^jf;b1^(yOE4qanNKHXdOKR#~Gk{h}OjXz$I1|s` zoKdQ9P*S$PZ8N7d%?^jP0p6B$?0|fGl2IWDNyQG_*N}(~l1-$c=KqEy^j_c2h~1j> zYs0%0$)~^uq+T20b`sA*4vvT#j~9?_2F`WSj7&+2m`Z$>sKjTNGm^W;B2~LHjvVy% zBfPX}u>-i}zz!IZ-O`~68B*md&`~H-(P<>Z3xZf(mKm9ooZ}3#zA?lL1RmX)%y(c; zFS#O~)uk#uIz*X6qo3KgnJ+F5pbG&#ye^DJ6OYPLyn#!XE0UtAX<-1!c0+0l+6JU# z(dd;Y=wJ^WJPtNem)Q|(;RJK{n**xj%7tsS4i5Kyck+H6yXs<=>}gpy$bS47?e9I? zzGW6tcgv*56GQvN07q272S+(c~1_=PV-qeb-E!OP*O}yKT=z)TE zAd0CjwZv>Ypa&a_=)t-nJ-F$Z9&`<=r??w;14>Y>b;_!NR*D+RG@QP0eN9_=UEK$Q z{`H>l{;%LHq6)?SmKKjx{v71?;5BT%SJ-gCxTLFklTX^8@HMaqIvUQ|mb za9t!26Rr%bfd${W_)jXho{LTi)57##(IaEVHf_xuALaQm9u@Gp3yg z4Uo$7*bC=jTzP|bKwq>k)73QMYN}L+&2W1&>TZv==AsHpHC|rp!e0+dMkgd$CYjFc zrGMTWGAGrX<}%s&oG>OB$|SyYKEAf!Mo!mm58PqK0CK<=+(?Kx`$roVZ`%L2a%Ji5+;(GN-wO9Xg-DDm+dBp>q z-GI>OgSKc?F^kcO460`(N$6w=2!|5Hq^QJHq*alNrLpn*M5_d7SVWL~;a1WUOH3=7 z&?c~Q5sQk8#s@PAA1?eaj*_5|`Kp=I+FcRZ#K58EF?ntP{1wFn&2hJ(WXXg|KRXb~KQg zH+s4}T{qk0TjvHliJ*G|wjnkzKnvZ72G^Shdb8hz7BDLwdXq2EnV$AoMV+0NYS0^y z0}Jr5B|`Fr)*4r>@D}ya4`W11lsn>hfXpi^i9I=N>jcHG%PS}-@dq99-p8_5&ijlL z?3Rx3enI|b?cLDCZy|3b53p+r<*kTSe6z#E2MwF4or1tZaj!|Rz!c-Q?@+k9a%{ls z5M32xvWDv6S3M-daOJH#XH`w!9G#-mJP)b;sQqaXoCpK&SIhToZkEpHCLZS0)amTVdu#pAmHg`&N`Sg7>6)gZ@h8fez z7g{ej_ZF~ZM$$SXm4@ZL*c{HRVEm0t%_B-UKevOS&2jzr%G&OBZ_ccj!~F1^b6yb? z+|zHg!hv&~)r^zsTUs&xBjvO2Wyyw-)KOt=%hOzCmQz6Fk1e@HUcqy!H!E|M*v^`# z&CeS+kfs$*$O)+^aCecXP{}FrU8}(6<1J)}@%_rl?Y-Hu{r)vzYs{^N-?;;_?-5N? zka;-si8e%*8QRg5_Q96kXlk!FLYwxdcN>*}WASV}(T*~TnKY}MpEnm!d65#6(dN^q zp8Nae(D4K`4@_bG_sya5A|sWJL34g?3Hz^Vb8cY&-S`%Ob@{)ZJ#L==eD-92|K9$) ziwBmTClEbg3_hLbz%%$ZF!x|>-i+cfAxVRV7dIUKVby>8-npyR&3tgf^5_t$c!;Lk ztr2UX4{<*X-!&>>$P=I{z)QW8wFldJm1ODw@=??tRwPe}yg*lbJe@!py+>i&0e_8p zPMe`I4^8Apv!DF^RmWNC_`+k3t101di~LS&v(J8Xmi+#K`?qx^PXIHN7V?(2x`f^l z_)^s*xGC5Gi_wlLfxck7&LAbMgqQmKs22EX#J z&F{J@KXg5Q^TXNkiMhz#-bQ|QeA4o;d3Tiu2=dt{P|X4ADWsbwUSBW&!F%;N^M5~j z`mA;T_tX3PzwhRe@*l<+$xMS{?VlA>nrtTZm2=ZvR8UrQj;p24i>R(FXbSt5Wvo8L zs=CQ>>%u%y(mwJomT6*i6_8U;U7g?;R(hjtr;FvbC07=+w5i)Y)K}>}*r-KvLxx37 zI{NLqEmQ-FF*#e7GOrbg8CaK*Sjc;* zRZ;mFfSJ6g5`{9U88@3KepSd7AKIHb=-OBHw|E;Y;0^qswasKnfM+kLaVz~gBP}D zU6Hd{McAy!(l+d7i46gBIwwWVJ4yDxZwR#XePd0S-sdpH4c8IjKW|6>ueJZ&{m^S# zfotr)gGYOf`(FDLr2?0~T=};iQ+WW~P8zvl;izHHr+{|zRO#1MJxz0SCl+xYghVmA| z3ea&2nomC1IRH+ZZaX<~K}3V7FP#A9os3trMF66Wbd$%JJdzx$Sv|Iu)Q8^;mk5a1)Q`4UM)j771^iF7j%H3bZ*1CKeR6^Qy%(;(I6KXq-)3 z9BOs)P5bM*VOlXze_4n89X}iD|Ic~<)1$}D{Er8Fdyk&n>;JoW!2h#e|8L|AGFzJ3 zf6)+#uBPuc0L+TYzV7gGyHe7M?WSgT;YbB9KY0F&Me;@;5M39x_^@SJ_@sWMjMIDy zg5DQ%aMRW$UNTfxWI`&0bL1DN6U1j24!|?QO~#2PnTM-TuF1JQ{0hD0Gg4hrMvx=} zlEM>o^24$8(KpaGTbPHkkvH_q4mc6IDuJoe_RBc!+i7IV-egod@%7vB*m-kbspTBF z4T2hmXcz8g2TzJhdKFg@w6;dbC^f3oROUZevqU=W67i=A5i%HCku}W`mbMX@mwfr0 zR{s3bZ%z1V+fsHx%}Gk@mZ#8e<{5C2EExr?=hYY({f)e$bK2b13nDRvLwMk)E<0*8 zH{j8HylGF`wF*?wKjk2m+NiQeEX=9|cIAX=>H#&MSN4l81>Q7OQjjxhpZ{y^Sar5U zI(|Kl(5D;R!cu*lN>6Yo5+ii1CYTDmMS`CTysZ&7^SIo)^W{(QDElv-k!((F2<)F8=GuL398A zU~lg}{_9Sj2k50(zoj*7{P%j_*0~A+pyLWxONiw;t7-z-6xjL#r&O%tFv<$9??ka* z(NS5-8wJ$wNdZ?6W5np3X1LN*e^*{prEy$h2J#4QtEos@Co)|HCpi}Al7ewGCj63+ z+}_c{SL$NNv?y}{l&6n#!0Pgb5#!g{^m(L0-m;&=2$UO;4S^y&RRaGu}2|HNMa@nz09 z&N4xeXa{stuLok6GKA6hB%7mGs#|1+i{6h%@7}z8^W6xYegEBeD>;p0OP5Y=DpqksUyk>+zwpS75eGd znkE+mF-16<)-)yT=bahnB^wQgysC-p=eVe*!#U1toDKhPsBtQ4d~vY%9n=}_?GN6T zBp-<3ANJ9NR*c8J0Xik}+KHcjq!+Xca=$lF7Zw9a&nZiaDz&9k`68Z9hx`Y2a`yd? zXS@=X1WJU_Pn5Bm*z!}#XZ1Kvin)Vmhy`g-k_~fmIZS3n!AQS17z}zxS%%)x>5Mb< zjxbU!NQwrKGsR);6QvFQ=o!7;qvXFZ{|4&Lj$2m(tL6XWgZ;gx{C{-t^xpq>Cy$U} z(p@Gb%RsJ>dOe4)DMK=XfM!c+6q-DT%f>lXF}>s7_r)bykZKoQ5`;5m%Hk|j@*l1o z&r@8b605`%qnEi9`)QHXkSahxpmTxGyb|I)S$p;OT(g z?F0CwJ33WKBXGWSD%hAeIPw70n5=MUoB0Rdq&KjDGs5B9ou3RQ0bEPK$&MlOj(@ z$=OhyJfrz^Ko%6thaqN+PV+%oq=Q@-%MUcJ0nXC_&N&_EH+@NNHEnl{aVf&R|DpuM z9y>f@6Iua~ninj=pkJM4|5r*Gc$oi&en&@XDim!|(ceVf4EpUzRa9_vo~M=cs6soe zzlN%g3q;!EvZC}WNk@Zk2zU9#1zzNeAbnHZ(Am};nrq;i7_}$^+HWSNRV0t!EWM?})m-Qg12sK`D4t#sJ5;y)XpmZT_5Ogp+o4 z3pz&Taz&>7FhUu&W)PQ($F|wM46>u~qE0MS7)?=8N&z4Uvo&{-ogqc#ah1UDBxg3W z@u#2B??|3!t*iDOI9lXM9W3?JdnWH7R{e@|cOHND{v{$ZJFrk%(xebjAPzw^_WkKM ziV`NIw5~`wnKP8&TxdO9QC!p|l1mFArJ8p&!yS2Qob5^G09QZPrU@@l zL)4%HIETv8G^RBUBF02d_5bnQc>KA|gAvJ!PCYB=$e z7*!P?zpW{uY7KHpG|i{tV@?u2z$J)UVDEt{IDCMUgfJ#-4?ZLMbzik{5g78RMqZXM_W76G%8mg)XAS zg>(yR*O8_PAiIZ~n_cmq5$`)MgaAP5%mK-HMdjNe;mJ^xWN3iqxGV)(FHc12iZE4G z=P0-Z=EP|_Q0ND|0DG74WB?QlE-9bEp93uE9`;R3^{focx*umGN44N-ujCwG5TTR_ zS{5~IVp?&+3v}Kg2hI&jb!B#Itd6p*xMVtYo%lvRim67qt)^rnz-lE+4ZwslNR&aP zDr9O_t{bhRrd!5TT(WeHk=ZI#w05)J&h(9P!%RDsLxy_WD0gFqEs$@ zaJ57iWa(-o0r$%}ruml|PVABjISm4)cS8&_p}CbPW-j$@Sg`Z*nx<(+E^+10rzn|W znh(a9(IkS&^-8Dcb1JB;FucNKLNDAe7hf}Eu1D4rQ7pXXn9~Gj*;3t1&cFaLYZ9B& z%7rF0n7ocaLY8h^Kx(lt-HEoQ{D@AB>jGQ=+F5OV7Meagk~@r)kZ!B*5hAE7Y7Xal znbP}njhE!G9R^d78Q8 z+CIP}23?8y%>3cw9RijU%x5vW74T;*lk^0nIN*5+wrr{+gM|FlF7dw|qWyUP@nCNg zMEX2kmypuRMsmJBXb7bt%n8grIf*Hgo0D5$RR?D_#0sT1#;ShU#6K$(uUpo{iW$}h zBu0X$jSS`*o3MlNpKTiEVOapv-;r|v#FC)Z!K-^pW~yJG%`{|HawIPS;jB^XH+5yZ^pf)VFvUjx{6ECQgp$g`#W z47G4|K~jXZk9Qd$pJ#2BuuAgm)u~a9rVG9);Hs9SB9L1PhDzF8Lco+&Axv_;o27-1 zhkE5w(=D@3EpNFt^fjiJ#b}jNwo&vN-dLNHyltiXCW$Sn+uq3BFTg1a)YxBZOdY>? zs83r!W1`I{zgxr{FDg`#d9ff!6#^5Fs#(|ov%OivveS|2XO+e{}D6*FQl6cP|HY4t(bl35PNQ<^WlF9(moWE4}3<{ zVUNF^@0#TtFVL5RFO|cNxzNWo_s7#Y|JT`dx2$s|%1&(N_*sA}we+SFw^3|X)LAMR z0eX|9aA<8H6lW(EMt^H?!v1#@nBiy14(dM4BMCIGvrL#v9t@bV zkZ3|4uh>Np0nbN1YmW9PBrK%sdsV)b|civyZ7 z&HiTnklG2&IKio4CdwJAih_4h*xn^57m3~;Xv<$H-rgT57s;*(Zr?RA=%S~UXRU=E zUJoSGcj%iJa>Xl}fi)aeVFk3mgcNk!^SPyyi_43x5AXI%2_Z-02Zc|RhmPIK3o7T_ zP#p(TF3sjCgF#9b8!?DsIyth6lIsxiK!6gnteYZxOv3k=q+}6EHlxW*F5}gHGq`nH z1JfRk7KXOdByvVx+I(JFoTfrl$mqN=nZSatS}Ojud|!fNNA#z&?$_}%%9blCJ%N@>;RQ%S8pAhp6zq)PAtMX$-csFsl(D~$NOoG`TW?&$SkjFSst zf(Yw=$vBz!T{QzvEoDn+kivWswbWXyNCReyqSGF;3Y+Z$!1*ctjYt~50b0~))N?c; zn2R;kR15)Sde3batbJjx>$`L?0vinWiUAN(t<4k$XnJ} z^9}}^Xg-eF1x#m2Htg{kN#MNCgjq`%8whbk;V+1+uFHWWO{+?oa#0uWBKVd5UIr)+ zz|jfVLgofY4JwTxDO#yoR8uwsS*NDjvZyOmT;@namE9IX*BvVM!iI`vej`F~nj09= zFp|;(qwmkoPE<|3HZ;e-1)qrTLr86A!VUV4CtlYHVPy?l$?bWuu7mGzKb4mH%qq5a z7^2r*v36O=jEf{i=W=XD5P)&6PCrQKvm#5GhNU;!m1u524Yi}W5RiHOeix>#_BxC1 zgJN**D=)a(TQz*>0M*vZ&t=-~K72Z`_C+bZH%4b?&bj?xsF&uW$3CM4ELekA31 zTr7z4Yo&UoV|go*#Aw z1xs)Sj2?}ISlo?D{V9z`z|6amcB#B83jVEG`>W5}EW-kO&pHZbqX0XtUDhqLO}U$e z*Xej3m(Z^8I$!0sr@d)s6Vxs5a&_X7Sr|6z=2JH^iRP1{noCQk)zK2@b$eMXlUMb! z%%pzJ4wpe#D?sK&N=`Z=wX~;DJFTFcy?|M~epTS~8=T=hf#h5%dZWwfArK1x7J`CJ zaJqm8=if@W_F`4rx+2idbjRfK$kIv}TSg)Q+%;iHol!`Nh^{Ck$%&mINZn0P3DrH< zIV35Es73)*mx=Y^c2{Vhi?Zjt^8Zuu$Jz18ISlvt`{yU;F_LDlc%cm75?|&BqqE}^ z!wBN*lyEy!Y0gO{=Fj_guiz`pYv(Y;sz!N9zdJb>TQ;=i8!L^JPA2M_87~-dQWbNl z@$DfA_yRWdxdnI*yQ6ArGF29}%U@bNIoCo;(eK?I>3NXPO8_iy$QBH%G@^TFjMk?r zxr{6Sz@G2o3f~zS7J!ala*Z5pmo_J@)T>0ig zInt)!%Ee2-ZuIM~Io9f$<|;~5=@T>Ext+^^G7eO($GQEbFs!yO7>fvWn-LNoE5K% zDSMm0sH&nmzuS&+u7&Ih>*bK`z%6;xlm`G2(i>Q)YRe~>96WHwts}IkaXfhBp5Hxp z4&2f_r3;$YI1`5Tg%kt?ClGhUh21OUz+XAv&Hdv)CjU3%z`b&^e-OXpX>mI^R_FhD zbnvK^|L4iUqsRC8f9~Q@$sLj8gIq|Otx12xcBZNPnD^42B%z0*fmz5gSDOOS^a=o@mmqjEbB1liFpisE<} z$3ypJ-=R+?9+G(-+{AD@eL>f7h<+qs7O6#zmf*ZV7c{v*#Y9?>0OqWs!f$(M4WdB0Mf?4%v)g5M=X3YfaO4IQmMBV|>>4dh}hL@9q6f`FIze4$Hz08r4`9{IuPh7F*i3!h!IQW-tqxa@ zi_;OZ7n(#gMoFgWZbMt(3gLv;ID3vchJ|Zu#_PwHQytmF+0{WvvHpi$a84V>w*Ui_ z`51w+Lv_$}$A1q{WASUJAMZ%w`)vx^R~NRs^4A(?GNs&3drWp4^fV`e`Kzy{{HB8X zsG71HNa;=yE#TfzJ_``n5YD)ovO|^;QX-nmbaAfOlu&K)X36b@G$6YI7`qzAr?u#W zxM^X$7t{X&Vj8AJhm01yv|2zz?Q2VCQTt9svq1P)mCK@SpG_#g$QRd_$(EAW{JmBsv;h z*7wPLO+NyOzB*`;*OKI0(7W5JyqYIh7yo}wUcEeid3G&kT@Cu>>n7+e0eHj)*y0Dcx%yhw>E3I@<_u5AK zi+r)6jc#qv*SM4h;sx1h&EmGv+ikGF$QK*f>oP)abBi4kj#dhnjQG(=UgI)=M^)1I zZ_4^VMR1Ga&rPE~SX-=Lbe>bxv2HT3|6hCxH_9|jV9?Ey46;hx zNBxcH?;P|^P;ZK3&GPCsE`L&^@H09z7;kY6^&(&F`Ur1x1tmt{X8RA_i>Xr?DJ~yj zezz7|r#98uCJU|5!b*Y|$-K?G0mvg1MXseJS}ebY?Q9v}u8oP)7su~joLS38ezgXs zMlVB>g4kUd|1YK;Wp8b$8P%Zdx>~|^WQ$x=O0n4nTEwVOpRNs6NrzHe3F}X3Ec|iS zf|z?vb?O@ppi(?o&2j(tYYcqbd=Pl9J?>#aZFzOK)o9yB$u2_Ofu?S0p<5H~Cq>0? zvT1=`&7qj8HVkVjbmu8KJ%17Q&G{kLYTHV>lND zOB!FrxC&wAISl22+C`y)5Cmp!e>oIdVs%OJ0+k#H$H?NZHuC}r=TpLFeTt))!Vy)j`D$iI{Y@h4H4Zq2*Xm>|Me z=u2RF^NkUBhr_ zAokvOH1o!0g@E1N_Kirmfe~SoF8yE=^jWh)Sq!5?bZ(G1iJC@DzMjzOsMQlnJIY0r zUjrvIvP}hK?%mgU$9#Ahrt=>upGmdl-b6X0%q?sc$U&0>&CX~=oG+!!Akyl8k{u`v2_dC&cmpcv2YnQz56^{cve>B#T z=ZS$Q zrZm~%A&R0En?4;je47rX$UBT?{jA+&+SolP(S>?sLrQ{g#}&aBtuLR}F981N6IB1) zPwV`jJVtt}2LM-}|J!@K|Lke={NLlp_xJzb$+PMCKh!wV_c@LLO4j=vX8;?JTZaIV ze~9m|b`DTBfAfQY&F%`H1Z;Jx`15R8lAG?%x&rIkTP zUu?EaSlf~9HN*P87k?^;lSVwojQn6WXPu+is=lDoi%R-*(}jn9I+q|FEeS71&LFjB z8+zAH7|q`iNYUw2779RnjX$m|8(!{&k5+X)!Upke&DFi2jd82*-HkIjRNGTw`Cv<8 ze4AVjMkAPcH`Mtfw7(nb=n;ApZkk+9oXQ&m+4e0|C!3vyB9F^uiq=C#xLS)e%FHeO zhmTtyZ6gl9j{3LSkA|FJPd@JG$*=!qk6UfFMu|E`WA(n4zo6@qRojG_&x5;Q!8#qA z29jTPO}pLgF(615XoVABAEU#7VYJR%xeauduRGA$0ymGaS}`gc1W9eCh+h+4(d3WP z#4Fr?`a%kSRozl}QeGaPynoMWMt_5BnpaLE=W~8Whhm+uv%0RF6h{kE;VE%ug#!YSc`mU8jBhd)MJ-dp!Ri z&8HP%>~^#NuJ!*t+ke)~|NHpaeg5COdHyW^zn7BrZrk721pBY#-&1Yh%%9ilsJ8#E z-IoD>-7TNbR5&}1-G5)O)u%UQ#P|jw0Bg+6P9K<}Z>7)cxxB(^1FQBYC)XCh4IR+z z$m+8RCDKJDdhIArbFbQsGW-A7d$!)TjitYz!cPx%dtljC zk}81!Js8fV4V=`7d{E#NMNLy{n+-+kkdzV^=zl-h8@abx?vj+P#^jSN?(WRa?#_)n zGq8o$H_d5DmN37!^=P7$OeiUuG%W9UQnAP1N9b#~S|?sh3CJ5pUS4&fTVUEQ zqHG}`fQ^H9>GR+Zd+AYEB1uH-}dsF2_(O@Kdq6**Z8zP%u*axS6@2 z_HipKNEvR=vlgT-E;G)RPNI!YO6$Vm4?5D7{_y{nyZElADF7k$*Gd5q@qxkv?zE3m3*d6V*#oY%_5oYQ2>8;@_TFB#ym9W{x<8e7;#n{ zu!sArphC+)*tAyGgjRR#`X#qPrKFB}Gcy%XRX>1arb<(IE zbWkOFP)4cJrHV9{{(SaWtjyQ-ZtO4=Ny0LD_WXsLgq0T@M!~RAX8{H?h}ZtaYg@6| ztH|s}q_Fa&M1alam8`HOw-DJR6etIX2LT$x@j8q?qjV{quw7-j5D-5Mx}oAgpB6bl znsFjkfoZYd9aD*>1nC8%wqpPCe6g#vk!X2&zTiLE{a4^^FrUPd7Ht6ZUtOLrtRAC_ zJln?0RvEcFNaZrAWHSC^Zm{319gB);bNc7l&>Ikfgd*&5F*E}j)^7k{OrmMVMT$0mN+YEOYFj>vhxhEW#a&jShYk zDfL8RyWCbL#bS-3W;KxxWAPZ2Nr5+)I2;>Xc7QYt zX;Z6Dv(4*a%fQekIcrNa`gFdy?X@BHYi}Rv{>K{StGFoea{uvXcHP%KkcRso)9Lg_ z<^IR?#mgc8!-G8ga{uF^-g@t|>%Omn0HZ&p+aNLt+%APcWYh14fCMI>b5x)-LOZB( z_ddI>P3!*5;`iCL)hzxsF7MRTbKb^>kYDsXE=nxMiSL)DqjPFc(h~4IkB)ts%p60P zD$~{c*aNu&iJQ&`9-qEKssy#>)y%#V+|XyM}C%pR(*Tvq#=%*NQDN4mV{s z7DT`GJ1;(PKDLQ~Rkvstc%Ww2pOrh&ly${vx>Rxk_glrDfq|YCasA#k%;Ftu@;P(?Rzn=4o`zhuqeh=_FeUbntOF% z=)Ev>M`o?!!WNQwcZ8;Js#BUFvKakvv_N4V)ww;J(w=%jaY?9J;qRMD)eUi3MsijU z?gv^0jW-jcDfQf#Vq2D1Rqmkm;E7u6Q&F!T;C+%2QmSlM3%_ksV%vfZm?jpOw-GPC zpiaoOb~siv&_TENVj2f^E!qyNN#=1nYDs6=Y89r-rfA?=opIDbd~^>Fox@+(@Y6AT zbPIQ#!bg|z&>{SF2Vb4RRafW`5)LZXY-hp^PV-xf+RYpV0x{lZIoHLR7=Tpprlcec zHLI?Ed>yC9#T}O6y}A_0CC#i z)`G|@@wRxEXPb53WWS-q&ZpDqKZVBA=@gBd6~=|YDBT`iy!-j}6C~$g zwmrPrwmX9=qTAA9NU;|15Mh36GsN&~SBs1501XxwZ{}@4vAI}H6+XCPrJQj>?bbl4 zz(`QL*%Fa)5X&+UO{-xINE`13z?;EJeKM><`ctyOc1w2(qlVXw;-Nl*$!_cM`>*=_ zpK9?X^@5PXOx zh4Z}tD;bUV1MGyye|`*C9qtIg4gk07^VMUh1R%IKj;JE6M$k#XlpC{#0)nhi;bL=h z6MqFOb~k}N3`|Y1vi!>y<$1hB^RXQ_4XKYpXLEsu9+1)tDVV4x6(f8q*28)mIo>R; zj#Md}sF73x08`b~h!6l9^KG>_&xWGW*X2ED|s47C< z^?7~@0jA;nC@2{Uc`l+bLH~KX=$Y9_crDIO&)zMT!NBE~P#ErPd*{ArqIC2_JBKu$|u%jO5I?|FEQ5?l3~`lN^J_0i|eHOf;|qT(pdj^nf_ z!<1wZ2%yvhhHk4c4R6tMe2w|W2%7=+_T-~J=P>SIwwSP4I+~5rER{Z+Ve84=5&rfite|-vv@UGn$Ybf^bJ^DIs+yUJJ2|uKSw!x ztG{yii*Do6c{Ajsg##L3faR zb^M?a`ZNO)7x=N4Hz)9)#D?JPkf#$Kud^hM2y_07kn#SdzK5h&`?Hq@weWG(!u2*% z)DvByTA?yrhGi%of=Zu~M#H%IYCHVFdmv7i=<8vC60|~MVRT5F(pN{p;5Rbj@4=jp zY553aLqPmg(IXy>+jhxP7h+tAVAflW5pV}H=`eB|$c*|P84@Bi2M{qOm+ zm(SGt?=MbXOo#7(5Ap2H_rGk}`^P?E$S3t>FIzf(#uEu-_+}^35C6#vSaosc!vS)* zS>WbofaL%0|l>`~QD1W81L$}d^|c@GW+d8{WRjT7V9xXd@i6KXghcl8vt zFJWv{{IhY`x8!QJ@!W~S^1=o%w!^9WHcp*<(Nx$2-Hzeww74LyrF}Vs4aabFmTZa= z2p)L6e&Oc_U5f=M>UTv-u-vQ$=A_pbn?6z?zneK^QH9ppN40uShO+QcXi`w3^OS$to2 zQRCw2aXpk{GFW5dA#OOs!rg_ROSG!b@3x9LzN&^5zIx4M;)Kzi@)Ow|^rIcsTXhfS z{Tj^zgqh*%I9G{%6W{s_xD3nC7XkD&CYC$-eljCNkUwQq$PKSC3Ce9ZLpp-?lHUBs z8oWL%nNjv7{SxNO(~F&2om(3R!A*>k^d%Pc7# zdeZr-y&(8k+vGl~f(U4bJXeZhrtxrOauh_~{T*jxmTW6^dKGdU@E3GGh(igX;Y!jplkq|58!pdR?Tm&@C5uG3ME_^k?Ibxs@74#jj5n*mQlBXP3!TTSxP(NRm0 z7ky|U7AN3ginN1IEYphgn6J<(%kM=8S_PZEa>Sr|=^W)HV*o@a@lofKcdNYr2%wvY;CXWa17h}XJ1f+Xu(zEou2GYr5VvlAxiSrd4Z=n5jTFubj4l4=ru4qn$Ve{xM%CJN?n`D6i`$f1G zOEM4_tV2O=_vrJS1tUgX!8AD))^8-OpJKmY)8*t{JTfO^;H6X9_t4GMTFRKVQ6@OosTshj{iS{%=9IUf(f* z>ab5K4v@{=Ef!EClpYVL(^7!)=(#)1j;W?E{Nw^0yV78=f*3=jmHVX>miU*31eUDH zei$ncbkCU)%+*Svt=lK9RKPie3z#?YMV6QHWvmW<0dOzVrNJcK9$crH(*dBlv$y)}>sAizMVNhA^_#aq*0M~mPNY<4;YxfB#DO^=NsL?= zO;VOu#S*}9&qF>1J|&-K7e_YXpD53D6Cg+BCQkvqKG-{M-O8T?@@fGSya%|yKxr=; zS7aA@c#Hs}jv8_z=(_qy3fpY1!`Isy0#Y9#pNKbDgk9uWnMGOBQHp^AjF0b{Ox-MN z_$aerba{56+;m(gaTJ&McOXy{Vn=H>>YR@01MR2F%L`BDS3x6v{lP8#1cC%^;R)~G zuiFz7_ccSKZ}yi{5A3pUcF7kX;%0o)*m>DwJ3NMGc!p/ 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-tcp" .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/incubator/traefik/0.0.10/templates/_ingressclass.tpl b/incubator/traefik/0.0.10/templates/_ingressclass.tpl deleted file mode 100644 index 27f8467fc9e..00000000000 --- a/incubator/traefik/0.0.10/templates/_ingressclass.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} -apiVersion: networking.k8s.io/v1 - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} -apiVersion: networking.k8s.io/v1beta1 - {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} -apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} - {{- else }} - {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.10/templates/_ingressroute.tpl b/incubator/traefik/0.0.10/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.10/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.10/templates/_tlsoptions.tpl b/incubator/traefik/0.0.10/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.10/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.10/templates/common.yaml b/incubator/traefik/0.0.10/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.10/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.10/templates/middleware-namespace.yaml b/incubator/traefik/0.0.10/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.10/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.10/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.10/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index e50f00c98d8..00000000000 --- a/incubator/traefik/0.0.10/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.10/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.10/templates/middlewares/basicauth.yaml deleted file mode 100644 index 54dacb824ff..00000000000 --- a/incubator/traefik/0.0.10/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.10/templates/middlewares/chain.yaml b/incubator/traefik/0.0.10/templates/middlewares/chain.yaml deleted file mode 100644 index 49dfd9610ef..00000000000 --- a/incubator/traefik/0.0.10/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.10/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.10/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 654eb8a6cb9..00000000000 --- a/incubator/traefik/0.0.10/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/incubator/traefik/0.0.10/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.10/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 624e7ff0d34..00000000000 --- a/incubator/traefik/0.0.10/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.10/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.10/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 9ff49d76186..00000000000 --- a/incubator/traefik/0.0.10/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.10/templates/portalhook.yaml b/incubator/traefik/0.0.10/templates/portalhook.yaml deleted file mode 100644 index a0702e88354..00000000000 --- a/incubator/traefik/0.0.10/templates/portalhook.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.portalhook.enabled }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: portalhook - namespace: {{ $namespace }} -data: - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - {{- range $name, $value := $ports }} - {{ $name }}: {{ $value.port | quote }} - {{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.10/test_values.yaml b/incubator/traefik/0.0.10/test_values.yaml deleted file mode 100644 index 277cb6d20ba..00000000000 --- a/incubator/traefik/0.0.10/test_values.yaml +++ /dev/null @@ -1,324 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 - -portalhook: - enabled: true diff --git a/incubator/traefik/0.0.10/values.yaml b/incubator/traefik/0.0.10/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.11/CONFIG.md b/incubator/traefik/0.0.11/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.11/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.11/Chart.lock b/incubator/traefik/0.0.11/Chart.lock deleted file mode 100644 index 852d3a2c881..00000000000 --- a/incubator/traefik/0.0.11/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T22:09:28.802857011Z" diff --git a/incubator/traefik/0.0.11/Chart.yaml b/incubator/traefik/0.0.11/Chart.yaml deleted file mode 100644 index 7699b4bea1d..00000000000 --- a/incubator/traefik/0.0.11/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.11 diff --git a/incubator/traefik/0.0.11/README.md b/incubator/traefik/0.0.11/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.11/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.11/app-readme.md b/incubator/traefik/0.0.11/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.11/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.11/charts/common-6.13.4.tgz b/incubator/traefik/0.0.11/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.11/templates/_ingressclass.tpl b/incubator/traefik/0.0.11/templates/_ingressclass.tpl deleted file mode 100644 index 27f8467fc9e..00000000000 --- a/incubator/traefik/0.0.11/templates/_ingressclass.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} -apiVersion: networking.k8s.io/v1 - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} -apiVersion: networking.k8s.io/v1beta1 - {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} -apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} - {{- else }} - {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.11/templates/_ingressroute.tpl b/incubator/traefik/0.0.11/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.11/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.11/templates/_tlsoptions.tpl b/incubator/traefik/0.0.11/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.11/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.11/templates/common.yaml b/incubator/traefik/0.0.11/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.11/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.11/templates/middleware-namespace.yaml b/incubator/traefik/0.0.11/templates/middleware-namespace.yaml deleted file mode 100644 index 43d2728446f..00000000000 --- a/incubator/traefik/0.0.11/templates/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares -{{- end }} diff --git a/incubator/traefik/0.0.11/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.11/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index e50f00c98d8..00000000000 --- a/incubator/traefik/0.0.11/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.11/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.11/templates/middlewares/basicauth.yaml deleted file mode 100644 index 54dacb824ff..00000000000 --- a/incubator/traefik/0.0.11/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.11/templates/middlewares/chain.yaml b/incubator/traefik/0.0.11/templates/middlewares/chain.yaml deleted file mode 100644 index 49dfd9610ef..00000000000 --- a/incubator/traefik/0.0.11/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.11/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.11/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 654eb8a6cb9..00000000000 --- a/incubator/traefik/0.0.11/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/incubator/traefik/0.0.11/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.11/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 624e7ff0d34..00000000000 --- a/incubator/traefik/0.0.11/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.11/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.11/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 9ff49d76186..00000000000 --- a/incubator/traefik/0.0.11/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.11/templates/portalhook.yaml b/incubator/traefik/0.0.11/templates/portalhook.yaml deleted file mode 100644 index 886b69510b6..00000000000 --- a/incubator/traefik/0.0.11/templates/portalhook.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if .Values.portalhook.enabled }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: portalhook - namespace: {{ $namespace }} -data: - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - websecureport: {{ $ports.websecure.exposedPort | quote }} - {{- range $name, $value := $ports }} - {{ $name }}: {{ $value.port | quote }} - {{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.11/test_values.yaml b/incubator/traefik/0.0.11/test_values.yaml deleted file mode 100644 index 277cb6d20ba..00000000000 --- a/incubator/traefik/0.0.11/test_values.yaml +++ /dev/null @@ -1,324 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 - -portalhook: - enabled: true diff --git a/incubator/traefik/0.0.11/values.yaml b/incubator/traefik/0.0.11/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.2/CONFIG.md b/incubator/traefik/0.0.2/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.2/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.2/Chart.lock b/incubator/traefik/0.0.2/Chart.lock deleted file mode 100644 index a280be9f0c5..00000000000 --- a/incubator/traefik/0.0.2/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T13:17:57.000679073Z" diff --git a/incubator/traefik/0.0.2/Chart.yaml b/incubator/traefik/0.0.2/Chart.yaml deleted file mode 100644 index 0a8c3092460..00000000000 --- a/incubator/traefik/0.0.2/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.2 diff --git a/incubator/traefik/0.0.2/README.md b/incubator/traefik/0.0.2/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.2/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.2/app-readme.md b/incubator/traefik/0.0.2/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.2/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.2/charts/common-6.13.4.tgz b/incubator/traefik/0.0.2/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.2/templates/_ingressclass.tpl b/incubator/traefik/0.0.2/templates/_ingressclass.tpl deleted file mode 100644 index 27ea822a64d..00000000000 --- a/incubator/traefik/0.0.2/templates/_ingressclass.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- 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 at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ include "common.names.fullname" . }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.2/templates/_ingressroute.tpl b/incubator/traefik/0.0.2/templates/_ingressroute.tpl deleted file mode 100644 index 922872618cb..00000000000 --- a/incubator/traefik/0.0.2/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - traefik - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.2/templates/_tlsoptions.tpl b/incubator/traefik/0.0.2/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.2/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.2/templates/common.yaml b/incubator/traefik/0.0.2/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.2/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.2/templates/middleware-namespace.yaml b/incubator/traefik/0.0.2/templates/middleware-namespace.yaml deleted file mode 100644 index 16156ee5e12..00000000000 --- a/incubator/traefik/0.0.2/templates/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install diff --git a/incubator/traefik/0.0.2/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.2/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index 98f7d1c170c..00000000000 --- a/incubator/traefik/0.0.2/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -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/incubator/traefik/0.0.2/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.2/templates/middlewares/basicauth.yaml deleted file mode 100644 index 4e0f326a2f4..00000000000 --- a/incubator/traefik/0.0.2/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{ 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/incubator/traefik/0.0.2/templates/middlewares/chain.yaml b/incubator/traefik/0.0.2/templates/middlewares/chain.yaml deleted file mode 100644 index ef592c255ba..00000000000 --- a/incubator/traefik/0.0.2/templates/middlewares/chain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{ 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/incubator/traefik/0.0.2/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.2/templates/middlewares/forwardauth.yaml deleted file mode 100644 index bb90d33775e..00000000000 --- a/incubator/traefik/0.0.2/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{ 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/incubator/traefik/0.0.2/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.2/templates/middlewares/ratelimit.yaml deleted file mode 100644 index b4bfa938e6e..00000000000 --- a/incubator/traefik/0.0.2/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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/incubator/traefik/0.0.2/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.2/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 070c8fc4a90..00000000000 --- a/incubator/traefik/0.0.2/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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/incubator/traefik/0.0.2/test_values.yaml b/incubator/traefik/0.0.2/test_values.yaml deleted file mode 100644 index 1840f8f5d7b..00000000000 --- a/incubator/traefik/0.0.2/test_values.yaml +++ /dev/null @@ -1,319 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - -# -- TLS Options to be 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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- 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 diff --git a/incubator/traefik/0.0.2/values.yaml b/incubator/traefik/0.0.2/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.3/CONFIG.md b/incubator/traefik/0.0.3/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.3/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.3/Chart.lock b/incubator/traefik/0.0.3/Chart.lock deleted file mode 100644 index f7e92d1ad48..00000000000 --- a/incubator/traefik/0.0.3/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T16:17:26.15411465Z" diff --git a/incubator/traefik/0.0.3/Chart.yaml b/incubator/traefik/0.0.3/Chart.yaml deleted file mode 100644 index 1568b73230d..00000000000 --- a/incubator/traefik/0.0.3/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.3 diff --git a/incubator/traefik/0.0.3/README.md b/incubator/traefik/0.0.3/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.3/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.3/app-readme.md b/incubator/traefik/0.0.3/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.3/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.3/charts/common-6.13.4.tgz b/incubator/traefik/0.0.3/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.3/templates/_ingressclass.tpl b/incubator/traefik/0.0.3/templates/_ingressclass.tpl deleted file mode 100644 index d1ac5b45210..00000000000 --- a/incubator/traefik/0.0.3/templates/_ingressclass.tpl +++ /dev/null @@ -1,15 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if and .Values.ingressClass.enabled }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.3/templates/_ingressroute.tpl b/incubator/traefik/0.0.3/templates/_ingressroute.tpl deleted file mode 100644 index 922872618cb..00000000000 --- a/incubator/traefik/0.0.3/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - traefik - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.3/templates/_tlsoptions.tpl b/incubator/traefik/0.0.3/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.3/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.3/templates/common.yaml b/incubator/traefik/0.0.3/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.3/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.3/templates/middleware-namespace.yaml b/incubator/traefik/0.0.3/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.3/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.3/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.3/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index 652bddd05b8..00000000000 --- a/incubator/traefik/0.0.3/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.3/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.3/templates/middlewares/basicauth.yaml deleted file mode 100644 index 1d4836eab8e..00000000000 --- a/incubator/traefik/0.0.3/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{ 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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.3/templates/middlewares/chain.yaml b/incubator/traefik/0.0.3/templates/middlewares/chain.yaml deleted file mode 100644 index 67939a24ebe..00000000000 --- a/incubator/traefik/0.0.3/templates/middlewares/chain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - chain: - middlewares: - {{ range $index, $chainData := .Values.middlewares.chainmiddlewares }} - - name: {{ printf "%v-%v@%v" "traefikmiddlewares" $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.3/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.3/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 4cac7cc2cc6..00000000000 --- a/incubator/traefik/0.0.3/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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/incubator/traefik/0.0.3/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.3/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 65d55b909d2..00000000000 --- a/incubator/traefik/0.0.3/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.3/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.3/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 715dedf8f1d..00000000000 --- a/incubator/traefik/0.0.3/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.3/test_values.yaml b/incubator/traefik/0.0.3/test_values.yaml deleted file mode 100644 index 10fada4b153..00000000000 --- a/incubator/traefik/0.0.3/test_values.yaml +++ /dev/null @@ -1,320 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- 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 diff --git a/incubator/traefik/0.0.3/values.yaml b/incubator/traefik/0.0.3/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.4/CONFIG.md b/incubator/traefik/0.0.4/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.4/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.4/Chart.lock b/incubator/traefik/0.0.4/Chart.lock deleted file mode 100644 index 60bec48de40..00000000000 --- a/incubator/traefik/0.0.4/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T17:11:26.524680087Z" diff --git a/incubator/traefik/0.0.4/Chart.yaml b/incubator/traefik/0.0.4/Chart.yaml deleted file mode 100644 index 2c54749a34b..00000000000 --- a/incubator/traefik/0.0.4/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.4 diff --git a/incubator/traefik/0.0.4/README.md b/incubator/traefik/0.0.4/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.4/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.4/app-readme.md b/incubator/traefik/0.0.4/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.4/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.4/charts/common-6.13.4.tgz b/incubator/traefik/0.0.4/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.4/templates/_ingressclass.tpl b/incubator/traefik/0.0.4/templates/_ingressclass.tpl deleted file mode 100644 index f558e2ce8ae..00000000000 --- a/incubator/traefik/0.0.4/templates/_ingressclass.tpl +++ /dev/null @@ -1,15 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.4/templates/_ingressroute.tpl b/incubator/traefik/0.0.4/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.4/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.4/templates/_tlsoptions.tpl b/incubator/traefik/0.0.4/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.4/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.4/templates/common.yaml b/incubator/traefik/0.0.4/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.4/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.4/templates/middleware-namespace.yaml b/incubator/traefik/0.0.4/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.4/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.4/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.4/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index 652bddd05b8..00000000000 --- a/incubator/traefik/0.0.4/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.4/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.4/templates/middlewares/basicauth.yaml deleted file mode 100644 index 1d4836eab8e..00000000000 --- a/incubator/traefik/0.0.4/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{ 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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.4/templates/middlewares/chain.yaml b/incubator/traefik/0.0.4/templates/middlewares/chain.yaml deleted file mode 100644 index 67939a24ebe..00000000000 --- a/incubator/traefik/0.0.4/templates/middlewares/chain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - chain: - middlewares: - {{ range $index, $chainData := .Values.middlewares.chainmiddlewares }} - - name: {{ printf "%v-%v@%v" "traefikmiddlewares" $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.4/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.4/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 4cac7cc2cc6..00000000000 --- a/incubator/traefik/0.0.4/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -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/incubator/traefik/0.0.4/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.4/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 65d55b909d2..00000000000 --- a/incubator/traefik/0.0.4/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.4/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.4/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 715dedf8f1d..00000000000 --- a/incubator/traefik/0.0.4/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.4/test_values.yaml b/incubator/traefik/0.0.4/test_values.yaml deleted file mode 100644 index 10fada4b153..00000000000 --- a/incubator/traefik/0.0.4/test_values.yaml +++ /dev/null @@ -1,320 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- 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 diff --git a/incubator/traefik/0.0.4/values.yaml b/incubator/traefik/0.0.4/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.5/CONFIG.md b/incubator/traefik/0.0.5/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.5/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.5/Chart.lock b/incubator/traefik/0.0.5/Chart.lock deleted file mode 100644 index 512ce0d4053..00000000000 --- a/incubator/traefik/0.0.5/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T17:44:29.716387074Z" diff --git a/incubator/traefik/0.0.5/Chart.yaml b/incubator/traefik/0.0.5/Chart.yaml deleted file mode 100644 index 718d8dd3a54..00000000000 --- a/incubator/traefik/0.0.5/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.5 diff --git a/incubator/traefik/0.0.5/README.md b/incubator/traefik/0.0.5/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.5/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.5/app-readme.md b/incubator/traefik/0.0.5/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.5/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.5/charts/common-6.13.4.tgz b/incubator/traefik/0.0.5/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 zcmV)cK&ZbTiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POw!d)u~>IEwGDAN>_rCjHjxT9oa)b@g4JXI&?4b5CA;W2e2l zJ$+(`ge24y$r7L()y@6e?}NcR3F^gm+@2ouhr}X*nE^1E84L!4q?pf(e0V&=6_1yA zp8ebHKYM$7dru!fhX42W_L~3iJ$v-%-}WEx?>~ODzkl#(@89&=Qe8KD{HB^wQgQ_5%cI8KWBkXJQHpv(}LB^&aJkl`FNPO71LFB!2% z6M;yBzzfWA#bODnW~54roRgdb)Oz^r>EpeM9$dMnMDR;un&o|ILzFQFD?HGBO_1d>ZGOf%Ue^DQ5fs`JazEV98>t6?|Eek#1sd zq1*E`-hUK7?rk*wYW^>9RulG_1i8jPn$%e)7*Vn9TUFYFBFd4R(~3YDl#&U}sgNE$ zWB}NjJu$JXBFji+z>pk|GXjw8*SLq&hg43ECQ@4ziTM%3_aAUZQ&fN)V+dD*o-!+z zbCUC2lwvY3az;2RD#SSEWKw60@E$^PirKJK)L))lZ;)-kef$T3ME#Aoy6+kMoph6X*8D+evmMEih%3;*yhwtV4SK{>uJ?i!7 z98azMf?t9~3Pwda$uH_hqZG%&65x2+cwg38hRPzNiKs4qoxqP#uLq^H=u<2=pW{5; zVSOWU)zAVrf;rMtg9_@n=BZ_hwEK6(G1 z(~SNGJ$XW^gydZCv?%zsE%%zti)y*DsBHDIlwgch3z`s|Bt@O`Mq5t_L1U5?mpxVN zNEWk(KuHohp@gB!8R0WhA*>-H1ro7YQD-R{6C{OZ+C%Cu-BTKx!zqXtf<454V(1z$ z1By+zvyCn=Zrb0Kwho|0dOO)-EHmp@7zN?}8LyfG&C$EB# zE36*>LK4n2Be!XgtVr`Dt5Y?ccw8*ZY-!F=WMDcX?6}A$bXp5robbz{x{$ia=nGh2 zq8X`3+{tNP&9yA&mG0oKq-MOB)8AB;vPe%!MiO3B#$W+d)OVvVtVa&&t7 z=#1(>kLrMYEDJ^kWsweOJ}IiXEGt_1gCGqCLbvtJ+vhJnyg7RPVx*RY6H2o59hvCg z>dgt}vk}aLI4@EndZE|TqpIz{1O(k{Tta3dm9I^)0Xhaj zh02N+73E8mWSB`~JEfBesRT=NA&!B$$4hBhBr}rM!a&sZjzzUMfC4>0Y{@v84@6rA zNkutLaHcKJEGsUVp7X+@z)DzJs6cDa{4`+k<%JmBL5lM!sfwBnEFoRc$wx7ul%rX} zzyK9&&xHciFZ8PA#~I0$kt066ky0Mb@dXjfIU;41SOVru3)}*oE4B75tr!@ic z@#qB(ATyFot#G1!ZCFaBJX8u9$Wtb&Ag-8%Wic?cvL=`i!$190k;%_L@2n6GNs%X{ z!v|8o(0n@JGooMjdr}RY%Ac=je!+aku%?V?)+tG9 zn3Bgu&dEn^ESeL!nA6|Y=b%Zn63$$xF1w6o4S2$ksOW-bWa_T$DuUCudA5946#QG7 z5jofGcPyshiLUrUEE2KYVgZk4ki?8mNU}^a(nXso;4Y)(Bo~?;(VX&QU7AU25B-l& z=t?6Yp|(kiXs)%sSm|Ompe*kBwOv<&gTh&{C)dVgfduiLRK=K>=?C2=KWxCRQkUtv zQbQR+o%b1Ckeo0!5Cci!FUE1j>vB*E^laGgw3B54V<5j$pimj0Ta*byK}gf!ILKaD zhj`|J?MVyA_lkRNO=)YMi%;i57796iN!d)iRhmG&t59*78{j7fw$whBffZ~ z6#twW@zs}2E-|0!Iw91OH4(Qq;Uveu8OMSLAF~5hmyzp(j1-fK4&I7OR_C7Up&H`Li&)fqu{J+i<(z zZMV$sVc>r?snQOb9o5#4S4*~8eV?z0G$cK z<^<;qiPauv2%|avNayuj5cTA%M|+3+PxizLSkwhB5=5f9L}TeNq8ug#3s0ygo%81D zUa!YVHK#fDw(Wc)7lsydbUCAm^np#Nm>Grh#y5MvWXJ)F=7cdkHBJ_ESy9eO9&2>c zNL*zjRs>e`32{CSa7l+^S(6nw9f*}(T_uDKh5fkLA3iXq_h7&Oa}Q}Mz-3|N#mhVu zt001A#pUJ=vD+isQJ8jxG@Og2#yPBm&%ec4Hpa=tS@EivvbXt*sw%4UKd2k@#-~F5 zTuDh`{u@q{4q%iMBKc1D1wqpaCuCA*+47F42igJaNlRU{mS)b9M~kVg-0DoPbk#0q zXz8~G@KJz-1m}WhaGFXdupkrUc1j_H4_8ZcL6(ToIn8jTmtkKDp8QgSSxfZ@b|q=v z(q-)p0aYWQ(rn$=_(J=|LHp3TAX9JA?bK??C|6j!LLGrSmM3u>_Z{I3?rotV<}wHZ z=V)Jp*>#*%;6N|(Y-vA3EnHm?u^iPTNYLs>i)wEhUV6{!$%KBC;I(d(Lr0m{5setA zhH|&NlR}3&%2au&UP_f3jw0%ax#^6$QJ7DvVjssMJ-Az)URyG9VMy$OY(&HA2CGb4|G*d%RO9bO;8|;sg*mM55U` zMa4&rvL~WkSrxoUiY#`%oz^A5aCZ65g=KucEB`+gf1DkkDBb`5`N_FkT^iBilQO4E ze3>IGY;qg_kf&%$xRq5j=cE#>^#0u|_zIHEx{;mMOM*uLz0oA&9JHbg!cd^8jrEG$ zOY!6$v|4Vz%?NV*$nYihNB7)K&N#s-Dkcsd zQTn_D6fhdG7-6-SDtahYQ%~>2GC6dv0)T~qrQK59(fDLCCWmJS=(+{V&f;K@@HaIsRDs;W0NvJ{vuVXCow zb|cGl?kXz__^_CuIZe}yT;hr_Ef9Ex$%J0GUoO680Ev}2Av*pH*Srv#IKgsx0(*!M zn8Ogx9h=Aob+|CajKyV1#0p5j7rzy1i_64d*qZXA!gm5)Mzf{ugR`n8Z;npU>G9F4 z7lu~L!#j+W5V6+x$PqLaHAk?2uQoR48av6;LCus3o6wIWeQm31jXx0chUSAYW;AiS z+L=FpiC%ZW8N>EZYKLpN@5^~TK_HZ2gz_oPKXw%585`gPA{WJ^jQ+_j`&(WU=%t$K zP>Au^L?}H#?<8>MMgqV|wEu(xEFO|i4p*;=_o$g#e${m1oK&p zHX{icSMSh!Cw*>k4k8t%rm)7GV}IyxhiE_Ee>~W0K{|s)_6Zz$@;*9Vj}|7aU_5V! z)Ktb9Wm!R>X+V)-HXB0*Yj!ip&RU~k`kcKwZL&*@zA5-j#Xv!*nGlbXv&0CLRRM8< z*dHA^9z0`?G%yiXl6^g{8Ssob6zNE46#)q*KStlZe`%fUzD`R>#pwk6sYb{k2*^Js z756qveD;5!IW5G*P1CRxyu!HX;T1;fdojy-p##K)2C`yBw1H#uR z+Jj_VxuG4La*^yJGB5e^Ijwd3(y=IM0XwCCK?u zOg``#`5>$R?R-}iRiTxlexTdF&jq!-&=6feenwnPy94BBpl2YQH9;oS~{Hqzq&A z*i0QUlmk|e!J1TL$;nj}C7!BaRZrR-K|Js4!p$0>W|KT}GA~kM zrjT`@j#Vg&8a_F$DXIQl0o}^6DPasPg#$?;(}BqYK?Rd;O>CMrLhlGpf2=4cZ-pge zn}0SV2utBuObm^>6+)j7X5GM@eZ%N)WQ6v=qXx8GVHRM~N`4d~RtC-faE$7*$kF*s z*y43Ah8Abpxe{BVVDmiRu`yD$p3!_EhGHhP(3tQ`LUM#NH;lLE^zk-bZ2A@OrL^j= zj*b!}q@yl7M(RFIdQ<2RW$nQ7d`?nYgD)$RM_?nX%rN5fa>CHgyQ9~GF-|VTFqx?B zzMe1&s0rSYBdh_7ffjX{an~!A1m9s&NyNUSf&GM2`WulSzX9w&$Syla6N0&zB~x|q zRCUNM2&e?-T6Nl87W$iwkvRE_znl{%y5!M?BKV=h&GHu-+8+VA}n3OD5S~*IdZfN6}Kr+#X=Nip< z$T*oVpS!3}-NQb*;@PqUQ&kA}WJZz;9fifKrLvWLN;OTQPaU^XS|qiwj@A03sI=AT zcZYO*L{X>31f8*ky`-J^ZSGRxgO;~CS3*#5FxThGS8#=6BL5THtWJABpXK@->@8_q z%8~d%ffVMH=(igvRXyjW@|3?s13Y)MIjJ`?uaGv`q^5m*u;+Y|tHk+oppRhLqqH5C zl9Mw?@`tlDJa_yxG*9V*rZvvQNL@&)o8Sb@D30@l#68&vu(|YsRi+LdrkG=SKFd`^ z;w`*%ZHLG+9wPYeDEtQx(Ax@uwTUvyxRcRB$nm;tVR2p?>y6LIsr-8j{0HAr`O7nn zlNrI~K)oBlR)OmEH^M}dhMVZ{q{tbsFog^eTd|Bhn@IENfGng_W{4T1(;Uv`2sJu< zApX^dzWY7#%bfMLC!HimGlVCwfxmQUl4tL?KGC)bX&T!A=jj0FoDTGxeoy}uIF7}E zEM8mO|XU zJki?*vXDL{dMl>}aheVk0Rvt@UlX1TfQEsX+3@E8OUj4+p3@F<4w#lB6z%`#LA?L; z>v%uj-`kViZYY&Ac7P)708WZ|q~Bd$UdG=0o@Yzy&{1vGGc=SLhFHhZytrqgP4%(o z2k1wFYF6VcTcV02#e7ck6#O$z=)OH{p{mQh$^vBsFVrqR1aS*yPiRpy2|Jk;)Nzy6 zj8w4<{>B+A5Y2_?gAj(9kZ(*nQW>i1T$oSJ@lbW5JfoaL8jA-HEHS%?)yYf{@S5gS zjB~6P&uL-S&$=y6wK|vWmEAchvaGn2={6obK$)1vy9lSh)Qrm=Xv|Pfgc!rsQl>Fb zxfZ1UsSR8$2riqseYC{9qFuofN4}a}@LPx~U=8 z@9JtGL+%KQWPx~A;s^~s2`MSQ(g})xkjY1!d|I(u1gL_t=)+lw!6!I6)CqG8RH>eH zQl<#SeoYyKw|V7HpL&DApyy`Kb*LLI4#tGz{oV!5(-G>JQN20gSXz(TyuG@zjR5l0 zzJejNNtygEDEb}cG*5+0eJrZ#(?Wpi3|gmBY9QoMU6yRP*oXI$+N-OM_FH>etP@o) zn4N1;FEmiHXVLFQm$`in0K8OZ9Z;My4yb(vz|D)+1;CbZ06bCv2(M`3c5|5NR;OCi z-7!$h(RWG-sYQ&|Np_E4B_=6r^F|^#S`cAyJ4n{_?mCJ@lZ18Q{9M_>6-nZ**+{7` zZ`#fc=<=GXe+-nQ(SQHZLibPfwDmvEvK#37(6dheKW*iIe!TzW(Y^k^iwE?-%Fo5C zWm#xl-&Wajkr1PoT%NA1NS=}kb_r_nS0-JOnv>8NGm@I*nsT#7XSVHD|2WHB^*{Uy zy(ZOECA}yToT;D>eHJ25T~g&YlRWOLp=(Jrw3?y>lJ6*OW|4kVQ<*2tY0ye&XF-`*Hh6{s{ybgIPJ<`_yX1?8;6|heKA3WV_ z=>I2=o;lI8=X(Ie8q0( zkMe7O(7nF*Q{CHwo&DYb<}BcS-n~H=ecdFZN%5-&D{n$*#-byUVQ_0R94WjRjyYWV$y2 z{`pOSD&)TRYAV;gA>*OG(g=+XjXOWm7cT`D*QSQMw}kT)?c~IPXMyxvU)&3cB5$GI zz4$lPVd+2dE{{^40E436>SzD%CLQT^b>)z?0XuqkJ~f;lst?Got6I8KR49h~no#WA z`((NxaH*6}lT*p!pW~13olB%(@K@LoK14~43+oi_lUffYupMH1``#G6H%9-3jM29J zr_TZ3-X73e`|nZ9|Fd_0|L@&A!u~_=U?)e~doNXr7H!(;laTsa3%SG6WyBfZueXEq zow^@OWk|9abg%>8+g+(}J|*a(D8Gvy>a;PVLn99KD}RGSmu!WHD5F7rmM{c316p~I zWy#@J@(v5TjTBUwdBGbXWA|8}G9TcG*iMI&JXZN`BJ{A|cc@kLeh@SYQW}&;E}lr? z7_=m`*C-Dhir&KbN_Y|4Nom4SWQNbj*KfdX$;=Fk;k2Xw5c!zZa0)T{aTh)0nKJ~< zF6360oj< zxR#=Z-P0OD+lL`$SVj3-E=Wklzb~?sRFQ)x*lkTlAQd+oHV?0DggHN)KYL16@w&=e zhcBCXtfcr_C#UT6v!dsrk{vINloBfp(J|K$PlN5`lO38C5ps_EVQXf0FtjoJup&$> zibjVhiZ-FWjk7^L2)!9*e@G16Vwx2@BI(P*6_=&&KL*0w|?Z_)L=z&!)=f-G5} z3BRKWtr!mg_W}H?h6uIoKkw$gTd@My*nj&^pFVBae@_pd-rIk7@__&Eo0gC7jdx9? z5~kqgQwQ6X>}S6Xh4n>jgLoxMS0 z%srg4wtF$>)@@slk2vcFViIiLHWqJr;w19i63^9V4`6M}|8kMsZT#o{!QQi0{O7a1 zd-;DC56FLa{eNQfQm7-raO!onKcHLiLs(?k8Bi{gwGIHiVm$fb*fp=+gi382Rg^Xw zWQY7}@0E#w9QZCn?chaUE#;w_n_i{4?tSRsb$kedxIxoH01#W{yO)&>`@fB;xy+MG z$MB+mo7J9!DGK1-bnP#D)(dlM8u%;Lc7OCV_?La!^1mA6TUG$;_|41egQPPc)p01D&wX2bUl%~P6B??-VvG*yuibr2Mn z^t-C4%N0G}(}zOcd9(GBxR$~punzW*xkz#c3gxNy4cf5=uMh2wJJQG|c9#JH?q&Ki zw|qPDBHaJFIkrro>kn2LJAWoWV_W}A_x){J0BiLB-jlti|L^hBr%&(o|6M#v|HBRF zl?mxbyg*~4#Jg3s-s%Y`V$CH}Q0Z3U*z9tjb}E1FNAEAm#&>A%|Y zB{cu#wO@A@|8ekm@1Pa`@#ud3-^tVR|LB|MuIcYFhXq#!fS6kJ)PALAvO(N|1ZB(L1?~;dAF(Mw?&0|D#V>XQu@msexM&x=SB4&Vn zbep<~Z1rt-{(H{OfAeZkm5F@~Q?Ah*xPuHRx^uws3G15Zw1S>R>sX!%=$ewvLA&HM>h41xJ?vtQiO8eq-*fBdYK z|L4iGC->+7?&P_~`M*=eAh(?Xz)QQLiae~OpH64y^Za(}j|n=Y{)rsLw{=c%72sQx zT7S}`e%=YSo1FK1n?ENR`HbiN+zGS6fxjBioo;dLZ?iLe>&^wnC9b%<`dYybp6WBD zI!ACd(5pKQj2HY1eg_E^wT$bK2dXud|~TOtx=$rx6*nNVvNe57l)! zPn6GdJb`jM%ZI^&La- zUC5lp@fm_MD4N>7{L`s|en-F7g?k>@=I`{dyUDQaqpk%Qg-L^pXqrTw{BRs33JM3P zafigaLd+@Cybw&z^9cyUXb`n43y~W|CInU&HFu!}svuG4>Z*ON2u1Xxe?LOxn=G=T ziMCZ7-~+b}Z_WG`bKUx4qGkUpN8N3n16^(Z@9*vJx7Pnp_U_|9@8sD!{-=39^foO2 z*7-rlYbTWRwn@FOoU@*~t_9?jS(uH0(7`QhH7ZYN-1LbLS|+~xy>$xA$9lNJ!yE96 zdM?>T$j9H;@5521tzJ27iZk!)3Roczv~mQWS|9V2@Ro~w{T@f$cLzwB`={29>l({u z4>jm%^_2g8MUMqYXm?zo&;}R+PHG>}Nl|g#l}&hMQE}Gp(8flKEM~h`?cyvH12=%G z{UtMn*eQpM9f7%*;1Z8%Mme>N9_tEzCftV;`jMosX_{u_5?6As#RL>~Jll0u0a>Z|B|% zBZb!WT!?W)uw0|JU1PIe3NWAp-?X>smkXul4M`ANN68TB$WvBF$CVkb+PX!5oo4f< zlkSFLotnK&oBbQIs-otQ!CR+eXOUVuN@|=u?e-#z=#q>XN$QH2Y}%Wlad~{y8hLL` z*6Nqr$RFm+3af530!6vK>=~dm-+H|huF`Uw!m6^7Z-QstUWP`-ie^=@LWc{=d?$?p zVk*b-A~k1u2Mc>%ir#wIwE}LXO%TLen1RF?GO*3`O*=P5GeZURl$Vksq8}4d@hFTb zBxE5;he6y)3^dj$XPVvR|LTelLC6a^SAD$*bhI2Biydx;4RrU6^U@AriTTWPc~~ql zd~?Uik1qlp888V0$v8@7;ROsoFx|qrN?IW&K`N}b+`KYoVcw?4rO2rYzddtulWZje z=s(-%aC2;s#a*s85}@(DG?&v}U0IoTQjrP$7)ju8Rc-)mi!vlHMb1;-owc3_<4$f? zbX8F!F3oF1QSo+Fgz|bmCY7uX-P@|$He?zUy;+Z+S;kt6DwKNW{s7-!^6B>f-QGFy zHT(aM9_=^Je?NKp=zjnIPM$yE`9JSOv5wXYxa!h#rJc_|sZ z>8OU}SeBGG1@Dh0IRbFdbbNdZVvv;V5)XoT}l4o8v_A;Bhm^azKY|+r(!EA6! zd;4@2d=?fQeZZS*D1uaGoAz&+9 znm8r>y&dO6d&@3}?d3_drsS&vr{CZV=LxA+)79i}r=so$|D8vCsQ4-iP&f9h!jlP2 zRIX94gS=0{o(fc6h0~?+6jlfCa6Z+WpIu)^T@$h8rW!9?9sokXD{G2%mjiqr*Baycc;YBOz|v#(UT#nbl)PMde7am>*m|FvE=uAdjC?-TK~@nxkS5(7if+D zXaCWY=KkNaXOHgl|KG{e%&Zc+Qw2l~_{9UTZhPYKyo$TD%s^gfq+yYzaNU#-v?US{1;koKYskkX}4PCiYnle^~;~Q-dc5G~}DD<#1 z#u&{`TMdHL=J=%Mn^%lR}b ziVHD9Sy5cnC5jgN5sIX1?KLht&a6bXZqz+f6%W8PvQ&Ajak#3Erd=N_Y18d-Q0sFn z7WA<>z)*V5j}{?2YOZy_aZW;rFA-|nP0fxLHV9E%(d3CMCnDM-#BH?pYji?T-y5=t z`z|A|%^IblO`xVjuCvT(>ll+SOAb3KZ^_m61e6C|)7R|6zB>#qDQ@Kk z16n883TQ@_aX+ld#p1};&DzwMB!GUCmTB=7sJ;a{5IbInN$C_S)&M&g40>VLn-MVq z*P8^`h%?(}KlOThpPGn<|JP$kbKpbvt+#XPJJK58^q~dWdEU3W%38;1M#JG3i_sSg z85O2UkVqx?hiX_HP^%qpce_k!+5f*3V>bLSFY271kZMk0FXyxRf1W&Q<$r$m?9rop z`~NPUYvg}x@&@{)7|Spq%1~A3y)l^-mA)yQ=8WSklebEAdWwE2#&HvFNUtjeP1X1%J25W!pr zdAuPDQmIc#k#kIQQaJ}P2deKG;R6_cx67SFYjh6L-8d_0PDYR7N6t6V;aCjoPtkBp z^C6o>yC@nY(a%mHTumD(ubg@GVHZ7|m2+^ZHn_>*VM%W?D=u?1c;~Xq=!+D6!6LLH zB&(e5kO5#;&XpjP_6L(zL%#{NwNMq043?H;bW*M)z^25v7+q8lHVsh829OZIPidwf z(+*{cc};7THgmI_$E+TQ3#ktlU}wo-2L)csJ_{e*-ngr--Az~WeuSg!5-*vU#1m2> zoFj-Ecup&n3t3MmM!yPK=v+0RVLUVyMu%vE#Y!l6a2Wc`lntH#Z59e_p@b11B3{+u zGsXV3l&jwg{03&|Yf&`_oRgH+^Tta?eDG( zdD)4fgGz+Vhpq6099~YF(N$;&Hh`cR-|scERx)Q~B3%$Rbs&!~wAZ|D;My?RT__a$ zeoNbcS=`Nu z5(@6!j69#V>tXfIsTllM8(r#SL7Pn4egCA%cD)+`fwB>{HGwoTp>s9rR6}dePOv3j zV4BGca}QA;MZ)AzObT^1W&g;(VE@P?6b%LgaNurzHQmEzE*rIa+sef$L%aQ>6+C0c zg~>A(C(0WcZZL!vCx0hP*ivRBQ{~bI!{;#5BL0|mtL4pD3geI87QFs{_QdcDH4)|-x zXy?G=2D&V8>T^ek)OpSLb3)4FqFg#r6IQF~^OKSa0qbqar3cPYaDOLD83eDxuh&v! zks0T>+tLqZMHtDsfoO%KUVvXg^q>1HBuniDcXAk{&_@?!i3)ERR(HIkEBl`UJ-qKAqkV2^@2&Zg7n-2dNu zdeFT8?b*}4`}p5GdEm0+W0|MJJ-5$hxFRXSNmV$PJ#ms2i_>LM#}8ncq91a2FJ z^)&X|=|^)qFz2M2;DoSaWq|@FA!I=bUVP2s#eSURG*0qlBG%YB;erggTK}b>If`~s zbPd=Y@j09J!IsVc1H|O2`R^s@zJUN(d;aU7dH>6^r_UbW&;Pr4VE!LvS#gQ}UXO|L zk*RxM3+V?3S_~KajR+=2<_l6C7xNM>5%{nDc>h16 zfR}D61ua& zd~adi&a+DXt8@N0_5iMv|9fr!-;@3O_|H3eT>DSutJ===(|aFc^64-#;GY#2Zo+qU zzeneGN+7?47Y=$XfW${-spUKD@|2B4Rtx6>l6IA@l#*>YbDZNTNe5%OwPLblp4xot zZ83YQT5yw|ZFR#SNZ* zb%=IM%BsL;y=;)5yjYHYXRZLdDgpHXa?fDV5WTRF0BYDruj)KOPanabbbeY-CiElZ zat>PIy<^Cjim;(zQfJu`{aWLUPN+~6WeEck_kJW2I+W)EhZr1&#w5WtBZw7q0t+}P z)#WfwD9KWpW+J0=%1J8Lb$mt{+8Hllh@ZbX6=i8Yg^=ui+H=E{M1^28#SQR| za&$?vOe_&=Cg@}c1M!O5)huI!gdDcXSH=|uuJ@Ef@U6NC@|Jk51+L9+ts)Jc)2&<2 zcQTe$S8vwq#OIOSIA3v1V4i#53AHt2uM(qpra>bEh@vE1riH+-3|DgPs!F`8ONMV>I?vfAfKuNA=qy5 zW-29)Fk0Y@rl^T?=L^=4x+n@s;Kt*viG!^|Ly6MC-?h*ck+OAdrhjTWb>>@ zaHcezii6NA1C`8Qep7mf#RWnirs_YbV%B|fe zYc{Vznv1rlw)VVc9Qs4pNS77mq)C;F&I4s4gJKlf0BcQ+hbbg~dH`qm6@r4OEYc&p zrTB_6E>95o@6BPbE19vw{q~$D+?)lrrPLjk_GobvjRVjII|V>X^(lwisbo*^Xqs@I z7tpuRurTHzh7cuYJpJ-sS1X+Tj((M{G_OnLt5$Ey*Bf=DqhT@&zpF1Dz#DgChR5w* zY@uy}U(tt7WfW;guHTIr9tV5T)(kRf@U!2$!6MuCG~R@DyD@Fn^|pSPk;C+?!n^61 z;12%wDOxi?O>S>~=^B>L!}~$_+m6GgGa-my^*gv4`F45cH zuiA$-T@j~Rsq!>HW171xejlbptjyMR-eI>CVSokBd|7>I zEBI2LRGO<%7gvWZk>GbvoNUh1o~{c5UMY!W?{B0IRzTlO4)Hl8i)o?kXo9aap!O;n zf;2tX)9sGv25Lq2>{=@-2=f|4=-uPgB-c|lt-)KPR@AtK zOe+sV*N8a-rlMx-FzIxnu5O|E^jf;b1^(yOE4qanNKHXdOKR#~Gk{h}OjXz$I1|s` zoKdQ9P*S$PZ8N7d%?^jP0p6B$?0|fGl2IWDNyQG_*N}(~l1-$c=KqEy^j_c2h~1j> zYs0%0$)~^uq+T20b`sA*4vvT#j~9?_2F`WSj7&+2m`Z$>sKjTNGm^W;B2~LHjvVy% zBfPX}u>-i}zz!IZ-O`~68B*md&`~H-(P<>Z3xZf(mKm9ooZ}3#zA?lL1RmX)%y(c; zFS#O~)uk#uIz*X6qo3KgnJ+F5pbG&#ye^DJ6OYPLyn#!XE0UtAX<-1!c0+0l+6JU# z(dd;Y=wJ^WJPtNem)Q|(;RJK{n**xj%7tsS4i5Kyck+H6yXs<=>}gpy$bS47?e9I? zzGW6tcgv*56GQvN07q272S+(c~1_=PV-qeb-E!OP*O}yKT=z)TE zAd0CjwZv>Ypa&a_=)t-nJ-F$Z9&`<=r??w;14>Y>b;_!NR*D+RG@QP0eN9_=UEK$Q z{`H>l{;%LHq6)?SmKKjx{v71?;5BT%SJ-gCxTLFklTX^8@HMaqIvUQ|mb za9t!26Rr%bfd${W_)jXho{LTi)57##(IaEVHf_xuALaQm9u@Gp3yg z4Uo$7*bC=jTzP|bKwq>k)73QMYN}L+&2W1&>TZv==AsHpHC|rp!e0+dMkgd$CYjFc zrGMTWGAGrX<}%s&oG>OB$|SyYKEAf!Mo!mm58PqK0CK<=+(?Kx`$roVZ`%L2a%Ji5+;(GN-wO9Xg-DDm+dBp>q z-GI>OgSKc?F^kcO460`(N$6w=2!|5Hq^QJHq*alNrLpn*M5_d7SVWL~;a1WUOH3=7 z&?c~Q5sQk8#s@PAA1?eaj*_5|`Kp=I+FcRZ#K58EF?ntP{1wFn&2hJ(WXXg|KRXb~KQg zH+s4}T{qk0TjvHliJ*G|wjnkzKnvZ72G^Shdb8hz7BDLwdXq2EnV$AoMV+0NYS0^y z0}Jr5B|`Fr)*4r>@D}ya4`W11lsn>hfXpi^i9I=N>jcHG%PS}-@dq99-p8_5&ijlL z?3Rx3enI|b?cLDCZy|3b53p+r<*kTSe6z#E2MwF4or1tZaj!|Rz!c-Q?@+k9a%{ls z5M32xvWDv6S3M-daOJH#XH`w!9G#-mJP)b;sQqaXoCpK&SIhToZkEpHCLZS0)amTVdu#pAmHg`&N`Sg7>6)gZ@h8fez z7g{ej_ZF~ZM$$SXm4@ZL*c{HRVEm0t%_B-UKevOS&2jzr%G&OBZ_ccj!~F1^b6yb? z+|zHg!hv&~)r^zsTUs&xBjvO2Wyyw-)KOt=%hOzCmQz6Fk1e@HUcqy!H!E|M*v^`# z&CeS+kfs$*$O)+^aCecXP{}FrU8}(6<1J)}@%_rl?Y-Hu{r)vzYs{^N-?;;_?-5N? zka;-si8e%*8QRg5_Q96kXlk!FLYwxdcN>*}WASV}(T*~TnKY}MpEnm!d65#6(dN^q zp8Nae(D4K`4@_bG_sya5A|sWJL34g?3Hz^Vb8cY&-S`%Ob@{)ZJ#L==eD-92|K9$) ziwBmTClEbg3_hLbz%%$ZF!x|>-i+cfAxVRV7dIUKVby>8-npyR&3tgf^5_t$c!;Lk ztr2UX4{<*X-!&>>$P=I{z)QW8wFldJm1ODw@=??tRwPe}yg*lbJe@!py+>i&0e_8p zPMe`I4^8Apv!DF^RmWNC_`+k3t101di~LS&v(J8Xmi+#K`?qx^PXIHN7V?(2x`f^l z_)^s*xGC5Gi_wlLfxck7&LAbMgqQmKs22EX#J z&F{J@KXg5Q^TXNkiMhz#-bQ|QeA4o;d3Tiu2=dt{P|X4ADWsbwUSBW&!F%;N^M5~j z`mA;T_tX3PzwhRe@*l<+$xMS{?VlA>nrtTZm2=ZvR8UrQj;p24i>R(FXbSt5Wvo8L zs=CQ>>%u%y(mwJomT6*i6_8U;U7g?;R(hjtr;FvbC07=+w5i)Y)K}>}*r-KvLxx37 zI{NLqEmQ-FF*#e7GOrbg8CaK*Sjc;* zRZ;mFfSJ6g5`{9U88@3KepSd7AKIHb=-OBHw|E;Y;0^qswasKnfM+kLaVz~gBP}D zU6Hd{McAy!(l+d7i46gBIwwWVJ4yDxZwR#XePd0S-sdpH4c8IjKW|6>ueJZ&{m^S# zfotr)gGYOf`(FDLr2?0~T=};iQ+WW~P8zvl;izHHr+{|zRO#1MJxz0SCl+xYghVmA| z3ea&2nomC1IRH+ZZaX<~K}3V7FP#A9os3trMF66Wbd$%JJdzx$Sv|Iu)Q8^;mk5a1)Q`4UM)j771^iF7j%H3bZ*1CKeR6^Qy%(;(I6KXq-)3 z9BOs)P5bM*VOlXze_4n89X}iD|Ic~<)1$}D{Er8Fdyk&n>;JoW!2h#e|8L|AGFzJ3 zf6)+#uBPuc0L+TYzV7gGyHe7M?WSgT;YbB9KY0F&Me;@;5M39x_^@SJ_@sWMjMIDy zg5DQ%aMRW$UNTfxWI`&0bL1DN6U1j24!|?QO~#2PnTM-TuF1JQ{0hD0Gg4hrMvx=} zlEM>o^24$8(KpaGTbPHkkvH_q4mc6IDuJoe_RBc!+i7IV-egod@%7vB*m-kbspTBF z4T2hmXcz8g2TzJhdKFg@w6;dbC^f3oROUZevqU=W67i=A5i%HCku}W`mbMX@mwfr0 zR{s3bZ%z1V+fsHx%}Gk@mZ#8e<{5C2EExr?=hYY({f)e$bK2b13nDRvLwMk)E<0*8 zH{j8HylGF`wF*?wKjk2m+NiQeEX=9|cIAX=>H#&MSN4l81>Q7OQjjxhpZ{y^Sar5U zI(|Kl(5D;R!cu*lN>6Yo5+ii1CYTDmMS`CTysZ&7^SIo)^W{(QDElv-k!((F2<)F8=GuL398A zU~lg}{_9Sj2k50(zoj*7{P%j_*0~A+pyLWxONiw;t7-z-6xjL#r&O%tFv<$9??ka* z(NS5-8wJ$wNdZ?6W5np3X1LN*e^*{prEy$h2J#4QtEos@Co)|HCpi}Al7ewGCj63+ z+}_c{SL$NNv?y}{l&6n#!0Pgb5#!g{^m(L0-m;&=2$UO;4S^y&RRaGu}2|HNMa@nz09 z&N4xeXa{stuLok6GKA6hB%7mGs#|1+i{6h%@7}z8^W6xYegEBeD>;p0OP5Y=DpqksUyk>+zwpS75eGd znkE+mF-16<)-)yT=bahnB^wQgysC-p=eVe*!#U1toDKhPsBtQ4d~vY%9n=}_?GN6T zBp-<3ANJ9NR*c8J0Xik}+KHcjq!+Xca=$lF7Zw9a&nZiaDz&9k`68Z9hx`Y2a`yd? zXS@=X1WJU_Pn5Bm*z!}#XZ1Kvin)Vmhy`g-k_~fmIZS3n!AQS17z}zxS%%)x>5Mb< zjxbU!NQwrKGsR);6QvFQ=o!7;qvXFZ{|4&Lj$2m(tL6XWgZ;gx{C{-t^xpq>Cy$U} z(p@Gb%RsJ>dOe4)DMK=XfM!c+6q-DT%f>lXF}>s7_r)bykZKoQ5`;5m%Hk|j@*l1o z&r@8b605`%qnEi9`)QHXkSahxpmTxGyb|I)S$p;OT(g z?F0CwJ33WKBXGWSD%hAeIPw70n5=MUoB0Rdq&KjDGs5B9ou3RQ0bEPK$&MlOj(@ z$=OhyJfrz^Ko%6thaqN+PV+%oq=Q@-%MUcJ0nXC_&N&_EH+@NNHEnl{aVf&R|DpuM z9y>f@6Iua~ninj=pkJM4|5r*Gc$oi&en&@XDim!|(ceVf4EpUzRa9_vo~M=cs6soe zzlN%g3q;!EvZC}WNk@Zk2zU9#1zzNeAbnHZ(Am};nrq;i7_}$^+HWSNRV0t!EWM?})m-Qg12sK`D4t#sJ5;y)XpmZT_5Ogp+o4 z3pz&Taz&>7FhUu&W)PQ($F|wM46>u~qE0MS7)?=8N&z4Uvo&{-ogqc#ah1UDBxg3W z@u#2B??|3!t*iDOI9lXM9W3?JdnWH7R{e@|cOHND{v{$ZJFrk%(xebjAPzw^_WkKM ziV`NIw5~`wnKP8&TxdO9QC!p|l1mFArJ8p&!yS2Qob5^G09QZPrU@@l zL)4%HIETv8G^RBUBF02d_5bnQc>KA|gAvJ!PCYB=$e z7*!P?zpW{uY7KHpG|i{tV@?u2z$J)UVDEt{IDCMUgfJ#-4?ZLMbzik{5g78RMqZXM_W76G%8mg)XAS zg>(yR*O8_PAiIZ~n_cmq5$`)MgaAP5%mK-HMdjNe;mJ^xWN3iqxGV)(FHc12iZE4G z=P0-Z=EP|_Q0ND|0DG74WB?QlE-9bEp93uE9`;R3^{focx*umGN44N-ujCwG5TTR_ zS{5~IVp?&+3v}Kg2hI&jb!B#Itd6p*xMVtYo%lvRim67qt)^rnz-lE+4ZwslNR&aP zDr9O_t{bhRrd!5TT(WeHk=ZI#w05)J&h(9P!%RDsLxy_WD0gFqEs$@ zaJ57iWa(-o0r$%}ruml|PVABjISm4)cS8&_p}CbPW-j$@Sg`Z*nx<(+E^+10rzn|W znh(a9(IkS&^-8Dcb1JB;FucNKLNDAe7hf}Eu1D4rQ7pXXn9~Gj*;3t1&cFaLYZ9B& z%7rF0n7ocaLY8h^Kx(lt-HEoQ{D@AB>jGQ=+F5OV7Meagk~@r)kZ!B*5hAE7Y7Xal znbP}njhE!G9R^d78Q8 z+CIP}23?8y%>3cw9RijU%x5vW74T;*lk^0nIN*5+wrr{+gM|FlF7dw|qWyUP@nCNg zMEX2kmypuRMsmJBXb7bt%n8grIf*Hgo0D5$RR?D_#0sT1#;ShU#6K$(uUpo{iW$}h zBu0X$jSS`*o3MlNpKTiEVOapv-;r|v#FC)Z!K-^pW~yJG%`{|HawIPS;jB^XH+5yZ^pf)VFvUjx{6ECQgp$g`#W z47G4|K~jXZk9Qd$pJ#2BuuAgm)u~a9rVG9);Hs9SB9L1PhDzF8Lco+&Axv_;o27-1 zhkE5w(=D@3EpNFt^fjiJ#b}jNwo&vN-dLNHyltiXCW$Sn+uq3BFTg1a)YxBZOdY>? zs83r!W1`I{zgxr{FDg`#d9ff!6#^5Fs#(|ov%OivveS|2XO+e{}D6*FQl6cP|HY4t(bl35PNQ<^WlF9(moWE4}3<{ zVUNF^@0#TtFVL5RFO|cNxzNWo_s7#Y|JT`dx2$s|%1&(N_*sA}we+SFw^3|X)LAMR z0eX|9aA<8H6lW(EMt^H?!v1#@nBiy14(dM4BMCIGvrL#v9t@bV zkZ3|4uh>Np0nbN1YmW9PBrK%sdsV)b|civyZ7 z&HiTnklG2&IKio4CdwJAih_4h*xn^57m3~;Xv<$H-rgT57s;*(Zr?RA=%S~UXRU=E zUJoSGcj%iJa>Xl}fi)aeVFk3mgcNk!^SPyyi_43x5AXI%2_Z-02Zc|RhmPIK3o7T_ zP#p(TF3sjCgF#9b8!?DsIyth6lIsxiK!6gnteYZxOv3k=q+}6EHlxW*F5}gHGq`nH z1JfRk7KXOdByvVx+I(JFoTfrl$mqN=nZSatS}Ojud|!fNNA#z&?$_}%%9blCJ%N@>;RQ%S8pAhp6zq)PAtMX$-csFsl(D~$NOoG`TW?&$SkjFSst zf(Yw=$vBz!T{QzvEoDn+kivWswbWXyNCReyqSGF;3Y+Z$!1*ctjYt~50b0~))N?c; zn2R;kR15)Sde3batbJjx>$`L?0vinWiUAN(t<4k$XnJ} z^9}}^Xg-eF1x#m2Htg{kN#MNCgjq`%8whbk;V+1+uFHWWO{+?oa#0uWBKVd5UIr)+ zz|jfVLgofY4JwTxDO#yoR8uwsS*NDjvZyOmT;@namE9IX*BvVM!iI`vej`F~nj09= zFp|;(qwmkoPE<|3HZ;e-1)qrTLr86A!VUV4CtlYHVPy?l$?bWuu7mGzKb4mH%qq5a z7^2r*v36O=jEf{i=W=XD5P)&6PCrQKvm#5GhNU;!m1u524Yi}W5RiHOeix>#_BxC1 zgJN**D=)a(TQz*>0M*vZ&t=-~K72Z`_C+bZH%4b?&bj?xsF&uW$3CM4ELekA31 zTr7z4Yo&UoV|go*#Aw z1xs)Sj2?}ISlo?D{V9z`z|6amcB#B83jVEG`>W5}EW-kO&pHZbqX0XtUDhqLO}U$e z*Xej3m(Z^8I$!0sr@d)s6Vxs5a&_X7Sr|6z=2JH^iRP1{noCQk)zK2@b$eMXlUMb! z%%pzJ4wpe#D?sK&N=`Z=wX~;DJFTFcy?|M~epTS~8=T=hf#h5%dZWwfArK1x7J`CJ zaJqm8=if@W_F`4rx+2idbjRfK$kIv}TSg)Q+%;iHol!`Nh^{Ck$%&mINZn0P3DrH< zIV35Es73)*mx=Y^c2{Vhi?Zjt^8Zuu$Jz18ISlvt`{yU;F_LDlc%cm75?|&BqqE}^ z!wBN*lyEy!Y0gO{=Fj_guiz`pYv(Y;sz!N9zdJb>TQ;=i8!L^JPA2M_87~-dQWbNl z@$DfA_yRWdxdnI*yQ6ArGF29}%U@bNIoCo;(eK?I>3NXPO8_iy$QBH%G@^TFjMk?r zxr{6Sz@G2o3f~zS7J!ala*Z5pmo_J@)T>0ig zInt)!%Ee2-ZuIM~Io9f$<|;~5=@T>Ext+^^G7eO($GQEbFs!yO7>fvWn-LNoE5K% zDSMm0sH&nmzuS&+u7&Ih>*bK`z%6;xlm`G2(i>Q)YRe~>96WHwts}IkaXfhBp5Hxp z4&2f_r3;$YI1`5Tg%kt?ClGhUh21OUz+XAv&Hdv)CjU3%z`b&^e-OXpX>mI^R_FhD zbnvK^|L4iUqsRC8f9~Q@$sLj8gIq|Otx12xcBZNPnD^42B%z0*fmz5gSDOOS^a=o@mmqjEbB1liFpisE<} z$3ypJ-=R+?9+G(-+{AD@eL>f7h<+qs7O6#zmf*ZV7c{v*#Y9?>0OqWs!f$(M4WdB0Mf?4%v)g5M=X3YfaO4IQmMBV|>>4dh}hL@9q6f`FIze4$Hz08r4`9{IuPh7F*i3!h!IQW-tqxa@ zi_;OZ7n(#gMoFgWZbMt(3gLv;ID3vchJ|Zu#_PwHQytmF+0{WvvHpi$a84V>w*Ui_ z`51w+Lv_$}$A1q{WASUJAMZ%w`)vx^R~NRs^4A(?GNs&3drWp4^fV`e`Kzy{{HB8X zsG71HNa;=yE#TfzJ_``n5YD)ovO|^;QX-nmbaAfOlu&K)X36b@G$6YI7`qzAr?u#W zxM^X$7t{X&Vj8AJhm01yv|2zz?Q2VCQTt9svq1P)mCK@SpG_#g$QRd_$(EAW{JmBsv;h z*7wPLO+NyOzB*`;*OKI0(7W5JyqYIh7yo}wUcEeid3G&kT@Cu>>n7+e0eHj)*y0Dcx%yhw>E3I@<_u5AK zi+r)6jc#qv*SM4h;sx1h&EmGv+ikGF$QK*f>oP)abBi4kj#dhnjQG(=UgI)=M^)1I zZ_4^VMR1Ga&rPE~SX-=Lbe>bxv2HT3|6hCxH_9|jV9?Ey46;hx zNBxcH?;P|^P;ZK3&GPCsE`L&^@H09z7;kY6^&(&F`Ur1x1tmt{X8RA_i>Xr?DJ~yj zezz7|r#98uCJU|5!b*Y|$-K?G0mvg1MXseJS}ebY?Q9v}u8oP)7su~joLS38ezgXs zMlVB>g4kUd|1YK;Wp8b$8P%Zdx>~|^WQ$x=O0n4nTEwVOpRNs6NrzHe3F}X3Ec|iS zf|z?vb?O@ppi(?o&2j(tYYcqbd=Pl9J?>#aZFzOK)o9yB$u2_Ofu?S0p<5H~Cq>0? zvT1=`&7qj8HVkVjbmu8KJ%17Q&G{kLYTHV>lND zOB!FrxC&wAISl22+C`y)5Cmp!e>oIdVs%OJ0+k#H$H?NZHuC}r=TpLFeTt))!Vy)j`D$iI{Y@h4H4Zq2*Xm>|Me z=u2RF^NkUBhr_ zAokvOH1o!0g@E1N_Kirmfe~SoF8yE=^jWh)Sq!5?bZ(G1iJC@DzMjzOsMQlnJIY0r zUjrvIvP}hK?%mgU$9#Ahrt=>upGmdl-b6X0%q?sc$U&0>&CX~=oG+!!Akyl8k{u`v2_dC&cmpcv2YnQz56^{cve>B#T z=ZS$Q zrZm~%A&R0En?4;je47rX$UBT?{jA+&+SolP(S>?sLrQ{g#}&aBtuLR}F981N6IB1) zPwV`jJVtt}2LM-}|J!@K|Lke={NLlp_xJzb$+PMCKh!wV_c@LLO4j=vX8;?JTZaIV ze~9m|b`DTBfAfQY&F%`H1Z;Jx`15R8lAG?%x&rIkTP zUu?EaSlf~9HN*P87k?^;lSVwojQn6WXPu+is=lDoi%R-*(}jn9I+q|FEeS71&LFjB z8+zAH7|q`iNYUw2779RnjX$m|8(!{&k5+X)!Upke&DFi2jd82*-HkIjRNGTw`Cv<8 ze4AVjMkAPcH`Mtfw7(nb=n;ApZkk+9oXQ&m+4e0|C!3vyB9F^uiq=C#xLS)e%FHeO zhmTtyZ6gl9j{3LSkA|FJPd@JG$*=!qk6UfFMu|E`WA(n4zo6@qRojG_&x5;Q!8#qA z29jTPO}pLgF(615XoVABAEU#7VYJR%xeauduRGA$0ymGaS}`gc1W9eCh+h+4(d3WP z#4Fr?`a%kSRozl}QeGaPynoMWMt_5BnpaLE=W~8Whhm+uv%0RF6h{kE;VE%ug#!YSc`mU8jBhd)MJ-dp!Ri z&8HP%>~^#NuJ!*t+ke)~|NHpaeg5COdHyW^zn7BrZrk721pBY#-&1Yh%%9ilsJ8#E z-IoD>-7TNbR5&}1-G5)O)u%UQ#P|jw0Bg+6P9K<}Z>7)cxxB(^1FQBYC)XCh4IR+z z$m+8RCDKJDdhIArbFbQsGW-A7d$!)TjitYz!cPx%dtljC zk}81!Js8fV4V=`7d{E#NMNLy{n+-+kkdzV^=zl-h8@abx?vj+P#^jSN?(WRa?#_)n zGq8o$H_d5DmN37!^=P7$OeiUuG%W9UQnAP1N9b#~S|?sh3CJ5pUS4&fTVUEQ zqHG}`fQ^H9>GR+Zd+AYEB1uH-}dsF2_(O@Kdq6**Z8zP%u*axS6@2 z_HipKNEvR=vlgT-E;G)RPNI!YO6$Vm4?5D7{_y{nyZElADF7k$*Gd5q@qxkv?zE3m3*d6V*#oY%_5oYQ2>8;@_TFB#ym9W{x<8e7;#n{ zu!sArphC+)*tAyGgjRR#`X#qPrKFB}Gcy%XRX>1arb<(IE zbWkOFP)4cJrHV9{{(SaWtjyQ-ZtO4=Ny0LD_WXsLgq0T@M!~RAX8{H?h}ZtaYg@6| ztH|s}q_Fa&M1alam8`HOw-DJR6etIX2LT$x@j8q?qjV{quw7-j5D-5Mx}oAgpB6bl znsFjkfoZYd9aD*>1nC8%wqpPCe6g#vk!X2&zTiLE{a4^^FrUPd7Ht6ZUtOLrtRAC_ zJln?0RvEcFNaZrAWHSC^Zm{319gB);bNc7l&>Ikfgd*&5F*E}j)^7k{OrmMVMT$0mN+YEOYFj>vhxhEW#a&jShYk zDfL8RyWCbL#bS-3W;KxxWAPZ2Nr5+)I2;>Xc7QYt zX;Z6Dv(4*a%fQekIcrNa`gFdy?X@BHYi}Rv{>K{StGFoea{uvXcHP%KkcRso)9Lg_ z<^IR?#mgc8!-G8ga{uF^-g@t|>%Omn0HZ&p+aNLt+%APcWYh14fCMI>b5x)-LOZB( z_ddI>P3!*5;`iCL)hzxsF7MRTbKb^>kYDsXE=nxMiSL)DqjPFc(h~4IkB)ts%p60P zD$~{c*aNu&iJQ&`9-qEKssy#>)y%#V+|XyM}C%pR(*Tvq#=%*NQDN4mV{s z7DT`GJ1;(PKDLQ~Rkvstc%Ww2pOrh&ly${vx>Rxk_glrDfq|YCasA#k%;Ftu@;P(?Rzn=4o`zhuqeh=_FeUbntOF% z=)Ev>M`o?!!WNQwcZ8;Js#BUFvKakvv_N4V)ww;J(w=%jaY?9J;qRMD)eUi3MsijU z?gv^0jW-jcDfQf#Vq2D1Rqmkm;E7u6Q&F!T;C+%2QmSlM3%_ksV%vfZm?jpOw-GPC zpiaoOb~siv&_TENVj2f^E!qyNN#=1nYDs6=Y89r-rfA?=opIDbd~^>Fox@+(@Y6AT zbPIQ#!bg|z&>{SF2Vb4RRafW`5)LZXY-hp^PV-xf+RYpV0x{lZIoHLR7=Tpprlcec zHLI?Ed>yC9#T}O6y}A_0CC#i z)`G|@@wRxEXPb53WWS-q&ZpDqKZVBA=@gBd6~=|YDBT`iy!-j}6C~$g zwmrPrwmX9=qTAA9NU;|15Mh36GsN&~SBs1501XxwZ{}@4vAI}H6+XCPrJQj>?bbl4 zz(`QL*%Fa)5X&+UO{-xINE`13z?;EJeKM><`ctyOc1w2(qlVXw;-Nl*$!_cM`>*=_ zpK9?X^@5PXOx zh4Z}tD;bUV1MGyye|`*C9qtIg4gk07^VMUh1R%IKj;JE6M$k#XlpC{#0)nhi;bL=h z6MqFOb~k}N3`|Y1vi!>y<$1hB^RXQ_4XKYpXLEsu9+1)tDVV4x6(f8q*28)mIo>R; zj#Md}sF73x08`b~h!6l9^KG>_&xWGW*X2ED|s47C< z^?7~@0jA;nC@2{Uc`l+bLH~KX=$Y9_crDIO&)zMT!NBE~P#ErPd*{ArqIC2_JBKu$|u%jO5I?|FEQ5?l3~`lN^J_0i|eHOf;|qT(pdj^nf_ z!<1wZ2%yvhhHk4c4R6tMe2w|W2%7=+_T-~J=P>SIwwSP4I+~5rER{Z+Ve84=5&rfite|-vv@UGn$Ybf^bJ^DIs+yUJJ2|uKSw!x ztG{yii*Do6c{Ajsg##L3faR zb^M?a`ZNO)7x=N4Hz)9)#D?JPkf#$Kud^hM2y_07kn#SdzK5h&`?Hq@weWG(!u2*% z)DvByTA?yrhGi%of=Zu~M#H%IYCHVFdmv7i=<8vC60|~MVRT5F(pN{p;5Rbj@4=jp zY553aLqPmg(IXy>+jhxP7h+tAVAflW5pV}H=`eB|$c*|P84@Bi2M{qOm+ zm(SGt?=MbXOo#7(5Ap2H_rGk}`^P?E$S3t>FIzf(#uEu-_+}^35C6#vSaosc!vS)* zS>WbofaL%0|l>`~QD1W81L$}d^|c@GW+d8{WRjT7V9xXd@i6KXghcl8vt zFJWv{{IhY`x8!QJ@!W~S^1=o%w!^9WHcp*<(Nx$2-Hzeww74LyrF}Vs4aabFmTZa= z2p)L6e&Oc_U5f=M>UTv-u-vQ$=A_pbn?6z?zneK^QH9ppN40uShO+QcXi`w3^OS$to2 zQRCw2aXpk{GFW5dA#OOs!rg_ROSG!b@3x9LzN&^5zIx4M;)Kzi@)Ow|^rIcsTXhfS z{Tj^zgqh*%I9G{%6W{s_xD3nC7XkD&CYC$-eljCNkUwQq$PKSC3Ce9ZLpp-?lHUBs z8oWL%nNjv7{SxNO(~F&2om(3R!A*>k^d%Pc7# zdeZr-y&(8k+vGl~f(U4bJXeZhrtxrOauh_~{T*jxmTW6^dKGdU@E3GGh(igX;Y!jplkq|58!pdR?Tm&@C5uG3ME_^k?Ibxs@74#jj5n*mQlBXP3!TTSxP(NRm0 z7ky|U7AN3ginN1IEYphgn6J<(%kM=8S_PZEa>Sr|=^W)HV*o@a@lofKcdNYr2%wvY;CXWa17h}XJ1f+Xu(zEou2GYr5VvlAxiSrd4Z=n5jTFubj4l4=ru4qn$Ve{xM%CJN?n`D6i`$f1G zOEM4_tV2O=_vrJS1tUgX!8AD))^8-OpJKmY)8*t{JTfO^;H6X9_t4GMTFRKVQ6@OosTshj{iS{%=9IUf(f* z>ab5K4v@{=Ef!EClpYVL(^7!)=(#)1j;W?E{Nw^0yV78=f*3=jmHVX>miU*31eUDH zei$ncbkCU)%+*Svt=lK9RKPie3z#?YMV6QHWvmW<0dOzVrNJcK9$crH(*dBlv$y)}>sAizMVNhA^_#aq*0M~mPNY<4;YxfB#DO^=NsL?= zO;VOu#S*}9&qF>1J|&-K7e_YXpD53D6Cg+BCQkvqKG-{M-O8T?@@fGSya%|yKxr=; zS7aA@c#Hs}jv8_z=(_qy3fpY1!`Isy0#Y9#pNKbDgk9uWnMGOBQHp^AjF0b{Ox-MN z_$aerba{56+;m(gaTJ&McOXy{Vn=H>>YR@01MR2F%L`BDS3x6v{lP8#1cC%^;R)~G zuiFz7_ccSKZ}yi{5A3pUcF7kX;%0o)*m>DwJ3NMGc!p/ 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-tcp" .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/incubator/traefik/0.0.5/templates/_ingressclass.tpl b/incubator/traefik/0.0.5/templates/_ingressclass.tpl deleted file mode 100644 index f558e2ce8ae..00000000000 --- a/incubator/traefik/0.0.5/templates/_ingressclass.tpl +++ /dev/null @@ -1,15 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.5/templates/_ingressroute.tpl b/incubator/traefik/0.0.5/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.5/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.5/templates/_tlsoptions.tpl b/incubator/traefik/0.0.5/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.5/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.5/templates/common.yaml b/incubator/traefik/0.0.5/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.5/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.5/templates/middleware-namespace.yaml b/incubator/traefik/0.0.5/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.5/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.5/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.5/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index 59f0eaa1c22..00000000000 --- a/incubator/traefik/0.0.5/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,60 +0,0 @@ -{{- $values := $values }} -{{- $namespace := {{ if or ( not $values.ingressClass.enabled ) ( and ( $values.ingressClass.enabled ) ( $values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.5/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.5/templates/middlewares/basicauth.yaml deleted file mode 100644 index e4b488e93cc..00000000000 --- a/incubator/traefik/0.0.5/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- $values := $values }} -{{- $namespace := {{ if or ( not $values.ingressClass.enabled ) ( and ( $values.ingressClass.enabled ) ( $values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.5/templates/middlewares/chain.yaml b/incubator/traefik/0.0.5/templates/middlewares/chain.yaml deleted file mode 100644 index 2fd427320e8..00000000000 --- a/incubator/traefik/0.0.5/templates/middlewares/chain.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- $values := $values }} -{{- $namespace := {{ if or ( not $values.ingressClass.enabled ) ( and ( $values.ingressClass.enabled ) ( $values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.5/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.5/templates/middlewares/forwardauth.yaml deleted file mode 100644 index db2d1478c93..00000000000 --- a/incubator/traefik/0.0.5/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- $values := $values }} -{{- $namespace := {{ if or ( not $values.ingressClass.enabled ) ( and ( $values.ingressClass.enabled ) ( $values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/incubator/traefik/0.0.5/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.5/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 732f6168cc6..00000000000 --- a/incubator/traefik/0.0.5/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- $values := $values }} -{{- $namespace := {{ if or ( not $values.ingressClass.enabled ) ( and ( $values.ingressClass.enabled ) ( $values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.5/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.5/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 13255b12d30..00000000000 --- a/incubator/traefik/0.0.5/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- $values := $values }} -{{- $namespace := {{ if or ( not $values.ingressClass.enabled ) ( and ( $values.ingressClass.enabled ) ( $values.ingressClass.isDefaultClass ) ) }}traefikmiddlewares{{ else }}ix-{{ .Release.Name }}{{ end }} }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.5/test_values.yaml b/incubator/traefik/0.0.5/test_values.yaml deleted file mode 100644 index d02427ca60a..00000000000 --- a/incubator/traefik/0.0.5/test_values.yaml +++ /dev/null @@ -1,321 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 diff --git a/incubator/traefik/0.0.5/values.yaml b/incubator/traefik/0.0.5/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.6/CONFIG.md b/incubator/traefik/0.0.6/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.6/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.6/Chart.lock b/incubator/traefik/0.0.6/Chart.lock deleted file mode 100644 index 48f1f83ec18..00000000000 --- a/incubator/traefik/0.0.6/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T18:04:51.738866653Z" diff --git a/incubator/traefik/0.0.6/Chart.yaml b/incubator/traefik/0.0.6/Chart.yaml deleted file mode 100644 index 32a9d9d7e80..00000000000 --- a/incubator/traefik/0.0.6/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.6 diff --git a/incubator/traefik/0.0.6/README.md b/incubator/traefik/0.0.6/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.6/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.6/app-readme.md b/incubator/traefik/0.0.6/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.6/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.6/charts/common-6.13.4.tgz b/incubator/traefik/0.0.6/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.6/templates/_ingressclass.tpl b/incubator/traefik/0.0.6/templates/_ingressclass.tpl deleted file mode 100644 index f558e2ce8ae..00000000000 --- a/incubator/traefik/0.0.6/templates/_ingressclass.tpl +++ /dev/null @@ -1,15 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.6/templates/_ingressroute.tpl b/incubator/traefik/0.0.6/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.6/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.6/templates/_tlsoptions.tpl b/incubator/traefik/0.0.6/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.6/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.6/templates/common.yaml b/incubator/traefik/0.0.6/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.6/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.6/templates/middleware-namespace.yaml b/incubator/traefik/0.0.6/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.6/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.6/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.6/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index 8551a168535..00000000000 --- a/incubator/traefik/0.0.6/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := "traefikmiddlewares" }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = ( printf "ix-%s" .Release.Name ) }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.6/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.6/templates/middlewares/basicauth.yaml deleted file mode 100644 index 8e2429005f9..00000000000 --- a/incubator/traefik/0.0.6/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := "traefikmiddlewares" }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = ( printf "ix-%s" .Release.Name ) }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.6/templates/middlewares/chain.yaml b/incubator/traefik/0.0.6/templates/middlewares/chain.yaml deleted file mode 100644 index 75a0e9f6a35..00000000000 --- a/incubator/traefik/0.0.6/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := "traefikmiddlewares" }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = ( printf "ix-%s" .Release.Name ) }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.6/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.6/templates/middlewares/forwardauth.yaml deleted file mode 100644 index bac2ea025f1..00000000000 --- a/incubator/traefik/0.0.6/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := "traefikmiddlewares" }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = ( printf "ix-%s" .Release.Name ) }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/incubator/traefik/0.0.6/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.6/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 2984f94ab4e..00000000000 --- a/incubator/traefik/0.0.6/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := "traefikmiddlewares" }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = ( printf "ix-%s" .Release.Name ) }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.6/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.6/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index a7a5e639252..00000000000 --- a/incubator/traefik/0.0.6/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := "traefikmiddlewares" }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = ( printf "ix-%s" .Release.Name ) }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.6/test_values.yaml b/incubator/traefik/0.0.6/test_values.yaml deleted file mode 100644 index d02427ca60a..00000000000 --- a/incubator/traefik/0.0.6/test_values.yaml +++ /dev/null @@ -1,321 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 diff --git a/incubator/traefik/0.0.6/values.yaml b/incubator/traefik/0.0.6/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.7/CONFIG.md b/incubator/traefik/0.0.7/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.7/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.7/Chart.lock b/incubator/traefik/0.0.7/Chart.lock deleted file mode 100644 index 1746f6e0b86..00000000000 --- a/incubator/traefik/0.0.7/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T18:43:21.997720007Z" diff --git a/incubator/traefik/0.0.7/Chart.yaml b/incubator/traefik/0.0.7/Chart.yaml deleted file mode 100644 index 67e509cc22f..00000000000 --- a/incubator/traefik/0.0.7/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.7 diff --git a/incubator/traefik/0.0.7/README.md b/incubator/traefik/0.0.7/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.7/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.7/app-readme.md b/incubator/traefik/0.0.7/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.7/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.7/charts/common-6.13.4.tgz b/incubator/traefik/0.0.7/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.7/templates/_ingressclass.tpl b/incubator/traefik/0.0.7/templates/_ingressclass.tpl deleted file mode 100644 index 27f8467fc9e..00000000000 --- a/incubator/traefik/0.0.7/templates/_ingressclass.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} -apiVersion: networking.k8s.io/v1 - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} -apiVersion: networking.k8s.io/v1beta1 - {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} -apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} - {{- else }} - {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.7/templates/_ingressroute.tpl b/incubator/traefik/0.0.7/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.7/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.7/templates/_tlsoptions.tpl b/incubator/traefik/0.0.7/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.7/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.7/templates/common.yaml b/incubator/traefik/0.0.7/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.7/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.7/templates/middleware-namespace.yaml b/incubator/traefik/0.0.7/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.7/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.7/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.7/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index e50f00c98d8..00000000000 --- a/incubator/traefik/0.0.7/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.7/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.7/templates/middlewares/basicauth.yaml deleted file mode 100644 index 54dacb824ff..00000000000 --- a/incubator/traefik/0.0.7/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.7/templates/middlewares/chain.yaml b/incubator/traefik/0.0.7/templates/middlewares/chain.yaml deleted file mode 100644 index 49dfd9610ef..00000000000 --- a/incubator/traefik/0.0.7/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.7/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.7/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 654eb8a6cb9..00000000000 --- a/incubator/traefik/0.0.7/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/incubator/traefik/0.0.7/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.7/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 624e7ff0d34..00000000000 --- a/incubator/traefik/0.0.7/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.7/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.7/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 9ff49d76186..00000000000 --- a/incubator/traefik/0.0.7/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.7/test_values.yaml b/incubator/traefik/0.0.7/test_values.yaml deleted file mode 100644 index d02427ca60a..00000000000 --- a/incubator/traefik/0.0.7/test_values.yaml +++ /dev/null @@ -1,321 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 diff --git a/incubator/traefik/0.0.7/values.yaml b/incubator/traefik/0.0.7/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.8/CONFIG.md b/incubator/traefik/0.0.8/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.8/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.8/Chart.lock b/incubator/traefik/0.0.8/Chart.lock deleted file mode 100644 index f7daab88d1f..00000000000 --- a/incubator/traefik/0.0.8/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T19:09:19.957564184Z" diff --git a/incubator/traefik/0.0.8/Chart.yaml b/incubator/traefik/0.0.8/Chart.yaml deleted file mode 100644 index 46c31b9e6f9..00000000000 --- a/incubator/traefik/0.0.8/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.8 diff --git a/incubator/traefik/0.0.8/README.md b/incubator/traefik/0.0.8/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.8/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.8/app-readme.md b/incubator/traefik/0.0.8/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.8/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.8/charts/common-6.13.4.tgz b/incubator/traefik/0.0.8/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.8/templates/_ingressclass.tpl b/incubator/traefik/0.0.8/templates/_ingressclass.tpl deleted file mode 100644 index 27f8467fc9e..00000000000 --- a/incubator/traefik/0.0.8/templates/_ingressclass.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} -apiVersion: networking.k8s.io/v1 - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} -apiVersion: networking.k8s.io/v1beta1 - {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} -apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} - {{- else }} - {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.8/templates/_ingressroute.tpl b/incubator/traefik/0.0.8/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.8/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.8/templates/_tlsoptions.tpl b/incubator/traefik/0.0.8/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.8/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.8/templates/common.yaml b/incubator/traefik/0.0.8/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.8/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.8/templates/middleware-namespace.yaml b/incubator/traefik/0.0.8/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.8/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.8/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.8/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index e50f00c98d8..00000000000 --- a/incubator/traefik/0.0.8/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.8/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.8/templates/middlewares/basicauth.yaml deleted file mode 100644 index 54dacb824ff..00000000000 --- a/incubator/traefik/0.0.8/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.8/templates/middlewares/chain.yaml b/incubator/traefik/0.0.8/templates/middlewares/chain.yaml deleted file mode 100644 index 49dfd9610ef..00000000000 --- a/incubator/traefik/0.0.8/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.8/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.8/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 654eb8a6cb9..00000000000 --- a/incubator/traefik/0.0.8/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/incubator/traefik/0.0.8/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.8/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 624e7ff0d34..00000000000 --- a/incubator/traefik/0.0.8/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.8/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.8/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 9ff49d76186..00000000000 --- a/incubator/traefik/0.0.8/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.8/templates/portalhook.yaml b/incubator/traefik/0.0.8/templates/portalhook.yaml deleted file mode 100644 index 4fee8f136e2..00000000000 --- a/incubator/traefik/0.0.8/templates/portalhook.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.portalhook.enabled }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: portalhook - namespace: $namespace -data: - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - {{- range $name, $value := $ports }} - {{ $name }}: {{ $value.port }} - {{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.8/test_values.yaml b/incubator/traefik/0.0.8/test_values.yaml deleted file mode 100644 index 277cb6d20ba..00000000000 --- a/incubator/traefik/0.0.8/test_values.yaml +++ /dev/null @@ -1,324 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 - -portalhook: - enabled: true diff --git a/incubator/traefik/0.0.8/values.yaml b/incubator/traefik/0.0.8/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/incubator/traefik/0.0.9/CONFIG.md b/incubator/traefik/0.0.9/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/incubator/traefik/0.0.9/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/incubator/traefik/0.0.9/Chart.lock b/incubator/traefik/0.0.9/Chart.lock deleted file mode 100644 index 4839252887c..00000000000 --- a/incubator/traefik/0.0.9/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -digest: sha256:66313b6897734a70870eeb4bef9acd1053652633700be7809a0c2e3ccd9fab25 -generated: "2021-09-03T19:37:54.274889206Z" diff --git a/incubator/traefik/0.0.9/Chart.yaml b/incubator/traefik/0.0.9/Chart.yaml deleted file mode 100644 index 367a34d4f72..00000000000 --- a/incubator/traefik/0.0.9/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.4 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 0.0.9 diff --git a/incubator/traefik/0.0.9/README.md b/incubator/traefik/0.0.9/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/incubator/traefik/0.0.9/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/incubator/traefik/0.0.9/app-readme.md b/incubator/traefik/0.0.9/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/incubator/traefik/0.0.9/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/incubator/traefik/0.0.9/charts/common-6.13.4.tgz b/incubator/traefik/0.0.9/charts/common-6.13.4.tgz deleted file mode 100644 index 8c612e9dc68bd07d31856dc76e3b0b1f5017bcba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29057 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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-tcp" .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/incubator/traefik/0.0.9/templates/_ingressclass.tpl b/incubator/traefik/0.0.9/templates/_ingressclass.tpl deleted file mode 100644 index 27f8467fc9e..00000000000 --- a/incubator/traefik/0.0.9/templates/_ingressclass.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} -apiVersion: networking.k8s.io/v1 - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} -apiVersion: networking.k8s.io/v1beta1 - {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} -apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} - {{- else }} - {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.9/templates/_ingressroute.tpl b/incubator/traefik/0.0.9/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/incubator/traefik/0.0.9/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.9/templates/_tlsoptions.tpl b/incubator/traefik/0.0.9/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/incubator/traefik/0.0.9/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/incubator/traefik/0.0.9/templates/common.yaml b/incubator/traefik/0.0.9/templates/common.yaml deleted file mode 100644 index 7146fcb4135..00000000000 --- a/incubator/traefik/0.0.9/templates/common.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/incubator/traefik/0.0.9/templates/middleware-namespace.yaml b/incubator/traefik/0.0.9/templates/middleware-namespace.yaml deleted file mode 100644 index 6506a652c76..00000000000 --- a/incubator/traefik/0.0.9/templates/middleware-namespace.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": before-hook-creation,hook-failed -{{- end }} diff --git a/incubator/traefik/0.0.9/templates/middlewares/basic-middleware.yaml b/incubator/traefik/0.0.9/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index e50f00c98d8..00000000000 --- a/incubator/traefik/0.0.9/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/incubator/traefik/0.0.9/templates/middlewares/basicauth.yaml b/incubator/traefik/0.0.9/templates/middlewares/basicauth.yaml deleted file mode 100644 index 54dacb824ff..00000000000 --- a/incubator/traefik/0.0.9/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/incubator/traefik/0.0.9/templates/middlewares/chain.yaml b/incubator/traefik/0.0.9/templates/middlewares/chain.yaml deleted file mode 100644 index 49dfd9610ef..00000000000 --- a/incubator/traefik/0.0.9/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/incubator/traefik/0.0.9/templates/middlewares/forwardauth.yaml b/incubator/traefik/0.0.9/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 654eb8a6cb9..00000000000 --- a/incubator/traefik/0.0.9/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/incubator/traefik/0.0.9/templates/middlewares/ratelimit.yaml b/incubator/traefik/0.0.9/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 624e7ff0d34..00000000000 --- a/incubator/traefik/0.0.9/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/incubator/traefik/0.0.9/templates/middlewares/redirectScheme.yaml b/incubator/traefik/0.0.9/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 9ff49d76186..00000000000 --- a/incubator/traefik/0.0.9/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/incubator/traefik/0.0.9/templates/portalhook.yaml b/incubator/traefik/0.0.9/templates/portalhook.yaml deleted file mode 100644 index d691e97b6a5..00000000000 --- a/incubator/traefik/0.0.9/templates/portalhook.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.portalhook.enabled }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: portalhook - namespace: $namespace -data: - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - {{- range $name, $value := $ports }} - {{ $name }}: {{ $value.port | quote }} - {{- end }} -{{- end }} diff --git a/incubator/traefik/0.0.9/test_values.yaml b/incubator/traefik/0.0.9/test_values.yaml deleted file mode 100644 index 277cb6d20ba..00000000000 --- a/incubator/traefik/0.0.9/test_values.yaml +++ /dev/null @@ -1,324 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -controller: - type: daemonset - strategy: RollingUpdate - -# -- 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 - -# -- 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: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 - -portalhook: - enabled: true diff --git a/incubator/traefik/0.0.9/values.yaml b/incubator/traefik/0.0.9/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/jdownloader2/1.0.0/CONFIG.md b/stable/jdownloader2/1.0.0/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/stable/jdownloader2/1.0.0/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/jdownloader2/1.0.0/Chart.lock b/stable/jdownloader2/1.0.0/Chart.lock deleted file mode 100644 index 237cc926fcf..00000000000 --- a/stable/jdownloader2/1.0.0/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.5 -digest: sha256:d66e960969111e54b31985fb935020a0befa4e808967ac180a7b6ccbbb308195 -generated: "2021-09-03T23:43:42.465269998Z" diff --git a/stable/jdownloader2/1.0.0/Chart.yaml b/stable/jdownloader2/1.0.0/Chart.yaml deleted file mode 100644 index b9451606d40..00000000000 --- a/stable/jdownloader2/1.0.0/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: auto -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.5 -deprecated: false -description: JDownloader is a free, open-source download management tool with a huge - community of developers that makes downloading as easy and fast as it should be. -home: https://github.com/truecharts/apps/tree/master/charts/stable/jackett -icon: https://jdownloader.org/_media/knowledge/wiki/jdownloader.png?w=150 -keywords: -- jdownloader -- download -kubeVersion: '>=1.16.0-0' -maintainers: -- email: info@truecharts.org - name: TrueCharts - url: truecharts.org -name: jdownloader2 -sources: -- https://github.com/jlesage/docker-jdownloader-2 -- https://hub.docker.com/r/jlesage/jdownloader-2 -- https://jdownloader.org/ -type: application -version: 1.0.0 diff --git a/stable/jdownloader2/1.0.0/README.md b/stable/jdownloader2/1.0.0/README.md deleted file mode 100644 index c78c4aeb468..00000000000 --- a/stable/jdownloader2/1.0.0/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -JDownloader is a free, open-source download management tool with a huge community of developers that makes downloading as easy and fast as it should be. - -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.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/stable/jdownloader2/1.0.0/app-readme.md b/stable/jdownloader2/1.0.0/app-readme.md deleted file mode 100644 index fcc6e45d8ae..00000000000 --- a/stable/jdownloader2/1.0.0/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -JDownloader is a free, open-source download management tool with a huge community of developers that makes downloading as easy and fast as it should be. - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -JDownloader is a free, open-source download management tool with a huge diff --git a/stable/jdownloader2/1.0.0/charts/common-6.13.5.tgz b/stable/jdownloader2/1.0.0/charts/common-6.13.5.tgz deleted file mode 100644 index 8506da4c897bcf699a4066a355b2e6c4200e4131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29106 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 BCfWc1 diff --git a/stable/jdownloader2/1.0.0/helm-values.md b/stable/jdownloader2/1.0.0/helm-values.md deleted file mode 100644 index c628cf14cfa..00000000000 --- a/stable/jdownloader2/1.0.0/helm-values.md +++ /dev/null @@ -1,40 +0,0 @@ -# Default Helm-Values - -TrueCharts is primarily build to supply TrueNAS SCALE Apps. -However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. - -Most of our Apps also consume our "common" Helm Chart. -If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. -You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| env.CLEAN_TMP_DIR | string | `"1"` | | -| env.DISPLAY_HEIGHT | string | `"768"` | | -| env.DISPLAY_WIDTH | string | `"1280"` | | -| env.KEEP_APP_RUNNING | string | `"0"` | | -| env.PGID | string | `"568"` | | -| env.PUID | string | `"568"` | | -| env.SECURE_CONNECTION | string | `"0"` | | -| env.VNC_PASSWORD | string | `nil` | | -| envTpl.GROUP_ID | string | `"{{ .Values.env.PGID }}"` | | -| envTpl.USER_ID | string | `"{{ .Values.env.PUID }}"` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"jlesage/jdownloader-2"` | | -| image.tag | string | `"v1.7.1"` | | -| persistence.config.accessMode | string | `"ReadWriteOnce"` | | -| persistence.config.enabled | bool | `true` | | -| persistence.config.mountPath | string | `"/config"` | | -| persistence.config.size | string | `"100Gi"` | | -| persistence.config.type | string | `"pvc"` | | -| service.main.ports.main.port | int | `5800` | | -| service.vnc.enabled | bool | `true` | | -| service.vnc.ports.vnc.enabled | bool | `true` | | -| service.vnc.ports.vnc.port | int | `5900` | | -| service.vnc.ports.vnc.protocol | string | `"TCP"` | | -| service.vnc.type | string | `"ClusterIP"` | | -| strategy.type | string | `"Recreate"` | | - -All Rights Reserved - The TrueCharts Project diff --git a/stable/jdownloader2/1.0.0/ix_values.yaml b/stable/jdownloader2/1.0.0/ix_values.yaml deleted file mode 100644 index f54d8d42d59..00000000000 --- a/stable/jdownloader2/1.0.0/ix_values.yaml +++ /dev/null @@ -1,21 +0,0 @@ -## -# 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: jlesage/jdownloader-2 - tag: v1.7.1 - pullPolicy: IfNotPresent - -#All values here are set as the docker defaults. -envTpl: - # Permissions Settings - USER_ID: "{{ .Values.env.PUID }}" - GROUP_ID: "{{ .Values.env.PGID }}" - -## -# 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/jdownloader2/1.0.0/questions.yaml b/stable/jdownloader2/1.0.0/questions.yaml deleted file mode 100644 index dbc87cce0db..00000000000 --- a/stable/jdownloader2/1.0.0/questions.yaml +++ /dev/null @@ -1,1187 +0,0 @@ -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: - # Portal - - 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: 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: PUID - label: "PUID" - description: "Sets the PUID env var for jdownloader2 containers" - schema: - type: int - default: 568 - - variable: PGID - label: "PGID" - description: "Sets the PGID env var for jdownloader2 containers" - schema: - type: int - default: 568 - - variable: UMASK - label: "UMASK" - description: "Sets the UMASK env var for jdownloader2 containers" - schema: - type: string - default: "022" - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to 1, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: int - default: 0 - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: string - default: "1280" - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: string - default: "768" - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to 1, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: string - default: "0" - required: true - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - private: true - type: string - default: "" - - 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: 5800 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 5580 - 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: 36093 - - variable: myjd - label: "MyJDownloader" - description: "Port used by MyJDownloader mobile applications and browser extensions to establish a direct connect to the JDownloader" - 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: "LoadBalancer" - 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: myjd - label: "myjd 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: 3129 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 3129 - 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 - - variable: vnc - label: "VNC Service" - description: "The VNC 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: "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: vnc - label: "VNC 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: 5900 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 5900 - 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: 36094 - - - variable: persistence - label: "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: "/config" - 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: 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/jdownloader2/1.0.0/templates/common.yaml b/stable/jdownloader2/1.0.0/templates/common.yaml deleted file mode 100644 index a6613c2ce21..00000000000 --- a/stable/jdownloader2/1.0.0/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "common.all" . }} diff --git a/stable/jdownloader2/1.0.0/test_values.yaml b/stable/jdownloader2/1.0.0/test_values.yaml deleted file mode 100644 index bf467dbc38c..00000000000 --- a/stable/jdownloader2/1.0.0/test_values.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# Default values for jdownloader2. - -image: - repository: jlesage/jdownloader-2 - pullPolicy: IfNotPresent - tag: v1.7.1 - -strategy: - type: Recreate - -service: - main: - ports: - main: - port: 5800 - vnc: - enabled: true - type: ClusterIP - ports: - vnc: - enabled: true - port: 5900 - protocol: "TCP" - -# All values here are set as the docker defaults. -envTpl: - # Permissions Settings - USER_ID: "{{ .Values.env.PUID }}" - GROUP_ID: "{{ .Values.env.PGID }}" - -env: - # Permissions Settings - PUID: "568" - PGID: "568" - # General Settings - KEEP_APP_RUNNING: "0" - CLEAN_TMP_DIR: "1" - # GUI Settings - DISPLAY_WIDTH: "1280" - DISPLAY_HEIGHT: "768" - SECURE_CONNECTION: "0" - VNC_PASSWORD: - -persistence: - config: - enabled: true - mountPath: "/config" - type: pvc - accessMode: ReadWriteOnce - size: "100Gi" diff --git a/stable/jdownloader2/1.0.0/values.yaml b/stable/jdownloader2/1.0.0/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/k8s-gateway/1.0.1/CONFIG.md b/stable/k8s-gateway/1.0.1/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/stable/k8s-gateway/1.0.1/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/k8s-gateway/1.0.1/Chart.lock b/stable/k8s-gateway/1.0.1/Chart.lock deleted file mode 100644 index 29ddeb12a27..00000000000 --- a/stable/k8s-gateway/1.0.1/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.3 -digest: sha256:0830cf69ca08fc00ef2577f7f2fd36de01eaeb815f3c41f830321a3a615c0b6a -generated: "2021-09-03T03:15:39.052708793Z" diff --git a/stable/k8s-gateway/1.0.1/Chart.yaml b/stable/k8s-gateway/1.0.1/Chart.yaml deleted file mode 100644 index ece120d57fb..00000000000 --- a/stable/k8s-gateway/1.0.1/Chart.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v2 -appVersion: auto -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.3 -deprecated: false -description: A Helm chart for the k8s_gateway CoreDNS plugin -home: https://github.com/truecharts/apps/tree/master/charts/stable/k8s-gateway -icon: https://cncf-branding.netlify.app/img/projects/coredns/icon/black/coredns-icon-black.png -keywords: -- DNS -- networking -kubeVersion: '>=1.16.0-0' -maintainers: -- email: info@truecharts.org - name: TrueCharts - url: truecharts.org -name: k8s-gateway -sources: -- https://github.com/ori-edge/k8s_gatewa -type: application -version: 1.0.1 diff --git a/stable/k8s-gateway/1.0.1/README.md b/stable/k8s-gateway/1.0.1/README.md deleted file mode 100644 index ba340913d48..00000000000 --- a/stable/k8s-gateway/1.0.1/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Introduction - -A Helm chart for the k8s_gateway CoreDNS plugin - -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.13.3 | - -## 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/k8s-gateway/1.0.1/app-readme.md b/stable/k8s-gateway/1.0.1/app-readme.md deleted file mode 100644 index ada88406431..00000000000 --- a/stable/k8s-gateway/1.0.1/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -A Helm chart for the k8s_gateway CoreDNS plugin - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -A Helm chart for the k8s_gateway CoreDNS plugin diff --git a/stable/k8s-gateway/1.0.1/charts/common-6.13.3.tgz b/stable/k8s-gateway/1.0.1/charts/common-6.13.3.tgz deleted file mode 100644 index 50e1c43c8f61fe62b01dc6aafae9c8bde1b73470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28898 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.16.0-0' -maintainers: -- email: info@truecharts.org - name: TrueCharts - url: truecharts.org -name: k8s-gateway -sources: -- https://github.com/ori-edge/k8s_gatewa -type: application -version: 1.0.2 diff --git a/stable/k8s-gateway/1.0.2/README.md b/stable/k8s-gateway/1.0.2/README.md deleted file mode 100644 index ba340913d48..00000000000 --- a/stable/k8s-gateway/1.0.2/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Introduction - -A Helm chart for the k8s_gateway CoreDNS plugin - -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.13.3 | - -## 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/k8s-gateway/1.0.2/app-readme.md b/stable/k8s-gateway/1.0.2/app-readme.md deleted file mode 100644 index ada88406431..00000000000 --- a/stable/k8s-gateway/1.0.2/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -A Helm chart for the k8s_gateway CoreDNS plugin - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -A Helm chart for the k8s_gateway CoreDNS plugin diff --git a/stable/k8s-gateway/1.0.2/charts/common-6.13.3.tgz b/stable/k8s-gateway/1.0.2/charts/common-6.13.3.tgz deleted file mode 100644 index 50e1c43c8f61fe62b01dc6aafae9c8bde1b73470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28898 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.16.0-0' -maintainers: -- email: info@truecharts.org - name: TrueCharts - url: truecharts.org -name: k8s-gateway -sources: -- https://github.com/ori-edge/k8s_gatewa -type: application -version: 1.0.3 diff --git a/stable/k8s-gateway/1.0.3/README.md b/stable/k8s-gateway/1.0.3/README.md deleted file mode 100644 index ba340913d48..00000000000 --- a/stable/k8s-gateway/1.0.3/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Introduction - -A Helm chart for the k8s_gateway CoreDNS plugin - -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.13.3 | - -## 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/k8s-gateway/1.0.3/app-readme.md b/stable/k8s-gateway/1.0.3/app-readme.md deleted file mode 100644 index ada88406431..00000000000 --- a/stable/k8s-gateway/1.0.3/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -A Helm chart for the k8s_gateway CoreDNS plugin - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -A Helm chart for the k8s_gateway CoreDNS plugin diff --git a/stable/k8s-gateway/1.0.3/charts/common-6.13.3.tgz b/stable/k8s-gateway/1.0.3/charts/common-6.13.3.tgz deleted file mode 100644 index 50e1c43c8f61fe62b01dc6aafae9c8bde1b73470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28898 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.16.0-0' -maintainers: -- email: info@truecharts.org - name: TrueCharts - url: truecharts.org -name: k8s-gateway -sources: -- https://github.com/ori-edge/k8s_gateway -type: application -version: 1.0.4 diff --git a/stable/k8s-gateway/1.0.4/README.md b/stable/k8s-gateway/1.0.4/README.md deleted file mode 100644 index ba340913d48..00000000000 --- a/stable/k8s-gateway/1.0.4/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Introduction - -A Helm chart for the k8s_gateway CoreDNS plugin - -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.13.3 | - -## 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/k8s-gateway/1.0.4/app-readme.md b/stable/k8s-gateway/1.0.4/app-readme.md deleted file mode 100644 index ada88406431..00000000000 --- a/stable/k8s-gateway/1.0.4/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -A Helm chart for the k8s_gateway CoreDNS plugin - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -A Helm chart for the k8s_gateway CoreDNS plugin diff --git a/stable/k8s-gateway/1.0.4/charts/common-6.13.3.tgz b/stable/k8s-gateway/1.0.4/charts/common-6.13.3.tgz deleted file mode 100644 index 50e1c43c8f61fe62b01dc6aafae9c8bde1b73470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28898 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.16.0-0' -maintainers: -- email: info@truecharts.org - name: TrueCharts - url: truecharts.org -name: k8s-gateway -sources: -- https://github.com/ori-edge/k8s_gateway -type: application -version: 1.0.5 diff --git a/stable/k8s-gateway/1.0.5/README.md b/stable/k8s-gateway/1.0.5/README.md deleted file mode 100644 index a3d8f3109e5..00000000000 --- a/stable/k8s-gateway/1.0.5/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Introduction - -A Helm chart for the k8s_gateway CoreDNS plugin - -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.13.3 | - -## 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/k8s-gateway/1.0.5/app-readme.md b/stable/k8s-gateway/1.0.5/app-readme.md deleted file mode 100644 index ada88406431..00000000000 --- a/stable/k8s-gateway/1.0.5/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -A Helm chart for the k8s_gateway CoreDNS plugin - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -A Helm chart for the k8s_gateway CoreDNS plugin diff --git a/stable/k8s-gateway/1.0.5/charts/common-6.13.3.tgz b/stable/k8s-gateway/1.0.5/charts/common-6.13.3.tgz deleted file mode 100644 index 50e1c43c8f61fe62b01dc6aafae9c8bde1b73470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28898 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.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.17 diff --git a/stable/traefik/6.13.17/LICENSE b/stable/traefik/6.13.17/LICENSE deleted file mode 100644 index 907ff83212c..00000000000 --- a/stable/traefik/6.13.17/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - 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.17/README.md b/stable/traefik/6.13.17/README.md deleted file mode 100644 index debe16e48db..00000000000 --- a/stable/traefik/6.13.17/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# 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.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/6.13.17/app-readme.md b/stable/traefik/6.13.17/app-readme.md deleted file mode 100644 index 6ac1d9a76a4..00000000000 --- a/stable/traefik/6.13.17/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -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.17/charts/common-6.12.4.tgz b/stable/traefik/6.13.17/charts/common-6.12.4.tgz deleted file mode 100644 index f7e20aac30df991d05052fb30a581adb93c16418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28316 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

M-G;Sj2%sWM_u+ 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 diff --git a/stable/traefik/6.13.17/crds/ingressroute.yaml b/stable/traefik/6.13.17/crds/ingressroute.yaml deleted file mode 100644 index 9422be3c878..00000000000 --- a/stable/traefik/6.13.17/crds/ingressroute.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutes.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRoute - plural: ingressroutes - singular: ingressroute - scope: Namespaced diff --git a/stable/traefik/6.13.17/crds/ingressroutetcp.yaml b/stable/traefik/6.13.17/crds/ingressroutetcp.yaml deleted file mode 100644 index b50eb9dcc46..00000000000 --- a/stable/traefik/6.13.17/crds/ingressroutetcp.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutetcps.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRouteTCP - plural: ingressroutetcps - singular: ingressroutetcp - scope: Namespaced diff --git a/stable/traefik/6.13.17/crds/ingressrouteudp.yaml b/stable/traefik/6.13.17/crds/ingressrouteudp.yaml deleted file mode 100644 index d7c2624b576..00000000000 --- a/stable/traefik/6.13.17/crds/ingressrouteudp.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressrouteudps.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRouteUDP - plural: ingressrouteudps - singular: ingressrouteudp - scope: Namespaced diff --git a/stable/traefik/6.13.17/crds/middlewares.yaml b/stable/traefik/6.13.17/crds/middlewares.yaml deleted file mode 100644 index 513b36f5d8a..00000000000 --- a/stable/traefik/6.13.17/crds/middlewares.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: middlewares.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: Middleware - plural: middlewares - singular: middleware - scope: Namespaced diff --git a/stable/traefik/6.13.17/crds/serverstransports.yaml b/stable/traefik/6.13.17/crds/serverstransports.yaml deleted file mode 100644 index 689a57f71bd..00000000000 --- a/stable/traefik/6.13.17/crds/serverstransports.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: serverstransports.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: ServersTransport - plural: serverstransports - singular: serverstransport - scope: Namespaced diff --git a/stable/traefik/6.13.17/crds/tlsoptions.yaml b/stable/traefik/6.13.17/crds/tlsoptions.yaml deleted file mode 100644 index a0c2573fb93..00000000000 --- a/stable/traefik/6.13.17/crds/tlsoptions.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tlsoptions.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TLSOption - plural: tlsoptions - singular: tlsoption - scope: Namespaced diff --git a/stable/traefik/6.13.17/crds/tlsstores.yaml b/stable/traefik/6.13.17/crds/tlsstores.yaml deleted file mode 100644 index f9a40052ba6..00000000000 --- a/stable/traefik/6.13.17/crds/tlsstores.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tlsstores.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TLSStore - plural: tlsstores - singular: tlsstore - scope: Namespaced diff --git a/stable/traefik/6.13.17/crds/traefikservices.yaml b/stable/traefik/6.13.17/crds/traefikservices.yaml deleted file mode 100644 index 59fa4839477..00000000000 --- a/stable/traefik/6.13.17/crds/traefikservices.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: traefikservices.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TraefikService - plural: traefikservices - singular: traefikservice - scope: Namespaced diff --git a/stable/traefik/6.13.17/helm-values.md b/stable/traefik/6.13.17/helm-values.md deleted file mode 100644 index b6e2549b04b..00000000000 --- a/stable/traefik/6.13.17/helm-values.md +++ /dev/null @@ -1,124 +0,0 @@ -# Default Helm-Values - -TrueCharts is primarily build to supply TrueNAS SCALE Apps. -However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. - -Most of our Apps also consume our "common" Helm Chart. -If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. -You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| additionalArguments[0] | string | `"--metrics.prometheus"` | | -| additionalArguments[1] | string | `"--ping"` | | -| additionalArguments[2] | string | `"--serverstransport.insecureskipverify=true"` | | -| additionalVolumeMounts | list | `[]` | | -| affinity | object | `{}` | | -| autoscaling.enabled | bool | `false` | | -| deployment.additionalContainers | list | `[]` | | -| deployment.additionalVolumes | list | `[]` | | -| deployment.annotations | object | `{}` | | -| deployment.enabled | bool | `true` | | -| deployment.imagePullSecrets | list | `[]` | | -| deployment.initContainers | list | `[]` | | -| deployment.kind | string | `"Deployment"` | | -| deployment.labels | object | `{}` | | -| deployment.podAnnotations | object | `{}` | | -| deployment.podLabels | object | `{}` | | -| deployment.replicas | int | `1` | | -| env | list | `[]` | | -| envFrom | list | `[]` | | -| experimental.kubernetesGateway.appLabelSelector | string | `"traefik"` | | -| experimental.kubernetesGateway.certificates | list | `[]` | | -| experimental.kubernetesGateway.enabled | bool | `false` | | -| experimental.plugins.enabled | bool | `false` | | -| globalArguments[0] | string | `"--global.checknewversion"` | | -| hostNetwork | bool | `false` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"traefik"` | | -| image.tag | string | `"v2.4"` | | -| ingressClass.enabled | bool | `false` | | -| ingressClass.fallbackApiVersion | string | `nil` | | -| ingressClass.isDefaultClass | bool | `false` | | -| ingressRoute.dashboard.annotations | object | `{}` | | -| ingressRoute.dashboard.enabled | bool | `true` | | -| ingressRoute.dashboard.labels | object | `{}` | | -| logs.access.enabled | bool | `false` | | -| logs.access.fields.general.defaultmode | string | `"keep"` | | -| logs.access.fields.general.names | object | `{}` | | -| logs.access.fields.headers.defaultmode | string | `"drop"` | | -| logs.access.fields.headers.names | object | `{}` | | -| logs.access.filters | object | `{}` | | -| logs.general.level | string | `"INFO"` | | -| middlewares.basicAuth | list | `[]` | | -| middlewares.chain | list | `[]` | | -| middlewares.forwardAuth | list | `[]` | | -| middlewares.rateLimit | list | `[]` | | -| middlewares.redirectScheme | list | `[]` | | -| nodeSelector | object | `{}` | | -| persistence.accessMode | string | `"ReadWriteOnce"` | | -| persistence.enabled | bool | `false` | | -| persistence.name | string | `"data"` | | -| persistence.path | string | `"/data"` | | -| persistence.size | string | `"128Mi"` | | -| pilot.enabled | bool | `false` | | -| pilot.token | string | `""` | | -| podDisruptionBudget.enabled | bool | `false` | | -| podSecurityContext.fsGroup | int | `65532` | | -| podSecurityPolicy.enabled | bool | `false` | | -| portalhook.enabled | bool | `true` | | -| ports.traefik.expose | bool | `false` | | -| ports.traefik.exposedPort | int | `9000` | | -| ports.traefik.port | int | `9000` | | -| ports.traefik.protocol | string | `"TCP"` | | -| ports.web.expose | bool | `true` | | -| ports.web.exposedPort | int | `80` | | -| ports.web.port | int | `9080` | | -| ports.web.protocol | string | `"TCP"` | | -| ports.web.redirectTo | string | `"websecure"` | | -| ports.websecure.expose | bool | `true` | | -| ports.websecure.exposedPort | int | `443` | | -| ports.websecure.port | int | `9443` | | -| ports.websecure.protocol | string | `"TCP"` | | -| ports.websecure.tls.enabled | bool | `true` | | -| priorityClassName | string | `""` | | -| providers.kubernetesCRD.enabled | bool | `true` | | -| providers.kubernetesCRD.namespaces | list | `[]` | | -| providers.kubernetesIngress.enabled | bool | `true` | | -| providers.kubernetesIngress.namespaces | list | `[]` | | -| providers.kubernetesIngress.publishedService.enabled | bool | `true` | | -| rbac.enabled | bool | `true` | | -| rbac.namespaced | bool | `false` | | -| resources | object | `{}` | | -| rollingUpdate.maxSurge | int | `1` | | -| rollingUpdate.maxUnavailable | int | `1` | | -| securityContext.capabilities.drop[0] | string | `"ALL"` | | -| securityContext.readOnlyRootFilesystem | bool | `true` | | -| securityContext.runAsGroup | int | `65532` | | -| securityContext.runAsNonRoot | bool | `true` | | -| securityContext.runAsUser | int | `65532` | | -| service.annotations | object | `{}` | | -| service.enabled | bool | `true` | | -| service.externalIPs | list | `[]` | | -| service.labels | object | `{}` | | -| service.loadBalancerSourceRanges | list | `[]` | | -| service.spec | object | `{}` | | -| service.type | string | `"LoadBalancer"` | | -| serviceAccount.name | string | `""` | | -| serviceAccountAnnotations | object | `{}` | | -| tlsOptions.default.cipherSuites[0] | string | `"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"` | | -| tlsOptions.default.cipherSuites[1] | string | `"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"` | | -| tlsOptions.default.cipherSuites[2] | string | `"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"` | | -| tlsOptions.default.cipherSuites[3] | string | `"TLS_AES_128_GCM_SHA256"` | | -| tlsOptions.default.cipherSuites[4] | string | `"TLS_AES_256_GCM_SHA384"` | | -| tlsOptions.default.cipherSuites[5] | string | `"TLS_CHACHA20_POLY1305_SHA256"` | | -| tlsOptions.default.curvePreferences[0] | string | `"CurveP521"` | | -| tlsOptions.default.curvePreferences[1] | string | `"CurveP384"` | | -| tlsOptions.default.minVersion | string | `"VersionTLS12"` | | -| tlsOptions.default.sniStrict | bool | `false` | | -| tolerations | list | `[]` | | -| volumes | list | `[]` | | - -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/6.13.17/ix_values.yaml b/stable/traefik/6.13.17/ix_values.yaml deleted file mode 100644 index a3464fa2a05..00000000000 --- a/stable/traefik/6.13.17/ix_values.yaml +++ /dev/null @@ -1,332 +0,0 @@ -# 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: true - # 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: [] - -# 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 - -# 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: {} - -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] - -portalhook: - enabled: true diff --git a/stable/traefik/6.13.17/questions.yaml b/stable/traefik/6.13.17/questions.yaml deleted file mode 100644 index 6031935fd58..00000000000 --- a/stable/traefik/6.13.17/questions.yaml +++ /dev/null @@ -1,508 +0,0 @@ -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: "Middlewares" - description: "Traefik Middlewares" - - 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" - path: "/dashboard/" -questions: - - variable: portal - group: "Container Image" - label: "Configure Portal Button" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "Enable" - description: "enable the portal button" - schema: - hidden: true - editable: false - type: boolean - default: true - - - variable: pilot - label: "Traefik Pilot" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "enabled" - schema: - type: boolean - default: false - - variable: token - label: "token" - schema: - type: string - default: "" - - variable: dashboard - label: "Pilot Dashboard" - schema: - type: boolean - default: false - - - variable: middlewares - label: "" - group: "Middlewares" - schema: - type: dict - attrs: - - variable: basicAuth - label: "basicAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: users - label: "Users" - schema: - type: list - default: [] - items: - - variable: usersEntry - label: "" - schema: - type: dict - attrs: - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - default: "" - - - - variable: forwardAuth - label: "forwardAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: address - label: "Address" - schema: - type: string - required: true - default: "" - - variable: trustForwardHeader - label: "trustForwardHeader" - schema: - type: boolean - default: false - - variable: authResponseHeadersRegex - label: "authResponseHeadersRegex" - schema: - type: string - default: "" - - variable: authResponseHeaders - label: "authResponseHeaders" - schema: - type: list - default: [] - items: - - variable: authResponseHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: authRequestHeaders - label: "authRequestHeaders" - schema: - type: list - default: [] - items: - - variable: authRequestHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: chain - label: "chain" - schema: - type: list - default: [] - items: - - variable: chainEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: middlewares - label: "Middlewares to Chain" - schema: - type: list - default: [] - items: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - - variable: redirectScheme - label: "redirectScheme" - schema: - type: list - default: [] - items: - - variable: redirectSchemeEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: scheme - label: "Scheme" - schema: - type: string - required: true - default: "https" - enum: - - value: "https" - description: "https" - - value: "http" - description: "http" - - variable: permanent - label: "Permanent" - schema: - type: boolean - required: true - default: false - - - variable: rateLimit - label: "rateLimit" - schema: - type: list - default: [] - items: - - variable: rateLimitEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: average - label: "Average" - schema: - type: int - required: true - default: 300 - - variable: burst - label: "Burst" - schema: - type: int - required: true - default: 200 - - - variable: hostNetwork - group: "Networking and Services" - label: "Enable Host Networking" - schema: - type: boolean - default: false - - - variable: ports - label: "(Advanced) Traefik Entrypoints" - group: "Networking and Services" - schema: - type: dict - attrs: - - variable: traefik - label: "traefik internal" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9000 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port on the outside" - schema: - type: int - show_if: [["expose", "=", true]] - default: 9000 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - default: "TCP" - - variable: web - label: "web" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9080 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port to the outside of all(!) nodes" - schema: - type: int - show_if: [["expose", "=", true]] - required: true - default: 9080 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - required: true - default: "TCP" - hidden: true - - variable: redirectEnable - label: "Enable Redirect" - schema: - type: boolean - default: true - show_subquestions_if: true - subquestions: - - variable: redirectTo - label: "Target Entrypoint" - description: "Select the Target Entrypoint to redirect to" - schema: - type: string - required: true - default: "websecure" - - variable: websecure - label: "websecure" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9443 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port to the outside of all(!) nodes" - schema: - type: int - show_if: [["expose", "=", true]] - required: true - default: 9443 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - required: true - default: "TCP" - hidden: true - - variable: tls - label: "tls" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "enabled" - schema: - type: boolean - default: true - hidden: true - - - variable: securityContext - group: "Security and Permissions" - label: "Security Context" - schema: - type: dict - attrs: - - variable: privileged - label: "Enable privileged mode for Common-Chart based charts" - schema: - type: boolean - default: false - - 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: 65532 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 65532 - - - - - variable: podSecurityContext - group: "Security and Permissions" - label: "Pod Security Context" - schema: - type: dict - attrs: - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 65532 - - 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" diff --git a/stable/traefik/6.13.17/templates/_helpers.tpl b/stable/traefik/6.13.17/templates/_helpers.tpl deleted file mode 100644 index f7b055fa82e..00000000000 --- a/stable/traefik/6.13.17/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "traefik.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "traefik.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "traefik.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -The name of the service account to use -*/}} -{{- define "traefik.serviceAccountName" -}} -{{- default (include "traefik.fullname" .) .Values.serviceAccount.name -}} -{{- end -}} - -{{/* -Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. -By convention this will simply use the / to match the name of the -service generated. -Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` -*/}} -{{- define "providers.kubernetesIngress.publishedServicePath" -}} -{{- $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.17/templates/_podtemplate.tpl b/stable/traefik/6.13.17/templates/_podtemplate.tpl deleted file mode 100644 index 21e60ceba92..00000000000 --- a/stable/traefik/6.13.17/templates/_podtemplate.tpl +++ /dev/null @@ -1,265 +0,0 @@ -{{- 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.17/templates/custom/common.yaml b/stable/traefik/6.13.17/templates/custom/common.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/traefik/6.13.17/templates/custom/middleware-namespace.yaml b/stable/traefik/6.13.17/templates/custom/middleware-namespace.yaml deleted file mode 100644 index 16156ee5e12..00000000000 --- a/stable/traefik/6.13.17/templates/custom/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install diff --git a/stable/traefik/6.13.17/templates/custom/middlewares/basic-middleware.yaml b/stable/traefik/6.13.17/templates/custom/middlewares/basic-middleware.yaml deleted file mode 100644 index 98f7d1c170c..00000000000 --- a/stable/traefik/6.13.17/templates/custom/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -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.17/templates/custom/middlewares/basicauth.yaml b/stable/traefik/6.13.17/templates/custom/middlewares/basicauth.yaml deleted file mode 100644 index 4e0f326a2f4..00000000000 --- a/stable/traefik/6.13.17/templates/custom/middlewares/basicauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{ 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.17/templates/custom/middlewares/chain.yaml b/stable/traefik/6.13.17/templates/custom/middlewares/chain.yaml deleted file mode 100644 index ef592c255ba..00000000000 --- a/stable/traefik/6.13.17/templates/custom/middlewares/chain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{ 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.17/templates/custom/middlewares/forwardauth.yaml b/stable/traefik/6.13.17/templates/custom/middlewares/forwardauth.yaml deleted file mode 100644 index bb90d33775e..00000000000 --- a/stable/traefik/6.13.17/templates/custom/middlewares/forwardauth.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{ 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.17/templates/custom/middlewares/ratelimit.yaml b/stable/traefik/6.13.17/templates/custom/middlewares/ratelimit.yaml deleted file mode 100644 index b4bfa938e6e..00000000000 --- a/stable/traefik/6.13.17/templates/custom/middlewares/ratelimit.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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.17/templates/custom/middlewares/redirectScheme.yaml b/stable/traefik/6.13.17/templates/custom/middlewares/redirectScheme.yaml deleted file mode 100644 index 070c8fc4a90..00000000000 --- a/stable/traefik/6.13.17/templates/custom/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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.17/templates/custom/portal.yaml b/stable/traefik/6.13.17/templates/custom/portal.yaml deleted file mode 100644 index 92e80f287a2..00000000000 --- a/stable/traefik/6.13.17/templates/custom/portal.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- 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.17/templates/custom/portalhook.yaml b/stable/traefik/6.13.17/templates/custom/portalhook.yaml deleted file mode 100644 index 5a9fee80da4..00000000000 --- a/stable/traefik/6.13.17/templates/custom/portalhook.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- 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.17/templates/daemonset.yaml b/stable/traefik/6.13.17/templates/daemonset.yaml deleted file mode 100644 index 469e105c358..00000000000 --- a/stable/traefik/6.13.17/templates/daemonset.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- 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.17/templates/dashboard-hook-ingressroute.yaml b/stable/traefik/6.13.17/templates/dashboard-hook-ingressroute.yaml deleted file mode 100644 index ec278c26910..00000000000 --- a/stable/traefik/6.13.17/templates/dashboard-hook-ingressroute.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- 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.17/templates/deployment.yaml b/stable/traefik/6.13.17/templates/deployment.yaml deleted file mode 100644 index 494087cfd0a..00000000000 --- a/stable/traefik/6.13.17/templates/deployment.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- 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.17/templates/gateway.yaml b/stable/traefik/6.13.17/templates/gateway.yaml deleted file mode 100644 index 85194211fe5..00000000000 --- a/stable/traefik/6.13.17/templates/gateway.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- 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.17/templates/gatewayclass.yaml b/stable/traefik/6.13.17/templates/gatewayclass.yaml deleted file mode 100644 index 61bf007db1e..00000000000 --- a/stable/traefik/6.13.17/templates/gatewayclass.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- 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.17/templates/hpa.yaml b/stable/traefik/6.13.17/templates/hpa.yaml deleted file mode 100644 index bf37117de6a..00000000000 --- a/stable/traefik/6.13.17/templates/hpa.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- 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.17/templates/ingressclass.yaml b/stable/traefik/6.13.17/templates/ingressclass.yaml deleted file mode 100644 index 7c62458c82e..00000000000 --- a/stable/traefik/6.13.17/templates/ingressclass.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- 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.17/templates/poddisruptionbudget.yaml b/stable/traefik/6.13.17/templates/poddisruptionbudget.yaml deleted file mode 100644 index 9893e521759..00000000000 --- a/stable/traefik/6.13.17/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- 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.17/templates/rbac/clusterrole.yaml b/stable/traefik/6.13.17/templates/rbac/clusterrole.yaml deleted file mode 100644 index 2c63e006414..00000000000 --- a/stable/traefik/6.13.17/templates/rbac/clusterrole.yaml +++ /dev/null @@ -1,112 +0,0 @@ -{{- 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.17/templates/rbac/clusterrolebinding.yaml b/stable/traefik/6.13.17/templates/rbac/clusterrolebinding.yaml deleted file mode 100644 index 509e92ff2b7..00000000000 --- a/stable/traefik/6.13.17/templates/rbac/clusterrolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- 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.17/templates/rbac/podsecuritypolicy.yaml b/stable/traefik/6.13.17/templates/rbac/podsecuritypolicy.yaml deleted file mode 100644 index 66bc1458d55..00000000000 --- a/stable/traefik/6.13.17/templates/rbac/podsecuritypolicy.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- 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.17/templates/rbac/role.yaml b/stable/traefik/6.13.17/templates/rbac/role.yaml deleted file mode 100644 index 2499d2dc60b..00000000000 --- a/stable/traefik/6.13.17/templates/rbac/role.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- 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 - - networking.k8s.io - resources: - - ingresses - 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: - - extensions - resourceNames: - - {{ template "traefik.fullname" . }} - resources: - - podsecuritypolicies - verbs: - - use -{{- end -}} -{{- end -}} diff --git a/stable/traefik/6.13.17/templates/rbac/rolebinding.yaml b/stable/traefik/6.13.17/templates/rbac/rolebinding.yaml deleted file mode 100644 index 10416401867..00000000000 --- a/stable/traefik/6.13.17/templates/rbac/rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- 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.17/templates/rbac/serviceaccount.yaml b/stable/traefik/6.13.17/templates/rbac/serviceaccount.yaml deleted file mode 100644 index bcc941eec95..00000000000 --- a/stable/traefik/6.13.17/templates/rbac/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- 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.17/templates/service.yaml b/stable/traefik/6.13.17/templates/service.yaml deleted file mode 100644 index 745bb9102d7..00000000000 --- a/stable/traefik/6.13.17/templates/service.yaml +++ /dev/null @@ -1,114 +0,0 @@ -{{- 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.17/templates/tlsoption.yaml b/stable/traefik/6.13.17/templates/tlsoption.yaml deleted file mode 100644 index ec46e8bbc94..00000000000 --- a/stable/traefik/6.13.17/templates/tlsoption.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- 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.17/test_values.yaml b/stable/traefik/6.13.17/test_values.yaml deleted file mode 100644 index 004b1ef68f9..00000000000 --- a/stable/traefik/6.13.17/test_values.yaml +++ /dev/null @@ -1,438 +0,0 @@ -# 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: true - # 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.17/values.yaml b/stable/traefik/6.13.17/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/traefik/6.13.18/CONFIG.md b/stable/traefik/6.13.18/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/stable/traefik/6.13.18/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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.18/Chart.lock b/stable/traefik/6.13.18/Chart.lock deleted file mode 100644 index da81bf875f4..00000000000 --- a/stable/traefik/6.13.18/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.12.4 -digest: sha256:62b51750a57da4ed871c5222664ac35112f28bb013f042fc09ff928bf466a970 -generated: "2021-09-03T13:03:01.448117523Z" diff --git a/stable/traefik/6.13.18/Chart.yaml b/stable/traefik/6.13.18/Chart.yaml deleted file mode 100644 index 0cb49c69e69..00000000000 --- a/stable/traefik/6.13.18/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.12.4 -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.18 diff --git a/stable/traefik/6.13.18/LICENSE b/stable/traefik/6.13.18/LICENSE deleted file mode 100644 index 907ff83212c..00000000000 --- a/stable/traefik/6.13.18/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - 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.18/README.md b/stable/traefik/6.13.18/README.md deleted file mode 100644 index debe16e48db..00000000000 --- a/stable/traefik/6.13.18/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# 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.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/6.13.18/app-readme.md b/stable/traefik/6.13.18/app-readme.md deleted file mode 100644 index 6ac1d9a76a4..00000000000 --- a/stable/traefik/6.13.18/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -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.18/charts/common-6.12.4.tgz b/stable/traefik/6.13.18/charts/common-6.12.4.tgz deleted file mode 100644 index f7e20aac30df991d05052fb30a581adb93c16418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28316 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

M-G;Sj2%sWM_u+ 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 diff --git a/stable/traefik/6.13.18/crds/ingressroute.yaml b/stable/traefik/6.13.18/crds/ingressroute.yaml deleted file mode 100644 index 9422be3c878..00000000000 --- a/stable/traefik/6.13.18/crds/ingressroute.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutes.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRoute - plural: ingressroutes - singular: ingressroute - scope: Namespaced diff --git a/stable/traefik/6.13.18/crds/ingressroutetcp.yaml b/stable/traefik/6.13.18/crds/ingressroutetcp.yaml deleted file mode 100644 index b50eb9dcc46..00000000000 --- a/stable/traefik/6.13.18/crds/ingressroutetcp.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutetcps.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRouteTCP - plural: ingressroutetcps - singular: ingressroutetcp - scope: Namespaced diff --git a/stable/traefik/6.13.18/crds/ingressrouteudp.yaml b/stable/traefik/6.13.18/crds/ingressrouteudp.yaml deleted file mode 100644 index d7c2624b576..00000000000 --- a/stable/traefik/6.13.18/crds/ingressrouteudp.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressrouteudps.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRouteUDP - plural: ingressrouteudps - singular: ingressrouteudp - scope: Namespaced diff --git a/stable/traefik/6.13.18/crds/middlewares.yaml b/stable/traefik/6.13.18/crds/middlewares.yaml deleted file mode 100644 index 513b36f5d8a..00000000000 --- a/stable/traefik/6.13.18/crds/middlewares.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: middlewares.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: Middleware - plural: middlewares - singular: middleware - scope: Namespaced diff --git a/stable/traefik/6.13.18/crds/serverstransports.yaml b/stable/traefik/6.13.18/crds/serverstransports.yaml deleted file mode 100644 index 689a57f71bd..00000000000 --- a/stable/traefik/6.13.18/crds/serverstransports.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: serverstransports.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: ServersTransport - plural: serverstransports - singular: serverstransport - scope: Namespaced diff --git a/stable/traefik/6.13.18/crds/tlsoptions.yaml b/stable/traefik/6.13.18/crds/tlsoptions.yaml deleted file mode 100644 index a0c2573fb93..00000000000 --- a/stable/traefik/6.13.18/crds/tlsoptions.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tlsoptions.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TLSOption - plural: tlsoptions - singular: tlsoption - scope: Namespaced diff --git a/stable/traefik/6.13.18/crds/tlsstores.yaml b/stable/traefik/6.13.18/crds/tlsstores.yaml deleted file mode 100644 index f9a40052ba6..00000000000 --- a/stable/traefik/6.13.18/crds/tlsstores.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tlsstores.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TLSStore - plural: tlsstores - singular: tlsstore - scope: Namespaced diff --git a/stable/traefik/6.13.18/crds/traefikservices.yaml b/stable/traefik/6.13.18/crds/traefikservices.yaml deleted file mode 100644 index 59fa4839477..00000000000 --- a/stable/traefik/6.13.18/crds/traefikservices.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: traefikservices.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TraefikService - plural: traefikservices - singular: traefikservice - scope: Namespaced diff --git a/stable/traefik/6.13.18/helm-values.md b/stable/traefik/6.13.18/helm-values.md deleted file mode 100644 index b6e2549b04b..00000000000 --- a/stable/traefik/6.13.18/helm-values.md +++ /dev/null @@ -1,124 +0,0 @@ -# Default Helm-Values - -TrueCharts is primarily build to supply TrueNAS SCALE Apps. -However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. - -Most of our Apps also consume our "common" Helm Chart. -If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. -You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| additionalArguments[0] | string | `"--metrics.prometheus"` | | -| additionalArguments[1] | string | `"--ping"` | | -| additionalArguments[2] | string | `"--serverstransport.insecureskipverify=true"` | | -| additionalVolumeMounts | list | `[]` | | -| affinity | object | `{}` | | -| autoscaling.enabled | bool | `false` | | -| deployment.additionalContainers | list | `[]` | | -| deployment.additionalVolumes | list | `[]` | | -| deployment.annotations | object | `{}` | | -| deployment.enabled | bool | `true` | | -| deployment.imagePullSecrets | list | `[]` | | -| deployment.initContainers | list | `[]` | | -| deployment.kind | string | `"Deployment"` | | -| deployment.labels | object | `{}` | | -| deployment.podAnnotations | object | `{}` | | -| deployment.podLabels | object | `{}` | | -| deployment.replicas | int | `1` | | -| env | list | `[]` | | -| envFrom | list | `[]` | | -| experimental.kubernetesGateway.appLabelSelector | string | `"traefik"` | | -| experimental.kubernetesGateway.certificates | list | `[]` | | -| experimental.kubernetesGateway.enabled | bool | `false` | | -| experimental.plugins.enabled | bool | `false` | | -| globalArguments[0] | string | `"--global.checknewversion"` | | -| hostNetwork | bool | `false` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"traefik"` | | -| image.tag | string | `"v2.4"` | | -| ingressClass.enabled | bool | `false` | | -| ingressClass.fallbackApiVersion | string | `nil` | | -| ingressClass.isDefaultClass | bool | `false` | | -| ingressRoute.dashboard.annotations | object | `{}` | | -| ingressRoute.dashboard.enabled | bool | `true` | | -| ingressRoute.dashboard.labels | object | `{}` | | -| logs.access.enabled | bool | `false` | | -| logs.access.fields.general.defaultmode | string | `"keep"` | | -| logs.access.fields.general.names | object | `{}` | | -| logs.access.fields.headers.defaultmode | string | `"drop"` | | -| logs.access.fields.headers.names | object | `{}` | | -| logs.access.filters | object | `{}` | | -| logs.general.level | string | `"INFO"` | | -| middlewares.basicAuth | list | `[]` | | -| middlewares.chain | list | `[]` | | -| middlewares.forwardAuth | list | `[]` | | -| middlewares.rateLimit | list | `[]` | | -| middlewares.redirectScheme | list | `[]` | | -| nodeSelector | object | `{}` | | -| persistence.accessMode | string | `"ReadWriteOnce"` | | -| persistence.enabled | bool | `false` | | -| persistence.name | string | `"data"` | | -| persistence.path | string | `"/data"` | | -| persistence.size | string | `"128Mi"` | | -| pilot.enabled | bool | `false` | | -| pilot.token | string | `""` | | -| podDisruptionBudget.enabled | bool | `false` | | -| podSecurityContext.fsGroup | int | `65532` | | -| podSecurityPolicy.enabled | bool | `false` | | -| portalhook.enabled | bool | `true` | | -| ports.traefik.expose | bool | `false` | | -| ports.traefik.exposedPort | int | `9000` | | -| ports.traefik.port | int | `9000` | | -| ports.traefik.protocol | string | `"TCP"` | | -| ports.web.expose | bool | `true` | | -| ports.web.exposedPort | int | `80` | | -| ports.web.port | int | `9080` | | -| ports.web.protocol | string | `"TCP"` | | -| ports.web.redirectTo | string | `"websecure"` | | -| ports.websecure.expose | bool | `true` | | -| ports.websecure.exposedPort | int | `443` | | -| ports.websecure.port | int | `9443` | | -| ports.websecure.protocol | string | `"TCP"` | | -| ports.websecure.tls.enabled | bool | `true` | | -| priorityClassName | string | `""` | | -| providers.kubernetesCRD.enabled | bool | `true` | | -| providers.kubernetesCRD.namespaces | list | `[]` | | -| providers.kubernetesIngress.enabled | bool | `true` | | -| providers.kubernetesIngress.namespaces | list | `[]` | | -| providers.kubernetesIngress.publishedService.enabled | bool | `true` | | -| rbac.enabled | bool | `true` | | -| rbac.namespaced | bool | `false` | | -| resources | object | `{}` | | -| rollingUpdate.maxSurge | int | `1` | | -| rollingUpdate.maxUnavailable | int | `1` | | -| securityContext.capabilities.drop[0] | string | `"ALL"` | | -| securityContext.readOnlyRootFilesystem | bool | `true` | | -| securityContext.runAsGroup | int | `65532` | | -| securityContext.runAsNonRoot | bool | `true` | | -| securityContext.runAsUser | int | `65532` | | -| service.annotations | object | `{}` | | -| service.enabled | bool | `true` | | -| service.externalIPs | list | `[]` | | -| service.labels | object | `{}` | | -| service.loadBalancerSourceRanges | list | `[]` | | -| service.spec | object | `{}` | | -| service.type | string | `"LoadBalancer"` | | -| serviceAccount.name | string | `""` | | -| serviceAccountAnnotations | object | `{}` | | -| tlsOptions.default.cipherSuites[0] | string | `"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"` | | -| tlsOptions.default.cipherSuites[1] | string | `"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"` | | -| tlsOptions.default.cipherSuites[2] | string | `"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"` | | -| tlsOptions.default.cipherSuites[3] | string | `"TLS_AES_128_GCM_SHA256"` | | -| tlsOptions.default.cipherSuites[4] | string | `"TLS_AES_256_GCM_SHA384"` | | -| tlsOptions.default.cipherSuites[5] | string | `"TLS_CHACHA20_POLY1305_SHA256"` | | -| tlsOptions.default.curvePreferences[0] | string | `"CurveP521"` | | -| tlsOptions.default.curvePreferences[1] | string | `"CurveP384"` | | -| tlsOptions.default.minVersion | string | `"VersionTLS12"` | | -| tlsOptions.default.sniStrict | bool | `false` | | -| tolerations | list | `[]` | | -| volumes | list | `[]` | | - -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/6.13.18/ix_values.yaml b/stable/traefik/6.13.18/ix_values.yaml deleted file mode 100644 index a3464fa2a05..00000000000 --- a/stable/traefik/6.13.18/ix_values.yaml +++ /dev/null @@ -1,332 +0,0 @@ -# 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: true - # 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: [] - -# 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 - -# 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: {} - -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] - -portalhook: - enabled: true diff --git a/stable/traefik/6.13.18/questions.yaml b/stable/traefik/6.13.18/questions.yaml deleted file mode 100644 index 6031935fd58..00000000000 --- a/stable/traefik/6.13.18/questions.yaml +++ /dev/null @@ -1,508 +0,0 @@ -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: "Middlewares" - description: "Traefik Middlewares" - - 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" - path: "/dashboard/" -questions: - - variable: portal - group: "Container Image" - label: "Configure Portal Button" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "Enable" - description: "enable the portal button" - schema: - hidden: true - editable: false - type: boolean - default: true - - - variable: pilot - label: "Traefik Pilot" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "enabled" - schema: - type: boolean - default: false - - variable: token - label: "token" - schema: - type: string - default: "" - - variable: dashboard - label: "Pilot Dashboard" - schema: - type: boolean - default: false - - - variable: middlewares - label: "" - group: "Middlewares" - schema: - type: dict - attrs: - - variable: basicAuth - label: "basicAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: users - label: "Users" - schema: - type: list - default: [] - items: - - variable: usersEntry - label: "" - schema: - type: dict - attrs: - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - default: "" - - - - variable: forwardAuth - label: "forwardAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: address - label: "Address" - schema: - type: string - required: true - default: "" - - variable: trustForwardHeader - label: "trustForwardHeader" - schema: - type: boolean - default: false - - variable: authResponseHeadersRegex - label: "authResponseHeadersRegex" - schema: - type: string - default: "" - - variable: authResponseHeaders - label: "authResponseHeaders" - schema: - type: list - default: [] - items: - - variable: authResponseHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: authRequestHeaders - label: "authRequestHeaders" - schema: - type: list - default: [] - items: - - variable: authRequestHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: chain - label: "chain" - schema: - type: list - default: [] - items: - - variable: chainEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: middlewares - label: "Middlewares to Chain" - schema: - type: list - default: [] - items: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - - variable: redirectScheme - label: "redirectScheme" - schema: - type: list - default: [] - items: - - variable: redirectSchemeEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: scheme - label: "Scheme" - schema: - type: string - required: true - default: "https" - enum: - - value: "https" - description: "https" - - value: "http" - description: "http" - - variable: permanent - label: "Permanent" - schema: - type: boolean - required: true - default: false - - - variable: rateLimit - label: "rateLimit" - schema: - type: list - default: [] - items: - - variable: rateLimitEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: average - label: "Average" - schema: - type: int - required: true - default: 300 - - variable: burst - label: "Burst" - schema: - type: int - required: true - default: 200 - - - variable: hostNetwork - group: "Networking and Services" - label: "Enable Host Networking" - schema: - type: boolean - default: false - - - variable: ports - label: "(Advanced) Traefik Entrypoints" - group: "Networking and Services" - schema: - type: dict - attrs: - - variable: traefik - label: "traefik internal" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9000 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port on the outside" - schema: - type: int - show_if: [["expose", "=", true]] - default: 9000 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - default: "TCP" - - variable: web - label: "web" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9080 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port to the outside of all(!) nodes" - schema: - type: int - show_if: [["expose", "=", true]] - required: true - default: 9080 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - required: true - default: "TCP" - hidden: true - - variable: redirectEnable - label: "Enable Redirect" - schema: - type: boolean - default: true - show_subquestions_if: true - subquestions: - - variable: redirectTo - label: "Target Entrypoint" - description: "Select the Target Entrypoint to redirect to" - schema: - type: string - required: true - default: "websecure" - - variable: websecure - label: "websecure" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9443 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port to the outside of all(!) nodes" - schema: - type: int - show_if: [["expose", "=", true]] - required: true - default: 9443 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - required: true - default: "TCP" - hidden: true - - variable: tls - label: "tls" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "enabled" - schema: - type: boolean - default: true - hidden: true - - - variable: securityContext - group: "Security and Permissions" - label: "Security Context" - schema: - type: dict - attrs: - - variable: privileged - label: "Enable privileged mode for Common-Chart based charts" - schema: - type: boolean - default: false - - 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: 65532 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 65532 - - - - - variable: podSecurityContext - group: "Security and Permissions" - label: "Pod Security Context" - schema: - type: dict - attrs: - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 65532 - - 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" diff --git a/stable/traefik/6.13.18/templates/_helpers.tpl b/stable/traefik/6.13.18/templates/_helpers.tpl deleted file mode 100644 index f7b055fa82e..00000000000 --- a/stable/traefik/6.13.18/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "traefik.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "traefik.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "traefik.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -The name of the service account to use -*/}} -{{- define "traefik.serviceAccountName" -}} -{{- default (include "traefik.fullname" .) .Values.serviceAccount.name -}} -{{- end -}} - -{{/* -Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. -By convention this will simply use the / to match the name of the -service generated. -Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` -*/}} -{{- define "providers.kubernetesIngress.publishedServicePath" -}} -{{- $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.18/templates/_podtemplate.tpl b/stable/traefik/6.13.18/templates/_podtemplate.tpl deleted file mode 100644 index 21e60ceba92..00000000000 --- a/stable/traefik/6.13.18/templates/_podtemplate.tpl +++ /dev/null @@ -1,265 +0,0 @@ -{{- 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.18/templates/custom/common.yaml b/stable/traefik/6.13.18/templates/custom/common.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/traefik/6.13.18/templates/custom/middleware-namespace.yaml b/stable/traefik/6.13.18/templates/custom/middleware-namespace.yaml deleted file mode 100644 index 16156ee5e12..00000000000 --- a/stable/traefik/6.13.18/templates/custom/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install diff --git a/stable/traefik/6.13.18/templates/custom/middlewares/basic-middleware.yaml b/stable/traefik/6.13.18/templates/custom/middlewares/basic-middleware.yaml deleted file mode 100644 index 98f7d1c170c..00000000000 --- a/stable/traefik/6.13.18/templates/custom/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -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.18/templates/custom/middlewares/basicauth.yaml b/stable/traefik/6.13.18/templates/custom/middlewares/basicauth.yaml deleted file mode 100644 index 4e0f326a2f4..00000000000 --- a/stable/traefik/6.13.18/templates/custom/middlewares/basicauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{ 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.18/templates/custom/middlewares/chain.yaml b/stable/traefik/6.13.18/templates/custom/middlewares/chain.yaml deleted file mode 100644 index ef592c255ba..00000000000 --- a/stable/traefik/6.13.18/templates/custom/middlewares/chain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{ 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.18/templates/custom/middlewares/forwardauth.yaml b/stable/traefik/6.13.18/templates/custom/middlewares/forwardauth.yaml deleted file mode 100644 index bb90d33775e..00000000000 --- a/stable/traefik/6.13.18/templates/custom/middlewares/forwardauth.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{ 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.18/templates/custom/middlewares/ratelimit.yaml b/stable/traefik/6.13.18/templates/custom/middlewares/ratelimit.yaml deleted file mode 100644 index b4bfa938e6e..00000000000 --- a/stable/traefik/6.13.18/templates/custom/middlewares/ratelimit.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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.18/templates/custom/middlewares/redirectScheme.yaml b/stable/traefik/6.13.18/templates/custom/middlewares/redirectScheme.yaml deleted file mode 100644 index 070c8fc4a90..00000000000 --- a/stable/traefik/6.13.18/templates/custom/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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.18/templates/custom/portal.yaml b/stable/traefik/6.13.18/templates/custom/portal.yaml deleted file mode 100644 index 92e80f287a2..00000000000 --- a/stable/traefik/6.13.18/templates/custom/portal.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- 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.18/templates/custom/portalhook.yaml b/stable/traefik/6.13.18/templates/custom/portalhook.yaml deleted file mode 100644 index 5a9fee80da4..00000000000 --- a/stable/traefik/6.13.18/templates/custom/portalhook.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- 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.18/templates/daemonset.yaml b/stable/traefik/6.13.18/templates/daemonset.yaml deleted file mode 100644 index 469e105c358..00000000000 --- a/stable/traefik/6.13.18/templates/daemonset.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- 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.18/templates/dashboard-hook-ingressroute.yaml b/stable/traefik/6.13.18/templates/dashboard-hook-ingressroute.yaml deleted file mode 100644 index ec278c26910..00000000000 --- a/stable/traefik/6.13.18/templates/dashboard-hook-ingressroute.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- 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.18/templates/deployment.yaml b/stable/traefik/6.13.18/templates/deployment.yaml deleted file mode 100644 index 494087cfd0a..00000000000 --- a/stable/traefik/6.13.18/templates/deployment.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- 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.18/templates/gateway.yaml b/stable/traefik/6.13.18/templates/gateway.yaml deleted file mode 100644 index 85194211fe5..00000000000 --- a/stable/traefik/6.13.18/templates/gateway.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- 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.18/templates/gatewayclass.yaml b/stable/traefik/6.13.18/templates/gatewayclass.yaml deleted file mode 100644 index 61bf007db1e..00000000000 --- a/stable/traefik/6.13.18/templates/gatewayclass.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- 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.18/templates/hpa.yaml b/stable/traefik/6.13.18/templates/hpa.yaml deleted file mode 100644 index bf37117de6a..00000000000 --- a/stable/traefik/6.13.18/templates/hpa.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- 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.18/templates/ingressclass.yaml b/stable/traefik/6.13.18/templates/ingressclass.yaml deleted file mode 100644 index 7c62458c82e..00000000000 --- a/stable/traefik/6.13.18/templates/ingressclass.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- 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.18/templates/poddisruptionbudget.yaml b/stable/traefik/6.13.18/templates/poddisruptionbudget.yaml deleted file mode 100644 index 9893e521759..00000000000 --- a/stable/traefik/6.13.18/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- 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.18/templates/rbac/clusterrole.yaml b/stable/traefik/6.13.18/templates/rbac/clusterrole.yaml deleted file mode 100644 index 2c63e006414..00000000000 --- a/stable/traefik/6.13.18/templates/rbac/clusterrole.yaml +++ /dev/null @@ -1,112 +0,0 @@ -{{- 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.18/templates/rbac/clusterrolebinding.yaml b/stable/traefik/6.13.18/templates/rbac/clusterrolebinding.yaml deleted file mode 100644 index 509e92ff2b7..00000000000 --- a/stable/traefik/6.13.18/templates/rbac/clusterrolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- 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.18/templates/rbac/podsecuritypolicy.yaml b/stable/traefik/6.13.18/templates/rbac/podsecuritypolicy.yaml deleted file mode 100644 index 66bc1458d55..00000000000 --- a/stable/traefik/6.13.18/templates/rbac/podsecuritypolicy.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- 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.18/templates/rbac/role.yaml b/stable/traefik/6.13.18/templates/rbac/role.yaml deleted file mode 100644 index 2499d2dc60b..00000000000 --- a/stable/traefik/6.13.18/templates/rbac/role.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- 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 - - networking.k8s.io - resources: - - ingresses - 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: - - extensions - resourceNames: - - {{ template "traefik.fullname" . }} - resources: - - podsecuritypolicies - verbs: - - use -{{- end -}} -{{- end -}} diff --git a/stable/traefik/6.13.18/templates/rbac/rolebinding.yaml b/stable/traefik/6.13.18/templates/rbac/rolebinding.yaml deleted file mode 100644 index 10416401867..00000000000 --- a/stable/traefik/6.13.18/templates/rbac/rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- 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.18/templates/rbac/serviceaccount.yaml b/stable/traefik/6.13.18/templates/rbac/serviceaccount.yaml deleted file mode 100644 index bcc941eec95..00000000000 --- a/stable/traefik/6.13.18/templates/rbac/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- 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.18/templates/service.yaml b/stable/traefik/6.13.18/templates/service.yaml deleted file mode 100644 index 745bb9102d7..00000000000 --- a/stable/traefik/6.13.18/templates/service.yaml +++ /dev/null @@ -1,114 +0,0 @@ -{{- 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.18/templates/tlsoption.yaml b/stable/traefik/6.13.18/templates/tlsoption.yaml deleted file mode 100644 index ec46e8bbc94..00000000000 --- a/stable/traefik/6.13.18/templates/tlsoption.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- 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.18/test_values.yaml b/stable/traefik/6.13.18/test_values.yaml deleted file mode 100644 index 004b1ef68f9..00000000000 --- a/stable/traefik/6.13.18/test_values.yaml +++ /dev/null @@ -1,438 +0,0 @@ -# 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: true - # 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.18/values.yaml b/stable/traefik/6.13.18/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/traefik/6.13.19/CONFIG.md b/stable/traefik/6.13.19/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/stable/traefik/6.13.19/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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.19/Chart.lock b/stable/traefik/6.13.19/Chart.lock deleted file mode 100644 index 2add880ad94..00000000000 --- a/stable/traefik/6.13.19/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.12.4 -digest: sha256:62b51750a57da4ed871c5222664ac35112f28bb013f042fc09ff928bf466a970 -generated: "2021-09-03T22:23:18.234093773Z" diff --git a/stable/traefik/6.13.19/Chart.yaml b/stable/traefik/6.13.19/Chart.yaml deleted file mode 100644 index 0ce38274707..00000000000 --- a/stable/traefik/6.13.19/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.12.4 -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.19 diff --git a/stable/traefik/6.13.19/LICENSE b/stable/traefik/6.13.19/LICENSE deleted file mode 100644 index 907ff83212c..00000000000 --- a/stable/traefik/6.13.19/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - 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.19/README.md b/stable/traefik/6.13.19/README.md deleted file mode 100644 index debe16e48db..00000000000 --- a/stable/traefik/6.13.19/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# 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.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/6.13.19/app-readme.md b/stable/traefik/6.13.19/app-readme.md deleted file mode 100644 index 6ac1d9a76a4..00000000000 --- a/stable/traefik/6.13.19/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -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.19/charts/common-6.12.4.tgz b/stable/traefik/6.13.19/charts/common-6.12.4.tgz deleted file mode 100644 index f7e20aac30df991d05052fb30a581adb93c16418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28316 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

M-G;Sj2%sWM_u+ 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 diff --git a/stable/traefik/6.13.19/crds/ingressroute.yaml b/stable/traefik/6.13.19/crds/ingressroute.yaml deleted file mode 100644 index 9422be3c878..00000000000 --- a/stable/traefik/6.13.19/crds/ingressroute.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutes.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRoute - plural: ingressroutes - singular: ingressroute - scope: Namespaced diff --git a/stable/traefik/6.13.19/crds/ingressroutetcp.yaml b/stable/traefik/6.13.19/crds/ingressroutetcp.yaml deleted file mode 100644 index b50eb9dcc46..00000000000 --- a/stable/traefik/6.13.19/crds/ingressroutetcp.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressroutetcps.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRouteTCP - plural: ingressroutetcps - singular: ingressroutetcp - scope: Namespaced diff --git a/stable/traefik/6.13.19/crds/ingressrouteudp.yaml b/stable/traefik/6.13.19/crds/ingressrouteudp.yaml deleted file mode 100644 index d7c2624b576..00000000000 --- a/stable/traefik/6.13.19/crds/ingressrouteudp.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: ingressrouteudps.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: IngressRouteUDP - plural: ingressrouteudps - singular: ingressrouteudp - scope: Namespaced diff --git a/stable/traefik/6.13.19/crds/middlewares.yaml b/stable/traefik/6.13.19/crds/middlewares.yaml deleted file mode 100644 index 513b36f5d8a..00000000000 --- a/stable/traefik/6.13.19/crds/middlewares.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: middlewares.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: Middleware - plural: middlewares - singular: middleware - scope: Namespaced diff --git a/stable/traefik/6.13.19/crds/serverstransports.yaml b/stable/traefik/6.13.19/crds/serverstransports.yaml deleted file mode 100644 index 689a57f71bd..00000000000 --- a/stable/traefik/6.13.19/crds/serverstransports.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: serverstransports.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: ServersTransport - plural: serverstransports - singular: serverstransport - scope: Namespaced diff --git a/stable/traefik/6.13.19/crds/tlsoptions.yaml b/stable/traefik/6.13.19/crds/tlsoptions.yaml deleted file mode 100644 index a0c2573fb93..00000000000 --- a/stable/traefik/6.13.19/crds/tlsoptions.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tlsoptions.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TLSOption - plural: tlsoptions - singular: tlsoption - scope: Namespaced diff --git a/stable/traefik/6.13.19/crds/tlsstores.yaml b/stable/traefik/6.13.19/crds/tlsstores.yaml deleted file mode 100644 index f9a40052ba6..00000000000 --- a/stable/traefik/6.13.19/crds/tlsstores.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: tlsstores.traefik.containo.us - -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TLSStore - plural: tlsstores - singular: tlsstore - scope: Namespaced diff --git a/stable/traefik/6.13.19/crds/traefikservices.yaml b/stable/traefik/6.13.19/crds/traefikservices.yaml deleted file mode 100644 index 59fa4839477..00000000000 --- a/stable/traefik/6.13.19/crds/traefikservices.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: traefikservices.traefik.containo.us -spec: - group: traefik.containo.us - version: v1alpha1 - names: - kind: TraefikService - plural: traefikservices - singular: traefikservice - scope: Namespaced diff --git a/stable/traefik/6.13.19/helm-values.md b/stable/traefik/6.13.19/helm-values.md deleted file mode 100644 index b6e2549b04b..00000000000 --- a/stable/traefik/6.13.19/helm-values.md +++ /dev/null @@ -1,124 +0,0 @@ -# Default Helm-Values - -TrueCharts is primarily build to supply TrueNAS SCALE Apps. -However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. - -Most of our Apps also consume our "common" Helm Chart. -If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. -You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| additionalArguments[0] | string | `"--metrics.prometheus"` | | -| additionalArguments[1] | string | `"--ping"` | | -| additionalArguments[2] | string | `"--serverstransport.insecureskipverify=true"` | | -| additionalVolumeMounts | list | `[]` | | -| affinity | object | `{}` | | -| autoscaling.enabled | bool | `false` | | -| deployment.additionalContainers | list | `[]` | | -| deployment.additionalVolumes | list | `[]` | | -| deployment.annotations | object | `{}` | | -| deployment.enabled | bool | `true` | | -| deployment.imagePullSecrets | list | `[]` | | -| deployment.initContainers | list | `[]` | | -| deployment.kind | string | `"Deployment"` | | -| deployment.labels | object | `{}` | | -| deployment.podAnnotations | object | `{}` | | -| deployment.podLabels | object | `{}` | | -| deployment.replicas | int | `1` | | -| env | list | `[]` | | -| envFrom | list | `[]` | | -| experimental.kubernetesGateway.appLabelSelector | string | `"traefik"` | | -| experimental.kubernetesGateway.certificates | list | `[]` | | -| experimental.kubernetesGateway.enabled | bool | `false` | | -| experimental.plugins.enabled | bool | `false` | | -| globalArguments[0] | string | `"--global.checknewversion"` | | -| hostNetwork | bool | `false` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"traefik"` | | -| image.tag | string | `"v2.4"` | | -| ingressClass.enabled | bool | `false` | | -| ingressClass.fallbackApiVersion | string | `nil` | | -| ingressClass.isDefaultClass | bool | `false` | | -| ingressRoute.dashboard.annotations | object | `{}` | | -| ingressRoute.dashboard.enabled | bool | `true` | | -| ingressRoute.dashboard.labels | object | `{}` | | -| logs.access.enabled | bool | `false` | | -| logs.access.fields.general.defaultmode | string | `"keep"` | | -| logs.access.fields.general.names | object | `{}` | | -| logs.access.fields.headers.defaultmode | string | `"drop"` | | -| logs.access.fields.headers.names | object | `{}` | | -| logs.access.filters | object | `{}` | | -| logs.general.level | string | `"INFO"` | | -| middlewares.basicAuth | list | `[]` | | -| middlewares.chain | list | `[]` | | -| middlewares.forwardAuth | list | `[]` | | -| middlewares.rateLimit | list | `[]` | | -| middlewares.redirectScheme | list | `[]` | | -| nodeSelector | object | `{}` | | -| persistence.accessMode | string | `"ReadWriteOnce"` | | -| persistence.enabled | bool | `false` | | -| persistence.name | string | `"data"` | | -| persistence.path | string | `"/data"` | | -| persistence.size | string | `"128Mi"` | | -| pilot.enabled | bool | `false` | | -| pilot.token | string | `""` | | -| podDisruptionBudget.enabled | bool | `false` | | -| podSecurityContext.fsGroup | int | `65532` | | -| podSecurityPolicy.enabled | bool | `false` | | -| portalhook.enabled | bool | `true` | | -| ports.traefik.expose | bool | `false` | | -| ports.traefik.exposedPort | int | `9000` | | -| ports.traefik.port | int | `9000` | | -| ports.traefik.protocol | string | `"TCP"` | | -| ports.web.expose | bool | `true` | | -| ports.web.exposedPort | int | `80` | | -| ports.web.port | int | `9080` | | -| ports.web.protocol | string | `"TCP"` | | -| ports.web.redirectTo | string | `"websecure"` | | -| ports.websecure.expose | bool | `true` | | -| ports.websecure.exposedPort | int | `443` | | -| ports.websecure.port | int | `9443` | | -| ports.websecure.protocol | string | `"TCP"` | | -| ports.websecure.tls.enabled | bool | `true` | | -| priorityClassName | string | `""` | | -| providers.kubernetesCRD.enabled | bool | `true` | | -| providers.kubernetesCRD.namespaces | list | `[]` | | -| providers.kubernetesIngress.enabled | bool | `true` | | -| providers.kubernetesIngress.namespaces | list | `[]` | | -| providers.kubernetesIngress.publishedService.enabled | bool | `true` | | -| rbac.enabled | bool | `true` | | -| rbac.namespaced | bool | `false` | | -| resources | object | `{}` | | -| rollingUpdate.maxSurge | int | `1` | | -| rollingUpdate.maxUnavailable | int | `1` | | -| securityContext.capabilities.drop[0] | string | `"ALL"` | | -| securityContext.readOnlyRootFilesystem | bool | `true` | | -| securityContext.runAsGroup | int | `65532` | | -| securityContext.runAsNonRoot | bool | `true` | | -| securityContext.runAsUser | int | `65532` | | -| service.annotations | object | `{}` | | -| service.enabled | bool | `true` | | -| service.externalIPs | list | `[]` | | -| service.labels | object | `{}` | | -| service.loadBalancerSourceRanges | list | `[]` | | -| service.spec | object | `{}` | | -| service.type | string | `"LoadBalancer"` | | -| serviceAccount.name | string | `""` | | -| serviceAccountAnnotations | object | `{}` | | -| tlsOptions.default.cipherSuites[0] | string | `"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"` | | -| tlsOptions.default.cipherSuites[1] | string | `"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"` | | -| tlsOptions.default.cipherSuites[2] | string | `"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305"` | | -| tlsOptions.default.cipherSuites[3] | string | `"TLS_AES_128_GCM_SHA256"` | | -| tlsOptions.default.cipherSuites[4] | string | `"TLS_AES_256_GCM_SHA384"` | | -| tlsOptions.default.cipherSuites[5] | string | `"TLS_CHACHA20_POLY1305_SHA256"` | | -| tlsOptions.default.curvePreferences[0] | string | `"CurveP521"` | | -| tlsOptions.default.curvePreferences[1] | string | `"CurveP384"` | | -| tlsOptions.default.minVersion | string | `"VersionTLS12"` | | -| tlsOptions.default.sniStrict | bool | `false` | | -| tolerations | list | `[]` | | -| volumes | list | `[]` | | - -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/6.13.19/ix_values.yaml b/stable/traefik/6.13.19/ix_values.yaml deleted file mode 100644 index a3464fa2a05..00000000000 --- a/stable/traefik/6.13.19/ix_values.yaml +++ /dev/null @@ -1,332 +0,0 @@ -# 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: true - # 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: [] - -# 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 - -# 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: {} - -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] - -portalhook: - enabled: true diff --git a/stable/traefik/6.13.19/questions.yaml b/stable/traefik/6.13.19/questions.yaml deleted file mode 100644 index 6031935fd58..00000000000 --- a/stable/traefik/6.13.19/questions.yaml +++ /dev/null @@ -1,508 +0,0 @@ -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: "Middlewares" - description: "Traefik Middlewares" - - 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" - path: "/dashboard/" -questions: - - variable: portal - group: "Container Image" - label: "Configure Portal Button" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "Enable" - description: "enable the portal button" - schema: - hidden: true - editable: false - type: boolean - default: true - - - variable: pilot - label: "Traefik Pilot" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "enabled" - schema: - type: boolean - default: false - - variable: token - label: "token" - schema: - type: string - default: "" - - variable: dashboard - label: "Pilot Dashboard" - schema: - type: boolean - default: false - - - variable: middlewares - label: "" - group: "Middlewares" - schema: - type: dict - attrs: - - variable: basicAuth - label: "basicAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: users - label: "Users" - schema: - type: list - default: [] - items: - - variable: usersEntry - label: "" - schema: - type: dict - attrs: - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - default: "" - - - - variable: forwardAuth - label: "forwardAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: address - label: "Address" - schema: - type: string - required: true - default: "" - - variable: trustForwardHeader - label: "trustForwardHeader" - schema: - type: boolean - default: false - - variable: authResponseHeadersRegex - label: "authResponseHeadersRegex" - schema: - type: string - default: "" - - variable: authResponseHeaders - label: "authResponseHeaders" - schema: - type: list - default: [] - items: - - variable: authResponseHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: authRequestHeaders - label: "authRequestHeaders" - schema: - type: list - default: [] - items: - - variable: authRequestHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: chain - label: "chain" - schema: - type: list - default: [] - items: - - variable: chainEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: middlewares - label: "Middlewares to Chain" - schema: - type: list - default: [] - items: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - - variable: redirectScheme - label: "redirectScheme" - schema: - type: list - default: [] - items: - - variable: redirectSchemeEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: scheme - label: "Scheme" - schema: - type: string - required: true - default: "https" - enum: - - value: "https" - description: "https" - - value: "http" - description: "http" - - variable: permanent - label: "Permanent" - schema: - type: boolean - required: true - default: false - - - variable: rateLimit - label: "rateLimit" - schema: - type: list - default: [] - items: - - variable: rateLimitEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: average - label: "Average" - schema: - type: int - required: true - default: 300 - - variable: burst - label: "Burst" - schema: - type: int - required: true - default: 200 - - - variable: hostNetwork - group: "Networking and Services" - label: "Enable Host Networking" - schema: - type: boolean - default: false - - - variable: ports - label: "(Advanced) Traefik Entrypoints" - group: "Networking and Services" - schema: - type: dict - attrs: - - variable: traefik - label: "traefik internal" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9000 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port on the outside" - schema: - type: int - show_if: [["expose", "=", true]] - default: 9000 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - default: "TCP" - - variable: web - label: "web" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9080 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port to the outside of all(!) nodes" - schema: - type: int - show_if: [["expose", "=", true]] - required: true - default: 9080 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - required: true - default: "TCP" - hidden: true - - variable: redirectEnable - label: "Enable Redirect" - schema: - type: boolean - default: true - show_subquestions_if: true - subquestions: - - variable: redirectTo - label: "Target Entrypoint" - description: "Select the Target Entrypoint to redirect to" - schema: - type: string - required: true - default: "websecure" - - variable: websecure - label: "websecure" - schema: - type: dict - attrs: - - variable: port - label: "Internal Port" - description: "(advanced) Port inside the container network" - schema: - type: int - required: true - hidden: true - default: 9443 - - variable: expose - label: "Expose to Outside" - description: "Port to the outside of all(!) nodes" - schema: - type: boolean - default: true - - variable: exposedPort - label: "Outside Port" - description: "Port to the outside of all(!) nodes" - schema: - type: int - show_if: [["expose", "=", true]] - required: true - default: 9443 - - variable: protocol - label: "Protocol" - description: "TCP or UDP reverse proxying?" - schema: - type: string - required: true - default: "TCP" - hidden: true - - variable: tls - label: "tls" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "enabled" - schema: - type: boolean - default: true - hidden: true - - - variable: securityContext - group: "Security and Permissions" - label: "Security Context" - schema: - type: dict - attrs: - - variable: privileged - label: "Enable privileged mode for Common-Chart based charts" - schema: - type: boolean - default: false - - 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: 65532 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 65532 - - - - - variable: podSecurityContext - group: "Security and Permissions" - label: "Pod Security Context" - schema: - type: dict - attrs: - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 65532 - - 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" diff --git a/stable/traefik/6.13.19/templates/_helpers.tpl b/stable/traefik/6.13.19/templates/_helpers.tpl deleted file mode 100644 index f7b055fa82e..00000000000 --- a/stable/traefik/6.13.19/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "traefik.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "traefik.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "traefik.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -The name of the service account to use -*/}} -{{- define "traefik.serviceAccountName" -}} -{{- default (include "traefik.fullname" .) .Values.serviceAccount.name -}} -{{- end -}} - -{{/* -Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. -By convention this will simply use the / to match the name of the -service generated. -Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` -*/}} -{{- define "providers.kubernetesIngress.publishedServicePath" -}} -{{- $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.19/templates/_podtemplate.tpl b/stable/traefik/6.13.19/templates/_podtemplate.tpl deleted file mode 100644 index 21e60ceba92..00000000000 --- a/stable/traefik/6.13.19/templates/_podtemplate.tpl +++ /dev/null @@ -1,265 +0,0 @@ -{{- 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.19/templates/custom/common.yaml b/stable/traefik/6.13.19/templates/custom/common.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/traefik/6.13.19/templates/custom/middleware-namespace.yaml b/stable/traefik/6.13.19/templates/custom/middleware-namespace.yaml deleted file mode 100644 index 16156ee5e12..00000000000 --- a/stable/traefik/6.13.19/templates/custom/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares - annotations: - "helm.sh/hook": pre-install diff --git a/stable/traefik/6.13.19/templates/custom/middlewares/basic-middleware.yaml b/stable/traefik/6.13.19/templates/custom/middlewares/basic-middleware.yaml deleted file mode 100644 index 98f7d1c170c..00000000000 --- a/stable/traefik/6.13.19/templates/custom/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -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.19/templates/custom/middlewares/basicauth.yaml b/stable/traefik/6.13.19/templates/custom/middlewares/basicauth.yaml deleted file mode 100644 index 4e0f326a2f4..00000000000 --- a/stable/traefik/6.13.19/templates/custom/middlewares/basicauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{ 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.19/templates/custom/middlewares/chain.yaml b/stable/traefik/6.13.19/templates/custom/middlewares/chain.yaml deleted file mode 100644 index ef592c255ba..00000000000 --- a/stable/traefik/6.13.19/templates/custom/middlewares/chain.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{ 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.19/templates/custom/middlewares/forwardauth.yaml b/stable/traefik/6.13.19/templates/custom/middlewares/forwardauth.yaml deleted file mode 100644 index bb90d33775e..00000000000 --- a/stable/traefik/6.13.19/templates/custom/middlewares/forwardauth.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{ 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.19/templates/custom/middlewares/ratelimit.yaml b/stable/traefik/6.13.19/templates/custom/middlewares/ratelimit.yaml deleted file mode 100644 index b4bfa938e6e..00000000000 --- a/stable/traefik/6.13.19/templates/custom/middlewares/ratelimit.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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.19/templates/custom/middlewares/redirectScheme.yaml b/stable/traefik/6.13.19/templates/custom/middlewares/redirectScheme.yaml deleted file mode 100644 index 070c8fc4a90..00000000000 --- a/stable/traefik/6.13.19/templates/custom/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{ 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.19/templates/custom/portal.yaml b/stable/traefik/6.13.19/templates/custom/portal.yaml deleted file mode 100644 index 92e80f287a2..00000000000 --- a/stable/traefik/6.13.19/templates/custom/portal.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- 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.19/templates/custom/portalhook.yaml b/stable/traefik/6.13.19/templates/custom/portalhook.yaml deleted file mode 100644 index 5a9fee80da4..00000000000 --- a/stable/traefik/6.13.19/templates/custom/portalhook.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- 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.19/templates/daemonset.yaml b/stable/traefik/6.13.19/templates/daemonset.yaml deleted file mode 100644 index 469e105c358..00000000000 --- a/stable/traefik/6.13.19/templates/daemonset.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- 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.19/templates/dashboard-hook-ingressroute.yaml b/stable/traefik/6.13.19/templates/dashboard-hook-ingressroute.yaml deleted file mode 100644 index ec278c26910..00000000000 --- a/stable/traefik/6.13.19/templates/dashboard-hook-ingressroute.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- 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.19/templates/deployment.yaml b/stable/traefik/6.13.19/templates/deployment.yaml deleted file mode 100644 index 494087cfd0a..00000000000 --- a/stable/traefik/6.13.19/templates/deployment.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- 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.19/templates/gateway.yaml b/stable/traefik/6.13.19/templates/gateway.yaml deleted file mode 100644 index 85194211fe5..00000000000 --- a/stable/traefik/6.13.19/templates/gateway.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- 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.19/templates/gatewayclass.yaml b/stable/traefik/6.13.19/templates/gatewayclass.yaml deleted file mode 100644 index 61bf007db1e..00000000000 --- a/stable/traefik/6.13.19/templates/gatewayclass.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- 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.19/templates/hpa.yaml b/stable/traefik/6.13.19/templates/hpa.yaml deleted file mode 100644 index bf37117de6a..00000000000 --- a/stable/traefik/6.13.19/templates/hpa.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- 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.19/templates/ingressclass.yaml b/stable/traefik/6.13.19/templates/ingressclass.yaml deleted file mode 100644 index 7c62458c82e..00000000000 --- a/stable/traefik/6.13.19/templates/ingressclass.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- 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.19/templates/poddisruptionbudget.yaml b/stable/traefik/6.13.19/templates/poddisruptionbudget.yaml deleted file mode 100644 index 9893e521759..00000000000 --- a/stable/traefik/6.13.19/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- 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.19/templates/rbac/clusterrole.yaml b/stable/traefik/6.13.19/templates/rbac/clusterrole.yaml deleted file mode 100644 index 2c63e006414..00000000000 --- a/stable/traefik/6.13.19/templates/rbac/clusterrole.yaml +++ /dev/null @@ -1,112 +0,0 @@ -{{- 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.19/templates/rbac/clusterrolebinding.yaml b/stable/traefik/6.13.19/templates/rbac/clusterrolebinding.yaml deleted file mode 100644 index 509e92ff2b7..00000000000 --- a/stable/traefik/6.13.19/templates/rbac/clusterrolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- 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.19/templates/rbac/podsecuritypolicy.yaml b/stable/traefik/6.13.19/templates/rbac/podsecuritypolicy.yaml deleted file mode 100644 index 66bc1458d55..00000000000 --- a/stable/traefik/6.13.19/templates/rbac/podsecuritypolicy.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- 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.19/templates/rbac/role.yaml b/stable/traefik/6.13.19/templates/rbac/role.yaml deleted file mode 100644 index 2499d2dc60b..00000000000 --- a/stable/traefik/6.13.19/templates/rbac/role.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- 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 - - networking.k8s.io - resources: - - ingresses - 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: - - extensions - resourceNames: - - {{ template "traefik.fullname" . }} - resources: - - podsecuritypolicies - verbs: - - use -{{- end -}} -{{- end -}} diff --git a/stable/traefik/6.13.19/templates/rbac/rolebinding.yaml b/stable/traefik/6.13.19/templates/rbac/rolebinding.yaml deleted file mode 100644 index 10416401867..00000000000 --- a/stable/traefik/6.13.19/templates/rbac/rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- 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.19/templates/rbac/serviceaccount.yaml b/stable/traefik/6.13.19/templates/rbac/serviceaccount.yaml deleted file mode 100644 index bcc941eec95..00000000000 --- a/stable/traefik/6.13.19/templates/rbac/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- 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.19/templates/service.yaml b/stable/traefik/6.13.19/templates/service.yaml deleted file mode 100644 index 745bb9102d7..00000000000 --- a/stable/traefik/6.13.19/templates/service.yaml +++ /dev/null @@ -1,114 +0,0 @@ -{{- 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.19/templates/tlsoption.yaml b/stable/traefik/6.13.19/templates/tlsoption.yaml deleted file mode 100644 index ec46e8bbc94..00000000000 --- a/stable/traefik/6.13.19/templates/tlsoption.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- 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.19/test_values.yaml b/stable/traefik/6.13.19/test_values.yaml deleted file mode 100644 index 004b1ef68f9..00000000000 --- a/stable/traefik/6.13.19/test_values.yaml +++ /dev/null @@ -1,438 +0,0 @@ -# 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: true - # 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.19/values.yaml b/stable/traefik/6.13.19/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/traefik/7.0.0/CONFIG.md b/stable/traefik/7.0.0/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/stable/traefik/7.0.0/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/7.0.0/Chart.lock b/stable/traefik/7.0.0/Chart.lock deleted file mode 100644 index fdc23e99278..00000000000 --- a/stable/traefik/7.0.0/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.6 -digest: sha256:ba7278fafb744eaa1096176962336c2a1c7b08f49ffd2649e233d3613c1b0795 -generated: "2021-09-03T23:06:31.437264935Z" diff --git a/stable/traefik/7.0.0/Chart.yaml b/stable/traefik/7.0.0/Chart.yaml deleted file mode 100644 index 000ee8e9724..00000000000 --- a/stable/traefik/7.0.0/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.6 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 7.0.0 diff --git a/stable/traefik/7.0.0/README.md b/stable/traefik/7.0.0/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/stable/traefik/7.0.0/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/7.0.0/app-readme.md b/stable/traefik/7.0.0/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/stable/traefik/7.0.0/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/stable/traefik/7.0.0/charts/common-6.13.6.tgz b/stable/traefik/7.0.0/charts/common-6.13.6.tgz deleted file mode 100644 index 8a7eef0e76556b5b42da2fb283e0ccc613319140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29078 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 ZpZ@8e{^=j`{4W3i|Nl=#8cP7=0s!8DXFdP` diff --git a/stable/traefik/7.0.0/crds/ingressroute.yaml b/stable/traefik/7.0.0/crds/ingressroute.yaml deleted file mode 100644 index 3391ba532a4..00000000000 --- a/stable/traefik/7.0.0/crds/ingressroute.yaml +++ /dev/null @@ -1,198 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: ingressroutes.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: IngressRoute - listKind: IngressRouteList - plural: ingressroutes - singular: ingressroute - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRoute is an Ingress CRD specification. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: IngressRouteSpec is a specification for a IngressRouteSpec - resource. - properties: - entryPoints: - items: - type: string - type: array - routes: - items: - description: Route contains the set of routes. - properties: - kind: - enum: - - Rule - type: string - match: - type: string - middlewares: - items: - description: MiddlewareRef is a ref to the Middleware resources. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: array - priority: - type: integer - services: - items: - description: Service defines an upstream to proxy traffic. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service - object (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The - differentiation between the two is specified in the - Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for - the forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration - based on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name - references a TraefikService object (and to be precise, - one that embeds a Weighted Round Robin). - type: integer - required: - - name - type: object - type: array - required: - - kind - - match - type: object - type: array - tls: - description: "TLS contains the TLS certificates configuration of the - routes. To enable Let's Encrypt, use an empty TLS struct, e.g. in - YAML: \n \t tls: {} # inline format \n \t tls: \t secretName: - # block format" - properties: - certResolver: - type: string - domains: - items: - description: Domain holds a domain name with SANs. - properties: - main: - type: string - sans: - items: - type: string - type: array - type: object - type: array - options: - description: Options is a reference to a TLSOption, that specifies - the parameters of the TLS connection. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - store: - description: Store is a reference to a TLSStore, that specifies - the parameters of the TLS store. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: object - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/ingressroutetcp.yaml b/stable/traefik/7.0.0/crds/ingressroutetcp.yaml deleted file mode 100644 index 67e099b47da..00000000000 --- a/stable/traefik/7.0.0/crds/ingressroutetcp.yaml +++ /dev/null @@ -1,160 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: ingressroutetcps.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: IngressRouteTCP - listKind: IngressRouteTCPList - plural: ingressroutetcps - singular: ingressroutetcp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRouteTCP is an Ingress CRD specification. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: IngressRouteTCPSpec is a specification for a IngressRouteTCPSpec - resource. - properties: - entryPoints: - items: - type: string - type: array - routes: - items: - description: RouteTCP contains the set of routes. - properties: - match: - type: string - middlewares: - description: Middlewares contains references to MiddlewareTCP - resources. - items: - description: ObjectReference is a generic reference to a Traefik - resource. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: array - services: - items: - description: ServiceTCP defines an upstream to proxy traffic. - properties: - name: - type: string - namespace: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - proxyProtocol: - description: ProxyProtocol holds the ProxyProtocol configuration. - properties: - version: - type: integer - type: object - terminationDelay: - type: integer - weight: - type: integer - required: - - name - - port - type: object - type: array - required: - - match - type: object - type: array - tls: - description: "TLSTCP contains the TLS certificates configuration of - the routes. To enable Let's Encrypt, use an empty TLS struct, e.g. - in YAML: \n \t tls: {} # inline format \n \t tls: \t secretName: - # block format" - properties: - certResolver: - type: string - domains: - items: - description: Domain holds a domain name with SANs. - properties: - main: - type: string - sans: - items: - type: string - type: array - type: object - type: array - options: - description: Options is a reference to a TLSOption, that specifies - the parameters of the TLS connection. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - passthrough: - type: boolean - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - store: - description: Store is a reference to a TLSStore, that specifies - the parameters of the TLS store. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: object - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/ingressrouteudp.yaml b/stable/traefik/7.0.0/crds/ingressrouteudp.yaml deleted file mode 100644 index 910acd6c270..00000000000 --- a/stable/traefik/7.0.0/crds/ingressrouteudp.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: ingressrouteudps.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: IngressRouteUDP - listKind: IngressRouteUDPList - plural: ingressrouteudps - singular: ingressrouteudp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRouteUDP is an Ingress CRD specification. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: IngressRouteUDPSpec is a specification for a IngressRouteUDPSpec - resource. - properties: - entryPoints: - items: - type: string - type: array - routes: - items: - description: RouteUDP contains the set of routes. - properties: - services: - items: - description: ServiceUDP defines an upstream to proxy traffic. - properties: - name: - type: string - namespace: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - weight: - type: integer - required: - - name - - port - type: object - type: array - type: object - type: array - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/middlewares.yaml b/stable/traefik/7.0.0/crds/middlewares.yaml deleted file mode 100644 index 1770587a327..00000000000 --- a/stable/traefik/7.0.0/crds/middlewares.yaml +++ /dev/null @@ -1,563 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: middlewares.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: Middleware - listKind: MiddlewareList - plural: middlewares - singular: middleware - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: Middleware is a specification for a Middleware resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: MiddlewareSpec holds the Middleware configuration. - properties: - addPrefix: - description: AddPrefix holds the AddPrefix configuration. - properties: - prefix: - type: string - type: object - basicAuth: - description: BasicAuth holds the HTTP basic authentication configuration. - properties: - headerField: - type: string - realm: - type: string - removeHeader: - type: boolean - secret: - type: string - type: object - buffering: - description: Buffering holds the request/response buffering configuration. - properties: - maxRequestBodyBytes: - format: int64 - type: integer - maxResponseBodyBytes: - format: int64 - type: integer - memRequestBodyBytes: - format: int64 - type: integer - memResponseBodyBytes: - format: int64 - type: integer - retryExpression: - type: string - type: object - chain: - description: Chain holds a chain of middlewares. - properties: - middlewares: - items: - description: MiddlewareRef is a ref to the Middleware resources. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: array - type: object - circuitBreaker: - description: CircuitBreaker holds the circuit breaker configuration. - properties: - expression: - type: string - type: object - compress: - description: Compress holds the compress configuration. - properties: - excludedContentTypes: - items: - type: string - type: array - type: object - contentType: - description: ContentType middleware - or rather its unique `autoDetect` - option - specifies whether to let the `Content-Type` header, if - it has not been set by the backend, be automatically set to a value - derived from the contents of the response. As a proxy, the default - behavior should be to leave the header alone, regardless of what - the backend did with it. However, the historic default was to always - auto-detect and set the header if it was nil, and it is going to - be kept that way in order to support users currently relying on - it. This middleware exists to enable the correct behavior until - at least the default one can be changed in a future version. - properties: - autoDetect: - type: boolean - type: object - digestAuth: - description: DigestAuth holds the Digest HTTP authentication configuration. - properties: - headerField: - type: string - realm: - type: string - removeHeader: - type: boolean - secret: - type: string - type: object - errors: - description: ErrorPage holds the custom error page configuration. - properties: - query: - type: string - service: - description: Service defines an upstream to proxy traffic. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service object - (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for the - forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based - on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - status: - items: - type: string - type: array - type: object - forwardAuth: - description: ForwardAuth holds the http forward authentication configuration. - properties: - address: - type: string - authRequestHeaders: - items: - type: string - type: array - authResponseHeaders: - items: - type: string - type: array - authResponseHeadersRegex: - type: string - tls: - description: ClientTLS holds TLS specific configurations as client. - properties: - caOptional: - type: boolean - caSecret: - type: string - certSecret: - type: string - insecureSkipVerify: - type: boolean - type: object - trustForwardHeader: - type: boolean - type: object - headers: - description: Headers holds the custom header configuration. - properties: - accessControlAllowCredentials: - description: AccessControlAllowCredentials is only valid if true. - false is ignored. - type: boolean - accessControlAllowHeaders: - description: AccessControlAllowHeaders must be used in response - to a preflight request with Access-Control-Request-Headers set. - items: - type: string - type: array - accessControlAllowMethods: - description: AccessControlAllowMethods must be used in response - to a preflight request with Access-Control-Request-Method set. - items: - type: string - type: array - accessControlAllowOriginList: - description: AccessControlAllowOriginList is a list of allowable - origins. Can also be a wildcard origin "*". - items: - type: string - type: array - accessControlAllowOriginListRegex: - description: AccessControlAllowOriginListRegex is a list of allowable - origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). - items: - type: string - type: array - accessControlExposeHeaders: - description: AccessControlExposeHeaders sets valid headers for - the response. - items: - type: string - type: array - accessControlMaxAge: - description: AccessControlMaxAge sets the time that a preflight - request may be cached. - format: int64 - type: integer - addVaryHeader: - description: AddVaryHeader controls if the Vary header is automatically - added/updated when the AccessControlAllowOriginList is set. - type: boolean - allowedHosts: - items: - type: string - type: array - browserXssFilter: - type: boolean - contentSecurityPolicy: - type: string - contentTypeNosniff: - type: boolean - customBrowserXSSValue: - type: string - customFrameOptionsValue: - type: string - customRequestHeaders: - additionalProperties: - type: string - type: object - customResponseHeaders: - additionalProperties: - type: string - type: object - featurePolicy: - type: string - forceSTSHeader: - type: boolean - frameDeny: - type: boolean - hostsProxyHeaders: - items: - type: string - type: array - isDevelopment: - type: boolean - publicKey: - type: string - referrerPolicy: - type: string - sslForceHost: - description: 'Deprecated: use RedirectRegex instead.' - type: boolean - sslHost: - description: 'Deprecated: use RedirectRegex instead.' - type: string - sslProxyHeaders: - additionalProperties: - type: string - type: object - sslRedirect: - description: 'Deprecated: use EntryPoint redirection or RedirectScheme - instead.' - type: boolean - sslTemporaryRedirect: - description: 'Deprecated: use EntryPoint redirection or RedirectScheme - instead.' - type: boolean - stsIncludeSubdomains: - type: boolean - stsPreload: - type: boolean - stsSeconds: - format: int64 - type: integer - type: object - inFlightReq: - description: InFlightReq limits the number of requests being processed - and served concurrently. - properties: - amount: - format: int64 - type: integer - sourceCriterion: - description: SourceCriterion defines what criterion is used to - group requests as originating from a common source. If none - are set, the default is to use the request's remote address - field. All fields are mutually exclusive. - properties: - ipStrategy: - description: IPStrategy holds the ip strategy configuration. - properties: - depth: - type: integer - excludedIPs: - items: - type: string - type: array - type: object - requestHeaderName: - type: string - requestHost: - type: boolean - type: object - type: object - ipWhiteList: - description: IPWhiteList holds the ip white list configuration. - properties: - ipStrategy: - description: IPStrategy holds the ip strategy configuration. - properties: - depth: - type: integer - excludedIPs: - items: - type: string - type: array - type: object - sourceRange: - items: - type: string - type: array - type: object - passTLSClientCert: - description: PassTLSClientCert holds the TLS client cert headers configuration. - properties: - info: - description: TLSClientCertificateInfo holds the client TLS certificate - info configuration. - properties: - issuer: - description: TLSCLientCertificateDNInfo holds the client TLS - certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739 - properties: - commonName: - type: boolean - country: - type: boolean - domainComponent: - type: boolean - locality: - type: boolean - organization: - type: boolean - province: - type: boolean - serialNumber: - type: boolean - type: object - notAfter: - type: boolean - notBefore: - type: boolean - sans: - type: boolean - serialNumber: - type: boolean - subject: - description: TLSCLientCertificateDNInfo holds the client TLS - certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739 - properties: - commonName: - type: boolean - country: - type: boolean - domainComponent: - type: boolean - locality: - type: boolean - organization: - type: boolean - province: - type: boolean - serialNumber: - type: boolean - type: object - type: object - pem: - type: boolean - type: object - plugin: - additionalProperties: - x-kubernetes-preserve-unknown-fields: true - type: object - rateLimit: - description: RateLimit holds the rate limiting configuration for a - given router. - properties: - average: - format: int64 - type: integer - burst: - format: int64 - type: integer - period: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - sourceCriterion: - description: SourceCriterion defines what criterion is used to - group requests as originating from a common source. If none - are set, the default is to use the request's remote address - field. All fields are mutually exclusive. - properties: - ipStrategy: - description: IPStrategy holds the ip strategy configuration. - properties: - depth: - type: integer - excludedIPs: - items: - type: string - type: array - type: object - requestHeaderName: - type: string - requestHost: - type: boolean - type: object - type: object - redirectRegex: - description: RedirectRegex holds the redirection configuration. - properties: - permanent: - type: boolean - regex: - type: string - replacement: - type: string - type: object - redirectScheme: - description: RedirectScheme holds the scheme redirection configuration. - properties: - permanent: - type: boolean - port: - type: string - scheme: - type: string - type: object - replacePath: - description: ReplacePath holds the ReplacePath configuration. - properties: - path: - type: string - type: object - replacePathRegex: - description: ReplacePathRegex holds the ReplacePathRegex configuration. - properties: - regex: - type: string - replacement: - type: string - type: object - retry: - description: Retry holds the retry configuration. - properties: - attempts: - type: integer - initialInterval: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - stripPrefix: - description: StripPrefix holds the StripPrefix configuration. - properties: - forceSlash: - type: boolean - prefixes: - items: - type: string - type: array - type: object - stripPrefixRegex: - description: StripPrefixRegex holds the StripPrefixRegex configuration. - properties: - regex: - items: - type: string - type: array - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/middlewarestcp.yaml b/stable/traefik/7.0.0/crds/middlewarestcp.yaml deleted file mode 100644 index f0d1d5640bd..00000000000 --- a/stable/traefik/7.0.0/crds/middlewarestcp.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: middlewaretcps.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: MiddlewareTCP - listKind: MiddlewareTCPList - plural: middlewaretcps - singular: middlewaretcp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: MiddlewareTCP is a specification for a MiddlewareTCP resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: MiddlewareTCPSpec holds the MiddlewareTCP configuration. - properties: - ipWhiteList: - description: TCPIPWhiteList holds the TCP ip white list configuration. - properties: - sourceRange: - items: - type: string - type: array - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/serverstransports.yaml b/stable/traefik/7.0.0/crds/serverstransports.yaml deleted file mode 100644 index 78241697d1a..00000000000 --- a/stable/traefik/7.0.0/crds/serverstransports.yaml +++ /dev/null @@ -1,101 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: serverstransports.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: ServersTransport - listKind: ServersTransportList - plural: serverstransports - singular: serverstransport - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: ServersTransport is a specification for a ServersTransport resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ServersTransportSpec options to configure communication between - Traefik and the servers. - properties: - certificatesSecrets: - description: Certificates for mTLS. - items: - type: string - type: array - disableHTTP2: - description: Disable HTTP/2 for connections with backend servers. - type: boolean - forwardingTimeouts: - description: Timeouts for requests forwarded to the backend servers. - properties: - dialTimeout: - anyOf: - - type: integer - - type: string - description: The amount of time to wait until a connection to - a backend server can be established. If zero, no timeout exists. - x-kubernetes-int-or-string: true - idleConnTimeout: - anyOf: - - type: integer - - type: string - description: The maximum period for which an idle HTTP keep-alive - connection will remain open before closing itself. - x-kubernetes-int-or-string: true - responseHeaderTimeout: - anyOf: - - type: integer - - type: string - description: The amount of time to wait for a server's response - headers after fully writing the request (including its body, - if any). If zero, no timeout exists. - x-kubernetes-int-or-string: true - type: object - insecureSkipVerify: - description: Disable SSL certificate verification. - type: boolean - maxIdleConnsPerHost: - description: If non-zero, controls the maximum idle (keep-alive) to - keep per-host. If zero, DefaultMaxIdleConnsPerHost is used. - type: integer - rootCAsSecrets: - description: Add cert file for self-signed certificate. - items: - type: string - type: array - serverName: - description: ServerName used to contact the server. - type: string - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/tlsoptions.yaml b/stable/traefik/7.0.0/crds/tlsoptions.yaml deleted file mode 100644 index c901ac2df5e..00000000000 --- a/stable/traefik/7.0.0/crds/tlsoptions.yaml +++ /dev/null @@ -1,87 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: tlsoptions.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: TLSOption - listKind: TLSOptionList - plural: tlsoptions - singular: tlsoption - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: TLSOption is a specification for a TLSOption resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: TLSOptionSpec configures TLS for an entry point. - properties: - cipherSuites: - items: - type: string - type: array - clientAuth: - description: ClientAuth defines the parameters of the client authentication - part of the TLS connection, if any. - properties: - clientAuthType: - description: ClientAuthType defines the client authentication - type to apply. - enum: - - NoClientCert - - RequestClientCert - - VerifyClientCertIfGiven - - RequireAndVerifyClientCert - type: string - secretNames: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - items: - type: string - type: array - type: object - curvePreferences: - items: - type: string - type: array - maxVersion: - type: string - minVersion: - type: string - preferServerCipherSuites: - type: boolean - sniStrict: - type: boolean - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/tlsstores.yaml b/stable/traefik/7.0.0/crds/tlsstores.yaml deleted file mode 100644 index 7bb6193b026..00000000000 --- a/stable/traefik/7.0.0/crds/tlsstores.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: tlsstores.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: TLSStore - listKind: TLSStoreList - plural: tlsstores - singular: tlsstore - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: TLSStore is a specification for a TLSStore resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: TLSStoreSpec configures a TLSStore resource. - properties: - defaultCertificate: - description: DefaultCertificate holds a secret name for the TLSOption - resource. - properties: - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - required: - - secretName - type: object - required: - - defaultCertificate - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/crds/traefikservices.yaml b/stable/traefik/7.0.0/crds/traefikservices.yaml deleted file mode 100644 index 1d98c25d68d..00000000000 --- a/stable/traefik/7.0.0/crds/traefikservices.yaml +++ /dev/null @@ -1,270 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: traefikservices.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: TraefikService - listKind: TraefikServiceList - plural: traefikservices - singular: traefikservice - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: TraefikService is the specification for a service (that an IngressRoute - refers to) that is usually not a terminal service (i.e. not a pod of servers), - as opposed to a Kubernetes Service. That is to say, it usually refers to - other (children) services, which themselves can be TraefikServices or Services. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ServiceSpec defines whether a TraefikService is a load-balancer - of services or a mirroring service. - properties: - mirroring: - description: Mirroring defines a mirroring service, which is composed - of a main load-balancer, and a list of mirrors. - properties: - kind: - enum: - - Service - - TraefikService - type: string - maxBodySize: - format: int64 - type: integer - mirrors: - items: - description: MirrorService defines one of the mirrors of a Mirroring - service. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service - object (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - percent: - type: integer - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for - the forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based - on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - type: array - name: - description: Name is a reference to a Kubernetes Service object - (for a load-balancer of servers), or to a TraefikService object - (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for the forward - of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based on - cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - weighted: - description: WeightedRoundRobin defines a load-balancer of services. - properties: - services: - items: - description: Service defines an upstream to proxy traffic. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service - object (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for - the forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based - on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - type: array - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based on - cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.0/helm-values.md b/stable/traefik/7.0.0/helm-values.md deleted file mode 100644 index 73da98010b5..00000000000 --- a/stable/traefik/7.0.0/helm-values.md +++ /dev/null @@ -1,50 +0,0 @@ -# Default Helm-Values - -TrueCharts is primarily build to supply TrueNAS SCALE Apps. -However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. - -Most of our Apps also consume our "common" Helm Chart. -If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. -You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| additionalArguments[0] | string | `"--metrics.prometheus"` | | -| additionalArguments[1] | string | `"--ping"` | | -| additionalArguments[2] | string | `"--serverstransport.insecureskipverify=true"` | | -| controller.strategy | string | `"RollingUpdate"` | | -| controller.type | string | `"daemonset"` | | -| globalArguments[0] | string | `"--global.checknewversion"` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"traefik"` | | -| image.tag | string | `"v2.5"` | | -| ingressClass | object | `{"enabled":false,"fallbackApiVersion":"","isDefaultClass":false}` | Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x | -| ingressRoute | object | `{"dashboard":{"annotations":{},"enabled":true,"labels":{}}}` | Create an IngressRoute for the dashboard | -| logs | object | `{"access":{"enabled":false,"fields":{"general":{"defaultmode":"keep","names":{}},"headers":{"defaultmode":"drop","names":{}}},"filters":{}},"general":{"level":"ERROR"}}` | Logs https://docs.traefik.io/observability/logs/ | -| metrics.prometheus.entryPoint | string | `"metrics"` | | -| middlewares | object | `{"basicAuth":[],"chain":[],"forwardAuth":[],"rateLimit":[],"redirectScheme":[]}` | SCALE Middleware Handlers | -| pilot | object | `{"enabled":false,"token":""}` | Activate Pilot integration | -| podSecurityContext.fsGroup | int | `568` | | -| probes.liveness | object | See below | Liveness probe configuration | -| probes.liveness.path | string | "/" | If a HTTP probe is used (default for HTTP/HTTPS services) this path is used | -| probes.liveness.type | string | "TCP" | sets the probe type when not using a custom probe | -| probes.readiness | object | See below | Redainess probe configuration | -| probes.readiness.path | string | "/" | If a HTTP probe is used (default for HTTP/HTTPS services) this path is used | -| probes.readiness.type | string | "TCP" | sets the probe type when not using a custom probe | -| probes.startup | object | See below | Startup probe configuration | -| probes.startup.path | string | "/" | If a HTTP probe is used (default for HTTP/HTTPS services) this path is used | -| probes.startup.type | string | "TCP" | sets the probe type when not using a custom probe | -| providers.kubernetesCRD.enabled | bool | `true` | | -| providers.kubernetesCRD.namespaces | list | `[]` | | -| providers.kubernetesIngress.enabled | bool | `true` | | -| providers.kubernetesIngress.namespaces | list | `[]` | | -| providers.kubernetesIngress.publishedService.enabled | bool | `true` | | -| rbac | object | `{"enabled":true,"rules":[{"apiGroups":[""],"resources":["services","endpoints","secrets"],"verbs":["get","list","watch"]},{"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses","ingressclasses"],"verbs":["get","list","watch"]},{"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses/status"],"verbs":["update"]},{"apiGroups":["traefik.containo.us"],"resources":["ingressroutes","ingressroutetcps","ingressrouteudps","middlewares","middlewaretcps","tlsoptions","tlsstores","traefikservices","serverstransports"],"verbs":["get","list","watch"]}]}` | Whether Role Based Access Control objects like roles and rolebindings should be created | -| securityContext | object | `{"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":568,"runAsNonRoot":true,"runAsUser":568}` | Set the container security context To run the container with ports below 1024 this will need to be adjust to run as root | -| service | object | `{"main":{"enabled":true,"ports":{"main":{"enabled":true,"port":9000,"protocol":"HTTP"}},"type":"LoadBalancer"},"metrics":{"enabled":true,"ports":{"metrics":{"enabled":true,"port":9100,"protocol":"HTTP"}},"type":"LoadBalancer"},"tcp":{"enabled":true,"ports":{"web":{"enabled":true,"port":9080,"protocol":"HTTP","redirectTo":"websecure"},"websecure":{"enabled":true,"port":9443,"protocol":"HTTPS"}},"type":"LoadBalancer"},"udp":{"enabled":false}}` | Options for the main traefik service, where the entrypoints traffic comes from from. | -| serviceAccount | object | `{"enabled":true,"name":""}` | The service account the pods will use to interact with the Kubernetes API | -| tlsOptions | object | `{"default":{"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"],"curvePreferences":["CurveP521","CurveP384"],"minVersion":"VersionTLS12","sniStrict":false}}` | TLS Options to be created as TLSOption CRDs https://doc.traefik.io/traefik/https/tls/#tls-options Example: | - -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/7.0.0/ix_values.yaml b/stable/traefik/7.0.0/ix_values.yaml deleted file mode 100644 index 11e67e6ee6f..00000000000 --- a/stable/traefik/7.0.0/ix_values.yaml +++ /dev/null @@ -1,181 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -# 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: {} - -# -# Configure providers -# -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -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" - - "--providers.kubernetesingress.allowexternalnameservices=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 - - - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# 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] - -portalhook: - enabled: true diff --git a/stable/traefik/7.0.0/questions.yaml b/stable/traefik/7.0.0/questions.yaml deleted file mode 100644 index 5aabe629378..00000000000 --- a/stable/traefik/7.0.0/questions.yaml +++ /dev/null @@ -1,1144 +0,0 @@ -groups: - - name: "Container Image" - description: "Image to be used for container" - - name: "Controller" - description: "Configure workload deployment" - - name: "Container Configuration" - description: "additional container configuration" - - name: "App Configuration" - description: "App specific config options" - - name: "Networking and Services" - description: "Configure Network and Services for container" - - name: "Storage and Persistence" - description: "Persist and share data that is separate from the container" - - name: "Ingress" - description: "Ingress Configuration" - - name: "Security and Permissions" - description: "Configure security context and permissions" - - name: "Resources and Devices" - description: "Specify resources/devices to be allocated to workload" - - name: "Middlewares" - description: "Traefik Middlewares" - - name: "Advanced" - description: "Advanced Configuration" -portals: - web_portal: - protocols: - - "http" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "/dashboard/" -questions: - - variable: portal - group: "Container Image" - label: "Configure Portal Button" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "Enable" - description: "enable the portal button" - schema: - hidden: true - editable: false - type: boolean - default: true - - variable: 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" - enum: - - value: "deployment" - description: "Deployment" - - value: "statefulset" - description: "Statefulset" - - value: "daemonset" - description: "Daemonset" - - variable: replicas - description: "Number of desired pod replicas" - label: "Desired Replicas" - schema: - type: int - default: 1 - required: true - - variable: strategy - description: "Please specify type of workload to deploy" - label: "(Advanced) Update Strategy" - schema: - type: string - default: "RollingUpdate" - required: true - enum: - - value: "Recreate" - description: "Recreate: Kill existing pods before creating new ones" - - value: "RollingUpdate" - description: "RollingUpdate: Create new pods and then kill old ones" - - value: "OnDelete" - description: "(Legacy) OnDelete: ignore .spec.template changes" - - variable: 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: 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: pilot - label: "Traefik Pilot" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: token - label: "token" - schema: - type: string - default: "" - - variable: dashboard - label: "Pilot Dashboard" - schema: - type: boolean - default: false - - - variable: ingressClass - label: "ingressClass" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: isDefaultClass - label: "isDefaultClass" - schema: - type: boolean - default: false - - - variable: logs - label: "Logs" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: general - label: "General Logs" - schema: - type: dict - attrs: - - variable: level - label: "Log Level" - schema: - type: string - default: "ERROR" - enum: - - value: "INFO" - description: "Info" - - value: "WARN" - description: "Warnings" - - value: "ERROR" - description: "Errors" - - value: "FATAL" - description: "Fatal Errors" - - value: "PANIC" - description: "Panics" - - value: "DEBUG" - description: "Debug" - - variable: access - label: "Access Logs" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabledFilters - label: "Enable Filters" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: filters - label: "Filters" - schema: - type: dict - attrs: - - variable: statuscodes - label: "Status codes" - schema: - type: string - default: "200,300-302" - - variable: retryattempts - label: "retryattempts" - schema: - type: boolean - default: true - - variable: minduration - label: "minduration" - schema: - type: string - default: "10ms" - - variable: fields - label: "Fields" - schema: - type: dict - attrs: - - variable: general - label: "General" - schema: - type: dict - attrs: - - variable: defaultmode - label: "Default Mode" - schema: - type: string - default: "keep" - enum: - - value: "keep" - description: "Keep" - - value: "drop" - description: "Drop" - - variable: headers - label: "Headers" - schema: - type: dict - attrs: - - variable: defaultmode - label: "Default Mode" - schema: - type: string - default: "drop" - enum: - - value: "keep" - description: "Keep" - - value: "drop" - description: "Drop" - - - variable: middlewares - label: "" - group: "Middlewares" - schema: - type: dict - attrs: - - variable: basicAuth - label: "basicAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: users - label: "Users" - schema: - type: list - default: [] - items: - - variable: usersEntry - label: "" - schema: - type: dict - attrs: - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - default: "" - - - - variable: forwardAuth - label: "forwardAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: address - label: "Address" - schema: - type: string - required: true - default: "" - - variable: trustForwardHeader - label: "trustForwardHeader" - schema: - type: boolean - default: false - - variable: authResponseHeadersRegex - label: "authResponseHeadersRegex" - schema: - type: string - default: "" - - variable: authResponseHeaders - label: "authResponseHeaders" - schema: - type: list - default: [] - items: - - variable: authResponseHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: authRequestHeaders - label: "authRequestHeaders" - schema: - type: list - default: [] - items: - - variable: authRequestHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: chain - label: "chain" - schema: - type: list - default: [] - items: - - variable: chainEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: middlewares - label: "Middlewares to Chain" - schema: - type: list - default: [] - items: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - - variable: redirectScheme - label: "redirectScheme" - schema: - type: list - default: [] - items: - - variable: redirectSchemeEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: scheme - label: "Scheme" - schema: - type: string - required: true - default: "https" - enum: - - value: "https" - description: "https" - - value: "http" - description: "http" - - variable: permanent - label: "Permanent" - schema: - type: boolean - required: true - default: false - - - variable: rateLimit - label: "rateLimit" - schema: - type: list - default: [] - items: - - variable: rateLimitEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: average - label: "Average" - schema: - type: int - required: true - default: 300 - - variable: burst - label: "Burst" - schema: - type: int - required: true - default: 200 - - - variable: hostNetwork - group: "Networking and Services" - label: "Enable Host Networking" - schema: - type: boolean - default: false - - - - variable: service - group: "Networking and Services" - label: "Configure Service Entrypoint" - 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 Entrypoints Configurations" - schema: - type: dict - attrs: - - variable: main - label: "Main Entrypoint 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" - - variable: targetPort - label: "Target Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9000 - editable: false - hidden: true - - variable: port - label: "Entrypoints Port" - schema: - type: int - default: 9000 - 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: 9000 - - variable: tcp - label: "Main Service" - description: "The tcp Entrypoint 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: "LoadBalancer" - enum: - - 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 Entrypoints Configurations" - schema: - type: dict - attrs: - - variable: web - label: "web Entrypoint 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" - - variable: port - label: "Entrypoints Port" - schema: - type: int - default: 9080 - editable: true - required: true - - variable: websecure - label: "websecure Entrypoints 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: "HTTPS" - enum: - - value: HTTP - description: "HTTP" - - value: "HTTPS" - description: "HTTPS" - - value: TCP - description: "TCP" - - variable: port - label: "Entrypoints Port" - schema: - type: int - default: 9443 - editable: true - required: true - - variable: portsList - label: "Additional TCP Entrypoints" - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: "Custom Entrypoints" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable the port" - schema: - type: boolean - default: true - hidden: true - - variable: name - label: "Entrypoints Name" - schema: - type: string - default: "" - - variable: protocol - label: "Entrypoints Type" - schema: - type: string - default: "TCP" - enum: - - value: HTTP - description: "HTTP" - - value: "HTTPS" - description: "HTTPS" - - value: TCP - description: "TCP" - - variable: port - label: "Container Port" - schema: - type: int - required: true - - variable: udp - label: "UDP Service" - description: "The UDP service for entrypoints" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable the service" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - 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: "LoadBalancer" - enum: - - 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 TCP Entrypoints" - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: "Custom Entrypoints" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable the port" - schema: - type: boolean - default: true - hidden: true - - variable: name - label: "Entrypoints Name" - schema: - type: string - default: "" - - variable: protocol - label: "Entrypoints Type" - schema: - type: string - default: "UDP" - enum: - - value: UDP - description: "UDP" - - variable: port - label: "Container Port" - schema: - type: int - required: true - - variable: metrics - label: "metrics Service" - description: "The metrics Entrypoint 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: "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 Entrypoints Configuration" - schema: - type: dict - attrs: - - variable: metrics - label: "metrics Entrypoints Configurations" - 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" - - variable: targetPort - label: "Target Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9100 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 9100 - 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: 9100 - - - 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: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - - 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/traefik/7.0.0/templates/_args.tpl b/stable/traefik/7.0.0/templates/_args.tpl deleted file mode 100644 index 2ecdb60a1e6..00000000000 --- a/stable/traefik/7.0.0/templates/_args.tpl +++ /dev/null @@ -1,141 +0,0 @@ -{{/* Define the args */}} -{{- define "traefik.args" -}} -args: - {{/* merge all ports */}} - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - {{/* start of actual arguments */}} - {{- with .Values.globalArguments }} - {{- range . }} - - {{ . | quote }} - {{- end }} - {{- end }} - {{- range $name, $config := $ports }} - {{- if $config }} - {{- if or ( eq $config.protocol "HTTP" ) ( eq $config.protocol "HTTPS" ) ( eq $config.protocol "TCP" ) }} - {{- $_ := set $config "protocol" "TCP" }} - {{- end }} - - "--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default "tcp" $config.protocol | lower }}" - {{- end }} - {{- end }} - - "--api.dashboard=true" - - "--ping=true" - {{- if .Values.metrics }} - {{- if .Values.metrics.datadog }} - - "--metrics.datadog=true" - - "--metrics.datadog.address={{ .Values.metrics.datadog.address }}" - {{- end }} - {{- if .Values.metrics.influxdb }} - - "--metrics.influxdb=true" - - "--metrics.influxdb.address={{ .Values.metrics.influxdb.address }}" - - "--metrics.influxdb.protocol={{ .Values.metrics.influxdb.protocol }}" - {{- end }} - {{- if .Values.metrics.prometheus }} - - "--metrics.prometheus=true" - - "--metrics.prometheus.entrypoint={{ .Values.metrics.prometheus.entryPoint }}" - {{- end }} - {{- if .Values.metrics.statsd }} - - "--metrics.statsd=true" - - "--metrics.statsd.address={{ .Values.metrics.statsd.address }}" - {{- end }} - {{- end }} - {{- if .Values.providers.kubernetesCRD.enabled }} - - "--providers.kubernetescrd" - {{- end }} - {{- if .Values.providers.kubernetesIngress.enabled }} - - "--providers.kubernetesingress" - {{- if 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 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 := $ports }} - {{- if $config.redirectTo }} - {{- $toPort := index $ports $config.redirectTo }} - - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.port }}" - - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" - {{- end }} - {{- if or ( $config.tls ) ( eq $config.protocol "HTTPS" ) }} - {{- if or ( $config.tls.enabled ) ( eq $config.protocol "HTTPS" ) }} - - "--entrypoints.{{ $entrypoint }}.http.tls=true" - {{- if $config.tls.options }} - - "--entrypoints.{{ $entrypoint }}.http.tls.options={{ $config.tls.options }}" - {{- end }} - {{- if $config.tls.certResolver }} - - "--entrypoints.{{ $entrypoint }}.http.tls.certResolver={{ $config.tls.certResolver }}" - {{- end }} - {{- if $config.tls.domains }} - {{- range $index, $domain := $config.tls.domains }} - {{- if $domain.main }} - - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].main={{ $domain.main }}" - {{- end }} - {{- if $domain.sans }} - - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].sans={{ join "," $domain.sans }}" - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- with .Values.logs }} - {{- 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 }} -{{- end -}} diff --git a/stable/traefik/7.0.0/templates/_helpers.tpl b/stable/traefik/7.0.0/templates/_helpers.tpl deleted file mode 100644 index 5abff4405b1..00000000000 --- a/stable/traefik/7.0.0/templates/_helpers.tpl +++ /dev/null @@ -1,21 +0,0 @@ -{{/* -Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. -By convention this will simply use the / to match the name of the -service generated. -Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` -*/}} -{{- define "providers.kubernetesIngress.publishedServicePath" -}} -{{- $defServiceName := printf "%s/%s-tcp" .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/7.0.0/templates/_ingressclass.tpl b/stable/traefik/7.0.0/templates/_ingressclass.tpl deleted file mode 100644 index 27f8467fc9e..00000000000 --- a/stable/traefik/7.0.0/templates/_ingressclass.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} -apiVersion: networking.k8s.io/v1 - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} -apiVersion: networking.k8s.io/v1beta1 - {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} -apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} - {{- else }} - {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/stable/traefik/7.0.0/templates/_ingressroute.tpl b/stable/traefik/7.0.0/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/stable/traefik/7.0.0/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/stable/traefik/7.0.0/templates/_portalhook.tpl b/stable/traefik/7.0.0/templates/_portalhook.tpl deleted file mode 100644 index 6d12bc39776..00000000000 --- a/stable/traefik/7.0.0/templates/_portalhook.tpl +++ /dev/null @@ -1,27 +0,0 @@ -{{/* Define the portalHook */}} -{{- define "traefik.portalhook" -}} -{{- if .Values.portalhook.enabled }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: portalhook - namespace: {{ $namespace }} -data: - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - websecureport: {{ $ports.websecure.exposedPort | quote }} - {{- range $name, $value := $ports }} - {{ $name }}: {{ $value.port | quote }} - {{- end }} -{{- end }} -{{- end -}} diff --git a/stable/traefik/7.0.0/templates/_tlsoptions.tpl b/stable/traefik/7.0.0/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/stable/traefik/7.0.0/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/stable/traefik/7.0.0/templates/common.yaml b/stable/traefik/7.0.0/templates/common.yaml deleted file mode 100644 index a3ba841bdd7..00000000000 --- a/stable/traefik/7.0.0/templates/common.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.portalhook" . }} -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/stable/traefik/7.0.0/templates/middleware-namespace.yaml b/stable/traefik/7.0.0/templates/middleware-namespace.yaml deleted file mode 100644 index 43d2728446f..00000000000 --- a/stable/traefik/7.0.0/templates/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares -{{- end }} diff --git a/stable/traefik/7.0.0/templates/middlewares/basic-middleware.yaml b/stable/traefik/7.0.0/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index e50f00c98d8..00000000000 --- a/stable/traefik/7.0.0/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/stable/traefik/7.0.0/templates/middlewares/basicauth.yaml b/stable/traefik/7.0.0/templates/middlewares/basicauth.yaml deleted file mode 100644 index 54dacb824ff..00000000000 --- a/stable/traefik/7.0.0/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/stable/traefik/7.0.0/templates/middlewares/chain.yaml b/stable/traefik/7.0.0/templates/middlewares/chain.yaml deleted file mode 100644 index 49dfd9610ef..00000000000 --- a/stable/traefik/7.0.0/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/stable/traefik/7.0.0/templates/middlewares/forwardauth.yaml b/stable/traefik/7.0.0/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 654eb8a6cb9..00000000000 --- a/stable/traefik/7.0.0/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/7.0.0/templates/middlewares/ratelimit.yaml b/stable/traefik/7.0.0/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 624e7ff0d34..00000000000 --- a/stable/traefik/7.0.0/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/stable/traefik/7.0.0/templates/middlewares/redirectScheme.yaml b/stable/traefik/7.0.0/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 9ff49d76186..00000000000 --- a/stable/traefik/7.0.0/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/stable/traefik/7.0.0/test_values.yaml b/stable/traefik/7.0.0/test_values.yaml deleted file mode 100644 index e349ea62298..00000000000 --- a/stable/traefik/7.0.0/test_values.yaml +++ /dev/null @@ -1,320 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -# -- Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x -ingressClass: - # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12 - enabled: false - isDefaultClass: false - # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. "v1beta1" - fallbackApiVersion: "" - -# -- Activate Pilot integration -pilot: - enabled: false - token: "" - # Toggle Pilot Dashboard - # dashboard: false - -# -- Create an IngressRoute for the dashboard -ingressRoute: - dashboard: - enabled: true - # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class) - annotations: {} - # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels) - labels: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 - -portalhook: - enabled: true diff --git a/stable/traefik/7.0.0/values.yaml b/stable/traefik/7.0.0/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/stable/traefik/7.0.1/CONFIG.md b/stable/traefik/7.0.1/CONFIG.md deleted file mode 100644 index fc9b2fa2d5f..00000000000 --- a/stable/traefik/7.0.1/CONFIG.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/7.0.1/Chart.lock b/stable/traefik/7.0.1/Chart.lock deleted file mode 100644 index 132828d2b4e..00000000000 --- a/stable/traefik/7.0.1/Chart.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.6 -digest: sha256:ba7278fafb744eaa1096176962336c2a1c7b08f49ffd2649e233d3613c1b0795 -generated: "2021-09-03T23:47:23.159441294Z" diff --git a/stable/traefik/7.0.1/Chart.yaml b/stable/traefik/7.0.1/Chart.yaml deleted file mode 100644 index 9e5127b337a..00000000000 --- a/stable/traefik/7.0.1/Chart.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: v2 -appVersion: '2.4' -dependencies: -- name: common - repository: https://truecharts.org/ - version: 6.13.6 -deprecated: false -description: Test App for Traefik -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 -name: traefik -sources: -- https://github.com/traefik/traefik -- https://github.com/traefik/traefik-helm-chart -- https://traefik.io/ -type: application -version: 7.0.1 diff --git a/stable/traefik/7.0.1/README.md b/stable/traefik/7.0.1/README.md deleted file mode 100644 index 31d33ae00b6..00000000000 --- a/stable/traefik/7.0.1/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Introduction - -Test App for Traefik - -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.13.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) ---- -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/7.0.1/app-readme.md b/stable/traefik/7.0.1/app-readme.md deleted file mode 100644 index 544bc1240dd..00000000000 --- a/stable/traefik/7.0.1/app-readme.md +++ /dev/null @@ -1,4 +0,0 @@ -Test App for Traefik - -This App is supplied by TrueCharts, for more information please visit https://truecharts.org -Test App for Traefik diff --git a/stable/traefik/7.0.1/charts/common-6.13.6.tgz b/stable/traefik/7.0.1/charts/common-6.13.6.tgz deleted file mode 100644 index 8a7eef0e76556b5b42da2fb283e0ccc613319140..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29078 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 ZpZ@8e{^=j`{4W3i|Nl=#8cP7=0s!8DXFdP` diff --git a/stable/traefik/7.0.1/crds/ingressroute.yaml b/stable/traefik/7.0.1/crds/ingressroute.yaml deleted file mode 100644 index 3391ba532a4..00000000000 --- a/stable/traefik/7.0.1/crds/ingressroute.yaml +++ /dev/null @@ -1,198 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: ingressroutes.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: IngressRoute - listKind: IngressRouteList - plural: ingressroutes - singular: ingressroute - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRoute is an Ingress CRD specification. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: IngressRouteSpec is a specification for a IngressRouteSpec - resource. - properties: - entryPoints: - items: - type: string - type: array - routes: - items: - description: Route contains the set of routes. - properties: - kind: - enum: - - Rule - type: string - match: - type: string - middlewares: - items: - description: MiddlewareRef is a ref to the Middleware resources. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: array - priority: - type: integer - services: - items: - description: Service defines an upstream to proxy traffic. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service - object (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The - differentiation between the two is specified in the - Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for - the forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration - based on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name - references a TraefikService object (and to be precise, - one that embeds a Weighted Round Robin). - type: integer - required: - - name - type: object - type: array - required: - - kind - - match - type: object - type: array - tls: - description: "TLS contains the TLS certificates configuration of the - routes. To enable Let's Encrypt, use an empty TLS struct, e.g. in - YAML: \n \t tls: {} # inline format \n \t tls: \t secretName: - # block format" - properties: - certResolver: - type: string - domains: - items: - description: Domain holds a domain name with SANs. - properties: - main: - type: string - sans: - items: - type: string - type: array - type: object - type: array - options: - description: Options is a reference to a TLSOption, that specifies - the parameters of the TLS connection. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - store: - description: Store is a reference to a TLSStore, that specifies - the parameters of the TLS store. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: object - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/ingressroutetcp.yaml b/stable/traefik/7.0.1/crds/ingressroutetcp.yaml deleted file mode 100644 index 67e099b47da..00000000000 --- a/stable/traefik/7.0.1/crds/ingressroutetcp.yaml +++ /dev/null @@ -1,160 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: ingressroutetcps.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: IngressRouteTCP - listKind: IngressRouteTCPList - plural: ingressroutetcps - singular: ingressroutetcp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRouteTCP is an Ingress CRD specification. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: IngressRouteTCPSpec is a specification for a IngressRouteTCPSpec - resource. - properties: - entryPoints: - items: - type: string - type: array - routes: - items: - description: RouteTCP contains the set of routes. - properties: - match: - type: string - middlewares: - description: Middlewares contains references to MiddlewareTCP - resources. - items: - description: ObjectReference is a generic reference to a Traefik - resource. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: array - services: - items: - description: ServiceTCP defines an upstream to proxy traffic. - properties: - name: - type: string - namespace: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - proxyProtocol: - description: ProxyProtocol holds the ProxyProtocol configuration. - properties: - version: - type: integer - type: object - terminationDelay: - type: integer - weight: - type: integer - required: - - name - - port - type: object - type: array - required: - - match - type: object - type: array - tls: - description: "TLSTCP contains the TLS certificates configuration of - the routes. To enable Let's Encrypt, use an empty TLS struct, e.g. - in YAML: \n \t tls: {} # inline format \n \t tls: \t secretName: - # block format" - properties: - certResolver: - type: string - domains: - items: - description: Domain holds a domain name with SANs. - properties: - main: - type: string - sans: - items: - type: string - type: array - type: object - type: array - options: - description: Options is a reference to a TLSOption, that specifies - the parameters of the TLS connection. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - passthrough: - type: boolean - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - store: - description: Store is a reference to a TLSStore, that specifies - the parameters of the TLS store. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: object - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/ingressrouteudp.yaml b/stable/traefik/7.0.1/crds/ingressrouteudp.yaml deleted file mode 100644 index 910acd6c270..00000000000 --- a/stable/traefik/7.0.1/crds/ingressrouteudp.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: ingressrouteudps.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: IngressRouteUDP - listKind: IngressRouteUDPList - plural: ingressrouteudps - singular: ingressrouteudp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRouteUDP is an Ingress CRD specification. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: IngressRouteUDPSpec is a specification for a IngressRouteUDPSpec - resource. - properties: - entryPoints: - items: - type: string - type: array - routes: - items: - description: RouteUDP contains the set of routes. - properties: - services: - items: - description: ServiceUDP defines an upstream to proxy traffic. - properties: - name: - type: string - namespace: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - weight: - type: integer - required: - - name - - port - type: object - type: array - type: object - type: array - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/middlewares.yaml b/stable/traefik/7.0.1/crds/middlewares.yaml deleted file mode 100644 index 1770587a327..00000000000 --- a/stable/traefik/7.0.1/crds/middlewares.yaml +++ /dev/null @@ -1,563 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: middlewares.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: Middleware - listKind: MiddlewareList - plural: middlewares - singular: middleware - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: Middleware is a specification for a Middleware resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: MiddlewareSpec holds the Middleware configuration. - properties: - addPrefix: - description: AddPrefix holds the AddPrefix configuration. - properties: - prefix: - type: string - type: object - basicAuth: - description: BasicAuth holds the HTTP basic authentication configuration. - properties: - headerField: - type: string - realm: - type: string - removeHeader: - type: boolean - secret: - type: string - type: object - buffering: - description: Buffering holds the request/response buffering configuration. - properties: - maxRequestBodyBytes: - format: int64 - type: integer - maxResponseBodyBytes: - format: int64 - type: integer - memRequestBodyBytes: - format: int64 - type: integer - memResponseBodyBytes: - format: int64 - type: integer - retryExpression: - type: string - type: object - chain: - description: Chain holds a chain of middlewares. - properties: - middlewares: - items: - description: MiddlewareRef is a ref to the Middleware resources. - properties: - name: - type: string - namespace: - type: string - required: - - name - type: object - type: array - type: object - circuitBreaker: - description: CircuitBreaker holds the circuit breaker configuration. - properties: - expression: - type: string - type: object - compress: - description: Compress holds the compress configuration. - properties: - excludedContentTypes: - items: - type: string - type: array - type: object - contentType: - description: ContentType middleware - or rather its unique `autoDetect` - option - specifies whether to let the `Content-Type` header, if - it has not been set by the backend, be automatically set to a value - derived from the contents of the response. As a proxy, the default - behavior should be to leave the header alone, regardless of what - the backend did with it. However, the historic default was to always - auto-detect and set the header if it was nil, and it is going to - be kept that way in order to support users currently relying on - it. This middleware exists to enable the correct behavior until - at least the default one can be changed in a future version. - properties: - autoDetect: - type: boolean - type: object - digestAuth: - description: DigestAuth holds the Digest HTTP authentication configuration. - properties: - headerField: - type: string - realm: - type: string - removeHeader: - type: boolean - secret: - type: string - type: object - errors: - description: ErrorPage holds the custom error page configuration. - properties: - query: - type: string - service: - description: Service defines an upstream to proxy traffic. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service object - (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for the - forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based - on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - status: - items: - type: string - type: array - type: object - forwardAuth: - description: ForwardAuth holds the http forward authentication configuration. - properties: - address: - type: string - authRequestHeaders: - items: - type: string - type: array - authResponseHeaders: - items: - type: string - type: array - authResponseHeadersRegex: - type: string - tls: - description: ClientTLS holds TLS specific configurations as client. - properties: - caOptional: - type: boolean - caSecret: - type: string - certSecret: - type: string - insecureSkipVerify: - type: boolean - type: object - trustForwardHeader: - type: boolean - type: object - headers: - description: Headers holds the custom header configuration. - properties: - accessControlAllowCredentials: - description: AccessControlAllowCredentials is only valid if true. - false is ignored. - type: boolean - accessControlAllowHeaders: - description: AccessControlAllowHeaders must be used in response - to a preflight request with Access-Control-Request-Headers set. - items: - type: string - type: array - accessControlAllowMethods: - description: AccessControlAllowMethods must be used in response - to a preflight request with Access-Control-Request-Method set. - items: - type: string - type: array - accessControlAllowOriginList: - description: AccessControlAllowOriginList is a list of allowable - origins. Can also be a wildcard origin "*". - items: - type: string - type: array - accessControlAllowOriginListRegex: - description: AccessControlAllowOriginListRegex is a list of allowable - origins written following the Regular Expression syntax (https://golang.org/pkg/regexp/). - items: - type: string - type: array - accessControlExposeHeaders: - description: AccessControlExposeHeaders sets valid headers for - the response. - items: - type: string - type: array - accessControlMaxAge: - description: AccessControlMaxAge sets the time that a preflight - request may be cached. - format: int64 - type: integer - addVaryHeader: - description: AddVaryHeader controls if the Vary header is automatically - added/updated when the AccessControlAllowOriginList is set. - type: boolean - allowedHosts: - items: - type: string - type: array - browserXssFilter: - type: boolean - contentSecurityPolicy: - type: string - contentTypeNosniff: - type: boolean - customBrowserXSSValue: - type: string - customFrameOptionsValue: - type: string - customRequestHeaders: - additionalProperties: - type: string - type: object - customResponseHeaders: - additionalProperties: - type: string - type: object - featurePolicy: - type: string - forceSTSHeader: - type: boolean - frameDeny: - type: boolean - hostsProxyHeaders: - items: - type: string - type: array - isDevelopment: - type: boolean - publicKey: - type: string - referrerPolicy: - type: string - sslForceHost: - description: 'Deprecated: use RedirectRegex instead.' - type: boolean - sslHost: - description: 'Deprecated: use RedirectRegex instead.' - type: string - sslProxyHeaders: - additionalProperties: - type: string - type: object - sslRedirect: - description: 'Deprecated: use EntryPoint redirection or RedirectScheme - instead.' - type: boolean - sslTemporaryRedirect: - description: 'Deprecated: use EntryPoint redirection or RedirectScheme - instead.' - type: boolean - stsIncludeSubdomains: - type: boolean - stsPreload: - type: boolean - stsSeconds: - format: int64 - type: integer - type: object - inFlightReq: - description: InFlightReq limits the number of requests being processed - and served concurrently. - properties: - amount: - format: int64 - type: integer - sourceCriterion: - description: SourceCriterion defines what criterion is used to - group requests as originating from a common source. If none - are set, the default is to use the request's remote address - field. All fields are mutually exclusive. - properties: - ipStrategy: - description: IPStrategy holds the ip strategy configuration. - properties: - depth: - type: integer - excludedIPs: - items: - type: string - type: array - type: object - requestHeaderName: - type: string - requestHost: - type: boolean - type: object - type: object - ipWhiteList: - description: IPWhiteList holds the ip white list configuration. - properties: - ipStrategy: - description: IPStrategy holds the ip strategy configuration. - properties: - depth: - type: integer - excludedIPs: - items: - type: string - type: array - type: object - sourceRange: - items: - type: string - type: array - type: object - passTLSClientCert: - description: PassTLSClientCert holds the TLS client cert headers configuration. - properties: - info: - description: TLSClientCertificateInfo holds the client TLS certificate - info configuration. - properties: - issuer: - description: TLSCLientCertificateDNInfo holds the client TLS - certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739 - properties: - commonName: - type: boolean - country: - type: boolean - domainComponent: - type: boolean - locality: - type: boolean - organization: - type: boolean - province: - type: boolean - serialNumber: - type: boolean - type: object - notAfter: - type: boolean - notBefore: - type: boolean - sans: - type: boolean - serialNumber: - type: boolean - subject: - description: TLSCLientCertificateDNInfo holds the client TLS - certificate distinguished name info configuration. cf https://tools.ietf.org/html/rfc3739 - properties: - commonName: - type: boolean - country: - type: boolean - domainComponent: - type: boolean - locality: - type: boolean - organization: - type: boolean - province: - type: boolean - serialNumber: - type: boolean - type: object - type: object - pem: - type: boolean - type: object - plugin: - additionalProperties: - x-kubernetes-preserve-unknown-fields: true - type: object - rateLimit: - description: RateLimit holds the rate limiting configuration for a - given router. - properties: - average: - format: int64 - type: integer - burst: - format: int64 - type: integer - period: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - sourceCriterion: - description: SourceCriterion defines what criterion is used to - group requests as originating from a common source. If none - are set, the default is to use the request's remote address - field. All fields are mutually exclusive. - properties: - ipStrategy: - description: IPStrategy holds the ip strategy configuration. - properties: - depth: - type: integer - excludedIPs: - items: - type: string - type: array - type: object - requestHeaderName: - type: string - requestHost: - type: boolean - type: object - type: object - redirectRegex: - description: RedirectRegex holds the redirection configuration. - properties: - permanent: - type: boolean - regex: - type: string - replacement: - type: string - type: object - redirectScheme: - description: RedirectScheme holds the scheme redirection configuration. - properties: - permanent: - type: boolean - port: - type: string - scheme: - type: string - type: object - replacePath: - description: ReplacePath holds the ReplacePath configuration. - properties: - path: - type: string - type: object - replacePathRegex: - description: ReplacePathRegex holds the ReplacePathRegex configuration. - properties: - regex: - type: string - replacement: - type: string - type: object - retry: - description: Retry holds the retry configuration. - properties: - attempts: - type: integer - initialInterval: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - stripPrefix: - description: StripPrefix holds the StripPrefix configuration. - properties: - forceSlash: - type: boolean - prefixes: - items: - type: string - type: array - type: object - stripPrefixRegex: - description: StripPrefixRegex holds the StripPrefixRegex configuration. - properties: - regex: - items: - type: string - type: array - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/middlewarestcp.yaml b/stable/traefik/7.0.1/crds/middlewarestcp.yaml deleted file mode 100644 index f0d1d5640bd..00000000000 --- a/stable/traefik/7.0.1/crds/middlewarestcp.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: middlewaretcps.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: MiddlewareTCP - listKind: MiddlewareTCPList - plural: middlewaretcps - singular: middlewaretcp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: MiddlewareTCP is a specification for a MiddlewareTCP resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: MiddlewareTCPSpec holds the MiddlewareTCP configuration. - properties: - ipWhiteList: - description: TCPIPWhiteList holds the TCP ip white list configuration. - properties: - sourceRange: - items: - type: string - type: array - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/serverstransports.yaml b/stable/traefik/7.0.1/crds/serverstransports.yaml deleted file mode 100644 index 78241697d1a..00000000000 --- a/stable/traefik/7.0.1/crds/serverstransports.yaml +++ /dev/null @@ -1,101 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: serverstransports.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: ServersTransport - listKind: ServersTransportList - plural: serverstransports - singular: serverstransport - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: ServersTransport is a specification for a ServersTransport resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ServersTransportSpec options to configure communication between - Traefik and the servers. - properties: - certificatesSecrets: - description: Certificates for mTLS. - items: - type: string - type: array - disableHTTP2: - description: Disable HTTP/2 for connections with backend servers. - type: boolean - forwardingTimeouts: - description: Timeouts for requests forwarded to the backend servers. - properties: - dialTimeout: - anyOf: - - type: integer - - type: string - description: The amount of time to wait until a connection to - a backend server can be established. If zero, no timeout exists. - x-kubernetes-int-or-string: true - idleConnTimeout: - anyOf: - - type: integer - - type: string - description: The maximum period for which an idle HTTP keep-alive - connection will remain open before closing itself. - x-kubernetes-int-or-string: true - responseHeaderTimeout: - anyOf: - - type: integer - - type: string - description: The amount of time to wait for a server's response - headers after fully writing the request (including its body, - if any). If zero, no timeout exists. - x-kubernetes-int-or-string: true - type: object - insecureSkipVerify: - description: Disable SSL certificate verification. - type: boolean - maxIdleConnsPerHost: - description: If non-zero, controls the maximum idle (keep-alive) to - keep per-host. If zero, DefaultMaxIdleConnsPerHost is used. - type: integer - rootCAsSecrets: - description: Add cert file for self-signed certificate. - items: - type: string - type: array - serverName: - description: ServerName used to contact the server. - type: string - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/tlsoptions.yaml b/stable/traefik/7.0.1/crds/tlsoptions.yaml deleted file mode 100644 index c901ac2df5e..00000000000 --- a/stable/traefik/7.0.1/crds/tlsoptions.yaml +++ /dev/null @@ -1,87 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: tlsoptions.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: TLSOption - listKind: TLSOptionList - plural: tlsoptions - singular: tlsoption - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: TLSOption is a specification for a TLSOption resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: TLSOptionSpec configures TLS for an entry point. - properties: - cipherSuites: - items: - type: string - type: array - clientAuth: - description: ClientAuth defines the parameters of the client authentication - part of the TLS connection, if any. - properties: - clientAuthType: - description: ClientAuthType defines the client authentication - type to apply. - enum: - - NoClientCert - - RequestClientCert - - VerifyClientCertIfGiven - - RequireAndVerifyClientCert - type: string - secretNames: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - items: - type: string - type: array - type: object - curvePreferences: - items: - type: string - type: array - maxVersion: - type: string - minVersion: - type: string - preferServerCipherSuites: - type: boolean - sniStrict: - type: boolean - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/tlsstores.yaml b/stable/traefik/7.0.1/crds/tlsstores.yaml deleted file mode 100644 index 7bb6193b026..00000000000 --- a/stable/traefik/7.0.1/crds/tlsstores.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: tlsstores.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: TLSStore - listKind: TLSStoreList - plural: tlsstores - singular: tlsstore - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: TLSStore is a specification for a TLSStore resource. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: TLSStoreSpec configures a TLSStore resource. - properties: - defaultCertificate: - description: DefaultCertificate holds a secret name for the TLSOption - resource. - properties: - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - required: - - secretName - type: object - required: - - defaultCertificate - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/crds/traefikservices.yaml b/stable/traefik/7.0.1/crds/traefikservices.yaml deleted file mode 100644 index 1d98c25d68d..00000000000 --- a/stable/traefik/7.0.1/crds/traefikservices.yaml +++ /dev/null @@ -1,270 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - "helm.sh/resource-policy": keep - "helm.sh/hook": pre-install,pre-upgrade,pre-rollback - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: traefikservices.traefik.containo.us -spec: - group: traefik.containo.us - names: - kind: TraefikService - listKind: TraefikServiceList - plural: traefikservices - singular: traefikservice - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: TraefikService is the specification for a service (that an IngressRoute - refers to) that is usually not a terminal service (i.e. not a pod of servers), - as opposed to a Kubernetes Service. That is to say, it usually refers to - other (children) services, which themselves can be TraefikServices or Services. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ServiceSpec defines whether a TraefikService is a load-balancer - of services or a mirroring service. - properties: - mirroring: - description: Mirroring defines a mirroring service, which is composed - of a main load-balancer, and a list of mirrors. - properties: - kind: - enum: - - Service - - TraefikService - type: string - maxBodySize: - format: int64 - type: integer - mirrors: - items: - description: MirrorService defines one of the mirrors of a Mirroring - service. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service - object (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - percent: - type: integer - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for - the forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based - on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - type: array - name: - description: Name is a reference to a Kubernetes Service object - (for a load-balancer of servers), or to a TraefikService object - (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for the forward - of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based on - cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - weighted: - description: WeightedRoundRobin defines a load-balancer of services. - properties: - services: - items: - description: Service defines an upstream to proxy traffic. - properties: - kind: - enum: - - Service - - TraefikService - type: string - name: - description: Name is a reference to a Kubernetes Service - object (for a load-balancer of servers), or to a TraefikService - object (service load-balancer, mirroring, etc). The differentiation - between the two is specified in the Kind field. - type: string - namespace: - type: string - passHostHeader: - type: boolean - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding holds configuration for - the forward of the response. - properties: - flushInterval: - type: string - type: object - scheme: - type: string - serversTransport: - type: string - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based - on cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - strategy: - type: string - weight: - description: Weight should only be specified when Name references - a TraefikService object (and to be precise, one that embeds - a Weighted Round Robin). - type: integer - required: - - name - type: object - type: array - sticky: - description: Sticky holds the sticky configuration. - properties: - cookie: - description: Cookie holds the sticky configuration based on - cookie. - properties: - httpOnly: - type: boolean - name: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/stable/traefik/7.0.1/helm-values.md b/stable/traefik/7.0.1/helm-values.md deleted file mode 100644 index 73da98010b5..00000000000 --- a/stable/traefik/7.0.1/helm-values.md +++ /dev/null @@ -1,50 +0,0 @@ -# Default Helm-Values - -TrueCharts is primarily build to supply TrueNAS SCALE Apps. -However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. - -Most of our Apps also consume our "common" Helm Chart. -If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. -You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. - -## Values - -| Key | Type | Default | Description | -|-----|------|---------|-------------| -| additionalArguments[0] | string | `"--metrics.prometheus"` | | -| additionalArguments[1] | string | `"--ping"` | | -| additionalArguments[2] | string | `"--serverstransport.insecureskipverify=true"` | | -| controller.strategy | string | `"RollingUpdate"` | | -| controller.type | string | `"daemonset"` | | -| globalArguments[0] | string | `"--global.checknewversion"` | | -| image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"traefik"` | | -| image.tag | string | `"v2.5"` | | -| ingressClass | object | `{"enabled":false,"fallbackApiVersion":"","isDefaultClass":false}` | Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x | -| ingressRoute | object | `{"dashboard":{"annotations":{},"enabled":true,"labels":{}}}` | Create an IngressRoute for the dashboard | -| logs | object | `{"access":{"enabled":false,"fields":{"general":{"defaultmode":"keep","names":{}},"headers":{"defaultmode":"drop","names":{}}},"filters":{}},"general":{"level":"ERROR"}}` | Logs https://docs.traefik.io/observability/logs/ | -| metrics.prometheus.entryPoint | string | `"metrics"` | | -| middlewares | object | `{"basicAuth":[],"chain":[],"forwardAuth":[],"rateLimit":[],"redirectScheme":[]}` | SCALE Middleware Handlers | -| pilot | object | `{"enabled":false,"token":""}` | Activate Pilot integration | -| podSecurityContext.fsGroup | int | `568` | | -| probes.liveness | object | See below | Liveness probe configuration | -| probes.liveness.path | string | "/" | If a HTTP probe is used (default for HTTP/HTTPS services) this path is used | -| probes.liveness.type | string | "TCP" | sets the probe type when not using a custom probe | -| probes.readiness | object | See below | Redainess probe configuration | -| probes.readiness.path | string | "/" | If a HTTP probe is used (default for HTTP/HTTPS services) this path is used | -| probes.readiness.type | string | "TCP" | sets the probe type when not using a custom probe | -| probes.startup | object | See below | Startup probe configuration | -| probes.startup.path | string | "/" | If a HTTP probe is used (default for HTTP/HTTPS services) this path is used | -| probes.startup.type | string | "TCP" | sets the probe type when not using a custom probe | -| providers.kubernetesCRD.enabled | bool | `true` | | -| providers.kubernetesCRD.namespaces | list | `[]` | | -| providers.kubernetesIngress.enabled | bool | `true` | | -| providers.kubernetesIngress.namespaces | list | `[]` | | -| providers.kubernetesIngress.publishedService.enabled | bool | `true` | | -| rbac | object | `{"enabled":true,"rules":[{"apiGroups":[""],"resources":["services","endpoints","secrets"],"verbs":["get","list","watch"]},{"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses","ingressclasses"],"verbs":["get","list","watch"]},{"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses/status"],"verbs":["update"]},{"apiGroups":["traefik.containo.us"],"resources":["ingressroutes","ingressroutetcps","ingressrouteudps","middlewares","middlewaretcps","tlsoptions","tlsstores","traefikservices","serverstransports"],"verbs":["get","list","watch"]}]}` | Whether Role Based Access Control objects like roles and rolebindings should be created | -| securityContext | object | `{"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":568,"runAsNonRoot":true,"runAsUser":568}` | Set the container security context To run the container with ports below 1024 this will need to be adjust to run as root | -| service | object | `{"main":{"enabled":true,"ports":{"main":{"enabled":true,"port":9000,"protocol":"HTTP"}},"type":"LoadBalancer"},"metrics":{"enabled":true,"ports":{"metrics":{"enabled":true,"port":9100,"protocol":"HTTP"}},"type":"LoadBalancer"},"tcp":{"enabled":true,"ports":{"web":{"enabled":true,"port":9080,"protocol":"HTTP","redirectTo":"websecure"},"websecure":{"enabled":true,"port":9443,"protocol":"HTTPS"}},"type":"LoadBalancer"},"udp":{"enabled":false}}` | Options for the main traefik service, where the entrypoints traffic comes from from. | -| serviceAccount | object | `{"enabled":true,"name":""}` | The service account the pods will use to interact with the Kubernetes API | -| tlsOptions | object | `{"default":{"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"],"curvePreferences":["CurveP521","CurveP384"],"minVersion":"VersionTLS12","sniStrict":false}}` | TLS Options to be created as TLSOption CRDs https://doc.traefik.io/traefik/https/tls/#tls-options Example: | - -All Rights Reserved - The TrueCharts Project diff --git a/stable/traefik/7.0.1/ix_values.yaml b/stable/traefik/7.0.1/ix_values.yaml deleted file mode 100644 index 11e67e6ee6f..00000000000 --- a/stable/traefik/7.0.1/ix_values.yaml +++ /dev/null @@ -1,181 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -# 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: {} - -# -# Configure providers -# -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -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" - - "--providers.kubernetesingress.allowexternalnameservices=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 - - - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# 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] - -portalhook: - enabled: true diff --git a/stable/traefik/7.0.1/questions.yaml b/stable/traefik/7.0.1/questions.yaml deleted file mode 100644 index 9d928af6af2..00000000000 --- a/stable/traefik/7.0.1/questions.yaml +++ /dev/null @@ -1,1166 +0,0 @@ -groups: - - name: "Container Image" - description: "Image to be used for container" - - name: "Controller" - description: "Configure workload deployment" - - name: "Container Configuration" - description: "additional container configuration" - - name: "App Configuration" - description: "App specific config options" - - name: "Networking and Services" - description: "Configure Network and Services for container" - - name: "Storage and Persistence" - description: "Persist and share data that is separate from the container" - - name: "Ingress" - description: "Ingress Configuration" - - name: "Security and Permissions" - description: "Configure security context and permissions" - - name: "Resources and Devices" - description: "Specify resources/devices to be allocated to workload" - - name: "Middlewares" - description: "Traefik Middlewares" - - name: "Advanced" - description: "Advanced Configuration" -portals: - web_portal: - protocols: - - "http" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "/dashboard/" -questions: - - variable: portal - group: "Container Image" - label: "Configure Portal Button" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "Enable" - description: "enable the portal button" - schema: - hidden: true - editable: false - type: boolean - default: true - - variable: 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" - enum: - - value: "deployment" - description: "Deployment" - - value: "statefulset" - description: "Statefulset" - - value: "daemonset" - description: "Daemonset" - - variable: replicas - description: "Number of desired pod replicas" - label: "Desired Replicas" - schema: - type: int - default: 1 - required: true - - variable: strategy - description: "Please specify type of workload to deploy" - label: "(Advanced) Update Strategy" - schema: - type: string - default: "RollingUpdate" - required: true - enum: - - value: "Recreate" - description: "Recreate: Kill existing pods before creating new ones" - - value: "RollingUpdate" - description: "RollingUpdate: Create new pods and then kill old ones" - - value: "OnDelete" - description: "(Legacy) OnDelete: ignore .spec.template changes" - - variable: 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: 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: pilot - label: "Traefik Pilot" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: token - label: "token" - schema: - type: string - default: "" - - variable: dashboard - label: "Pilot Dashboard" - schema: - type: boolean - default: false - - - variable: ingressClass - label: "ingressClass" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: isDefaultClass - label: "isDefaultClass" - schema: - type: boolean - default: false - - - variable: logs - label: "Logs" - group: "App Configuration" - schema: - type: dict - attrs: - - variable: general - label: "General Logs" - schema: - type: dict - attrs: - - variable: level - label: "Log Level" - schema: - type: string - default: "ERROR" - enum: - - value: "INFO" - description: "Info" - - value: "WARN" - description: "Warnings" - - value: "ERROR" - description: "Errors" - - value: "FATAL" - description: "Fatal Errors" - - value: "PANIC" - description: "Panics" - - value: "DEBUG" - description: "Debug" - - variable: access - label: "Access Logs" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabledFilters - label: "Enable Filters" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: filters - label: "Filters" - schema: - type: dict - attrs: - - variable: statuscodes - label: "Status codes" - schema: - type: string - default: "200,300-302" - - variable: retryattempts - label: "retryattempts" - schema: - type: boolean - default: true - - variable: minduration - label: "minduration" - schema: - type: string - default: "10ms" - - variable: fields - label: "Fields" - schema: - type: dict - attrs: - - variable: general - label: "General" - schema: - type: dict - attrs: - - variable: defaultmode - label: "Default Mode" - schema: - type: string - default: "keep" - enum: - - value: "keep" - description: "Keep" - - value: "drop" - description: "Drop" - - variable: headers - label: "Headers" - schema: - type: dict - attrs: - - variable: defaultmode - label: "Default Mode" - schema: - type: string - default: "drop" - enum: - - value: "keep" - description: "Keep" - - value: "drop" - description: "Drop" - - - variable: middlewares - label: "" - group: "Middlewares" - schema: - type: dict - attrs: - - variable: basicAuth - label: "basicAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: users - label: "Users" - schema: - type: list - default: [] - items: - - variable: usersEntry - label: "" - schema: - type: dict - attrs: - - variable: username - label: "Username" - schema: - type: string - required: true - default: "" - - variable: password - label: "Password" - schema: - type: string - required: true - default: "" - - - - variable: forwardAuth - label: "forwardAuth" - schema: - type: list - default: [] - items: - - variable: basicAuthEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - variable: address - label: "Address" - schema: - type: string - required: true - default: "" - - variable: trustForwardHeader - label: "trustForwardHeader" - schema: - type: boolean - default: false - - variable: authResponseHeadersRegex - label: "authResponseHeadersRegex" - schema: - type: string - default: "" - - variable: authResponseHeaders - label: "authResponseHeaders" - schema: - type: list - default: [] - items: - - variable: authResponseHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: authRequestHeaders - label: "authRequestHeaders" - schema: - type: list - default: [] - items: - - variable: authRequestHeadersEntry - label: "" - schema: - type: string - default: "" - - variable: chain - label: "chain" - schema: - type: list - default: [] - items: - - variable: chainEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: middlewares - label: "Middlewares to Chain" - schema: - type: list - default: [] - items: - - variable: name - label: "Name" - schema: - type: string - required: true - default: "" - - - variable: redirectScheme - label: "redirectScheme" - schema: - type: list - default: [] - items: - - variable: redirectSchemeEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: scheme - label: "Scheme" - schema: - type: string - required: true - default: "https" - enum: - - value: "https" - description: "https" - - value: "http" - description: "http" - - variable: permanent - label: "Permanent" - schema: - type: boolean - required: true - default: false - - - variable: rateLimit - label: "rateLimit" - schema: - type: list - default: [] - items: - - variable: rateLimitEntry - label: "" - schema: - type: dict - attrs: - - variable: name - label: "Name" - schema: - type: string - required: true - - variable: average - label: "Average" - schema: - type: int - required: true - default: 300 - - variable: burst - label: "Burst" - schema: - type: int - required: true - default: 200 - - - variable: hostNetwork - group: "Networking and Services" - label: "Enable Host Networking" - schema: - type: boolean - default: false - - - - variable: service - group: "Networking and Services" - label: "Configure Service Entrypoint" - 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 Entrypoints Configurations" - schema: - type: dict - attrs: - - variable: main - label: "Main Entrypoint 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" - - variable: targetPort - label: "Target Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9000 - editable: false - hidden: true - - variable: port - label: "Entrypoints Port" - schema: - type: int - default: 9000 - 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: 9000 - - variable: tcp - label: "Main Service" - description: "The tcp Entrypoint 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: "LoadBalancer" - enum: - - 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 Entrypoints Configurations" - schema: - type: dict - attrs: - - variable: web - label: "web Entrypoint 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" - - variable: port - label: "Entrypoints Port" - schema: - type: int - default: 9080 - editable: true - required: true - - variable: websecure - label: "websecure Entrypoints 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: "HTTPS" - enum: - - value: HTTP - description: "HTTP" - - value: "HTTPS" - description: "HTTPS" - - value: TCP - description: "TCP" - - variable: port - label: "Entrypoints Port" - schema: - type: int - default: 9443 - editable: true - required: true - - variable: tls - label: "websecure Entrypoints Configuration" - schema: - type: dict - hidden: true - attrs: - - variable: enabled - label: "Enable the port" - schema: - type: boolean - default: true - hidden: true - - variable: portsList - label: "Additional TCP Entrypoints" - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: "Custom Entrypoints" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable the port" - schema: - type: boolean - default: true - hidden: true - - variable: name - label: "Entrypoints Name" - schema: - type: string - default: "" - - variable: protocol - label: "Entrypoints Type" - schema: - type: string - default: "TCP" - enum: - - value: HTTP - description: "HTTP" - - value: "HTTPS" - description: "HTTPS" - - value: TCP - description: "TCP" - - variable: port - label: "Container Port" - schema: - type: int - required: true - - variable: tls - label: "websecure Entrypoints Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable the port" - schema: - type: boolean - default: true - - variable: udp - label: "UDP Service" - description: "The UDP service for entrypoints" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable the service" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - 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: "LoadBalancer" - enum: - - 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 TCP Entrypoints" - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: "Custom Entrypoints" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable the port" - schema: - type: boolean - default: true - hidden: true - - variable: name - label: "Entrypoints Name" - schema: - type: string - default: "" - - variable: protocol - label: "Entrypoints Type" - schema: - type: string - default: "UDP" - enum: - - value: UDP - description: "UDP" - - variable: port - label: "Container Port" - schema: - type: int - required: true - - variable: metrics - label: "metrics Service" - description: "The metrics Entrypoint 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: "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 Entrypoints Configuration" - schema: - type: dict - attrs: - - variable: metrics - label: "metrics Entrypoints Configurations" - 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" - - variable: targetPort - label: "Target Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9100 - editable: false - hidden: true - - variable: port - label: "Container Port" - schema: - type: int - default: 9100 - 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: 9100 - - - 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: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - - 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/traefik/7.0.1/templates/_args.tpl b/stable/traefik/7.0.1/templates/_args.tpl deleted file mode 100644 index 2ecdb60a1e6..00000000000 --- a/stable/traefik/7.0.1/templates/_args.tpl +++ /dev/null @@ -1,141 +0,0 @@ -{{/* Define the args */}} -{{- define "traefik.args" -}} -args: - {{/* merge all ports */}} - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - {{/* start of actual arguments */}} - {{- with .Values.globalArguments }} - {{- range . }} - - {{ . | quote }} - {{- end }} - {{- end }} - {{- range $name, $config := $ports }} - {{- if $config }} - {{- if or ( eq $config.protocol "HTTP" ) ( eq $config.protocol "HTTPS" ) ( eq $config.protocol "TCP" ) }} - {{- $_ := set $config "protocol" "TCP" }} - {{- end }} - - "--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default "tcp" $config.protocol | lower }}" - {{- end }} - {{- end }} - - "--api.dashboard=true" - - "--ping=true" - {{- if .Values.metrics }} - {{- if .Values.metrics.datadog }} - - "--metrics.datadog=true" - - "--metrics.datadog.address={{ .Values.metrics.datadog.address }}" - {{- end }} - {{- if .Values.metrics.influxdb }} - - "--metrics.influxdb=true" - - "--metrics.influxdb.address={{ .Values.metrics.influxdb.address }}" - - "--metrics.influxdb.protocol={{ .Values.metrics.influxdb.protocol }}" - {{- end }} - {{- if .Values.metrics.prometheus }} - - "--metrics.prometheus=true" - - "--metrics.prometheus.entrypoint={{ .Values.metrics.prometheus.entryPoint }}" - {{- end }} - {{- if .Values.metrics.statsd }} - - "--metrics.statsd=true" - - "--metrics.statsd.address={{ .Values.metrics.statsd.address }}" - {{- end }} - {{- end }} - {{- if .Values.providers.kubernetesCRD.enabled }} - - "--providers.kubernetescrd" - {{- end }} - {{- if .Values.providers.kubernetesIngress.enabled }} - - "--providers.kubernetesingress" - {{- if 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 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 := $ports }} - {{- if $config.redirectTo }} - {{- $toPort := index $ports $config.redirectTo }} - - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.port }}" - - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" - {{- end }} - {{- if or ( $config.tls ) ( eq $config.protocol "HTTPS" ) }} - {{- if or ( $config.tls.enabled ) ( eq $config.protocol "HTTPS" ) }} - - "--entrypoints.{{ $entrypoint }}.http.tls=true" - {{- if $config.tls.options }} - - "--entrypoints.{{ $entrypoint }}.http.tls.options={{ $config.tls.options }}" - {{- end }} - {{- if $config.tls.certResolver }} - - "--entrypoints.{{ $entrypoint }}.http.tls.certResolver={{ $config.tls.certResolver }}" - {{- end }} - {{- if $config.tls.domains }} - {{- range $index, $domain := $config.tls.domains }} - {{- if $domain.main }} - - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].main={{ $domain.main }}" - {{- end }} - {{- if $domain.sans }} - - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].sans={{ join "," $domain.sans }}" - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- with .Values.logs }} - {{- 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 }} -{{- end -}} diff --git a/stable/traefik/7.0.1/templates/_helpers.tpl b/stable/traefik/7.0.1/templates/_helpers.tpl deleted file mode 100644 index 5abff4405b1..00000000000 --- a/stable/traefik/7.0.1/templates/_helpers.tpl +++ /dev/null @@ -1,21 +0,0 @@ -{{/* -Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. -By convention this will simply use the / to match the name of the -service generated. -Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` -*/}} -{{- define "providers.kubernetesIngress.publishedServicePath" -}} -{{- $defServiceName := printf "%s/%s-tcp" .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/7.0.1/templates/_ingressclass.tpl b/stable/traefik/7.0.1/templates/_ingressclass.tpl deleted file mode 100644 index 27f8467fc9e..00000000000 --- a/stable/traefik/7.0.1/templates/_ingressclass.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the ingressClass */}} -{{- define "traefik.ingressClass" -}} -{{- if .Values.ingressClass.enabled }} - {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} -apiVersion: networking.k8s.io/v1 - {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} -apiVersion: networking.k8s.io/v1beta1 - {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} -apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} - {{- else }} - {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} - {{- end }} ---- -kind: IngressClass -metadata: - annotations: - ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} - labels: - {{- include "common.labels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/stable/traefik/7.0.1/templates/_ingressroute.tpl b/stable/traefik/7.0.1/templates/_ingressroute.tpl deleted file mode 100644 index e47e5916c0d..00000000000 --- a/stable/traefik/7.0.1/templates/_ingressroute.tpl +++ /dev/null @@ -1,25 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{- if .Values.ingressRoute.dashboard.enabled -}} -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "common.names.fullname" . }}-dashboard - annotations: - helm.sh/hook: "post-install,post-upgrade" - {{- with .Values.ingressRoute.dashboard.annotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "common.labels" . | nindent 4 }} -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{- end -}} -{{- end -}} diff --git a/stable/traefik/7.0.1/templates/_portalhook.tpl b/stable/traefik/7.0.1/templates/_portalhook.tpl deleted file mode 100644 index 6d12bc39776..00000000000 --- a/stable/traefik/7.0.1/templates/_portalhook.tpl +++ /dev/null @@ -1,27 +0,0 @@ -{{/* Define the portalHook */}} -{{- define "traefik.portalhook" -}} -{{- if .Values.portalhook.enabled }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- - -apiVersion: v1 -kind: ConfigMap -metadata: - name: portalhook - namespace: {{ $namespace }} -data: - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - websecureport: {{ $ports.websecure.exposedPort | quote }} - {{- range $name, $value := $ports }} - {{ $name }}: {{ $value.port | quote }} - {{- end }} -{{- end }} -{{- end -}} diff --git a/stable/traefik/7.0.1/templates/_tlsoptions.tpl b/stable/traefik/7.0.1/templates/_tlsoptions.tpl deleted file mode 100644 index 34e80eab749..00000000000 --- a/stable/traefik/7.0.1/templates/_tlsoptions.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} -apiVersion: traefik.containo.us/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} ---- -{{- end -}} -{{- end -}} diff --git a/stable/traefik/7.0.1/templates/common.yaml b/stable/traefik/7.0.1/templates/common.yaml deleted file mode 100644 index a3ba841bdd7..00000000000 --- a/stable/traefik/7.0.1/templates/common.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "common.values.setup" . }} - -{{- if .Values.metrics }} -{{- if .Values.metrics.prometheus }} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} -{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "9100" -}} -{{- end }} -{{- end }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat .Values.args .Values.newArgs.args }} -{{- $_ := set .Values "args" $mergedargs -}} - -{{- include "traefik.portalhook" . }} -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - - -{{/* Render the templates */}} -{{ include "common.all" . }} diff --git a/stable/traefik/7.0.1/templates/middleware-namespace.yaml b/stable/traefik/7.0.1/templates/middleware-namespace.yaml deleted file mode 100644 index 43d2728446f..00000000000 --- a/stable/traefik/7.0.1/templates/middleware-namespace.yaml +++ /dev/null @@ -1,7 +0,0 @@ -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -apiVersion: v1 -kind: Namespace -metadata: - name: traefikmiddlewares - namespace: traefikmiddlewares -{{- end }} diff --git a/stable/traefik/7.0.1/templates/middlewares/basic-middleware.yaml b/stable/traefik/7.0.1/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index e50f00c98d8..00000000000 --- a/stable/traefik/7.0.1/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: compress - namespace: {{ $namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-ratelimit - namespace: {{ $namespace }} -spec: - rateLimit: - average: 300 - burst: 200 ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: basic-secure-headers - namespace: {{ $namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - sslRedirect: true - # stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - # forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - sslForceHost: true - referrerPolicy: same-origin - customResponseHeaders: - X-Robots-Tag: 'none' - server: '' ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: chain-basic - namespace: {{ $namespace }} -spec: - chain: - middlewares: - - name: basic-ratelimit - - name: basic-secure-headers - - name: compress diff --git a/stable/traefik/7.0.1/templates/middlewares/basicauth.yaml b/stable/traefik/7.0.1/templates/middlewares/basicauth.yaml deleted file mode 100644 index 54dacb824ff..00000000000 --- a/stable/traefik/7.0.1/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} ---- -{{- $users := list }} -{{ range $index, $userdata := $middlewareData.users }} - {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} -{{ end }} - -apiVersion: v1 -kind: Secret -metadata: - name: {{printf "%v-%v" $middlewareData.name "secret" }} - namespace: {{ $namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - basicAuth: - secret: {{printf "%v-%v" $middlewareData.name "secret" }} -{{ end }} diff --git a/stable/traefik/7.0.1/templates/middlewares/chain.yaml b/stable/traefik/7.0.1/templates/middlewares/chain.yaml deleted file mode 100644 index 49dfd9610ef..00000000000 --- a/stable/traefik/7.0.1/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.chain }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - chain: - middlewares: - {{ range $index, $chainData := . }} - - name: {{ printf "%v-%v@%v" $namespace $chainData.name "kubernetescrd" }} - {{ end }} -{{ end }} diff --git a/stable/traefik/7.0.1/templates/middlewares/forwardauth.yaml b/stable/traefik/7.0.1/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 654eb8a6cb9..00000000000 --- a/stable/traefik/7.0.1/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- 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/7.0.1/templates/middlewares/ratelimit.yaml b/stable/traefik/7.0.1/templates/middlewares/ratelimit.yaml deleted file mode 100644 index 624e7ff0d34..00000000000 --- a/stable/traefik/7.0.1/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{ end }} diff --git a/stable/traefik/7.0.1/templates/middlewares/redirectScheme.yaml b/stable/traefik/7.0.1/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 9ff49d76186..00000000000 --- a/stable/traefik/7.0.1/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- $values := .Values }} -{{- $namespace := ( printf "ix-%s" .Release.Name ) }} -{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} -{{- $namespace = "traefikmiddlewares" }} -{{- end }} -{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} - ---- -# Declaring the user list -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: {{ $middlewareData.name }} - namespace: {{ $namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{ end }} diff --git a/stable/traefik/7.0.1/test_values.yaml b/stable/traefik/7.0.1/test_values.yaml deleted file mode 100644 index e349ea62298..00000000000 --- a/stable/traefik/7.0.1/test_values.yaml +++ /dev/null @@ -1,320 +0,0 @@ -# Default values for Traefik -image: - repository: traefik - # defaults to appVersion - tag: v2.5 - pullPolicy: IfNotPresent - -# -- Use ingressClass. Ignored if Traefik version < 2.3 / kubernetes < 1.18.x -ingressClass: - # true is not unit-testable yet, pending https://github.com/rancher/helm-unittest/pull/12 - enabled: false - isDefaultClass: false - # Use to force a networking.k8s.io API Version for certain CI/CD applications. E.g. "v1beta1" - fallbackApiVersion: "" - -# -- Activate Pilot integration -pilot: - enabled: false - token: "" - # Toggle Pilot Dashboard - # dashboard: false - -# -- Create an IngressRoute for the dashboard -ingressRoute: - dashboard: - enabled: true - # Additional ingressRoute annotations (e.g. for kubernetes.io/ingress.class) - annotations: {} - # Additional ingressRoute labels (e.g. for filtering IngressRoute by custom labels) - labels: {} - -# -# -- Configure providers -providers: - kubernetesCRD: - enabled: true - namespaces: [] - # - "default" - kubernetesIngress: - enabled: true - # labelSelector: environment=production,method=traefik - namespaces: [] - # - "default" - # IP used for Kubernetes Ingress endpoints - publishedService: - enabled: true - # Published Kubernetes Service to copy status from. Format: namespace/servicename - # By default this Traefik service - # pathOverride: "" - - -# -- Logs -# https://docs.traefik.io/observability/logs/ -logs: - # Traefik logs concern everything that happens to Traefik itself (startup, configuration, events, shutdown, and so on). - general: - # By default, the 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: ERROR - 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 - -metrics: - # datadog: - # address: 127.0.0.1:8125 - # influxdb: - # address: localhost:8089 - # protocol: udp - prometheus: - entryPoint: metrics - # statsd: - # address: localhost:8125 - -globalArguments: - - "--global.checknewversion" - -## -# -- Additional arguments to be passed at Traefik's binary -# All available options available on https://docs.traefik.io/reference/static-configuration/cli/ -## Use curly braces to pass values: `helm install --set="additionalArguments={--providers.kubernetesingress.ingressclass=traefik-internal,--log.level=DEBUG}"` -additionalArguments: - - "--metrics.prometheus" - - "--ping" - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/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 -# from. -service: - main: - enabled: true - type: LoadBalancer - ports: - main: - enabled: true - port: 9000 - protocol: HTTP - tcp: - enabled: true - type: LoadBalancer - ports: - web: - enabled: true - port: 9080 - protocol: HTTP - redirectTo: websecure - websecure: - enabled: true - port: 9443 - protocol: HTTPS -# tcpexample: -# enabled: true -# port: 9443 -# protocol: TCP -# tls: -# enabled: false -# # this is the name of a TLSOption definition -# options: "" -# certResolver: "" -# domains: [] -# # - main: example.com -# # sans: -# # - foo.example.com -# # - bar.example.com - metrics: - enabled: true - type: LoadBalancer - ports: - metrics: - enabled: true - port: 9100 - protocol: HTTP - udp: - enabled: false - - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - - # -- Startup probe configuration - # @default -- See below - startup: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: HTTP - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - path: "/ping" - - -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - enabled: true - rules: - - apiGroups: - - "" - resources: - - services - - endpoints - - secrets - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - - ingressclasses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.containo.us - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - verbs: - - get - - list - - watch - - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - enabled: true - # If set, an existing service account is used - # If not set, a service account is created automatically using the fullname template - name: "" - -# -- 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: 568 - runAsNonRoot: true - runAsUser: 568 - -podSecurityContext: - fsGroup: 568 - -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - chain: [] - # name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # scheme: https - # permanent: true - rateLimit: [] - # average: 300 - # burst: 200 - -portalhook: - enabled: true diff --git a/stable/traefik/7.0.1/values.yaml b/stable/traefik/7.0.1/values.yaml deleted file mode 100644 index e69de29bb2d..00000000000