From cb2611ddf8d9eaaafd611f84c842be045044106a Mon Sep 17 00:00:00 2001 From: Kjeld Schouten Date: Thu, 9 Oct 2025 17:33:44 +0200 Subject: [PATCH] remove archive --- archive/DEVTRIGGER | 0 archive/README.md | 3 - archive/charts/premium/prometheus/.helmignore | 32 - .../charts/premium/prometheus/CHANGELOG.md | 2564 --- archive/charts/premium/prometheus/Chart.yaml | 45 - archive/charts/premium/prometheus/README.md | 50 - .../charts/premium/prometheus/icon-small.webp | Bin 684 -> 0 bytes archive/charts/premium/prometheus/icon.webp | Bin 4236 -> 0 bytes .../premium/prometheus/templates/NOTES.txt | 1 - .../premium/prometheus/templates/_helpers.tpl | 210 - .../templates/alertmanager/_alertmanager.tpl | 174 - .../templates/alertmanager/secrets.yaml | 13 - .../alertmanager/serviceaccount.yaml | 12 - .../alertmanager/servicemonitor.yaml | 26 - .../premium/prometheus/templates/common.yaml | 13 - .../prometheus/_additionalPrometheusRules.tpl | 15 - .../prometheus/_additionalScrapeJobs.tpl | 13 - .../templates/prometheus/_prometheus.tpl | 366 - .../templates/prometheus/_servicemonitor.tpl | 29 - .../templates/prometheus/clusterrole.yaml | 41 - .../prometheus/clusterrolebinding.yaml | 15 - .../templates/prometheus/serviceaccount.yaml | 12 - archive/charts/premium/prometheus/values.yaml | 1260 -- archive/charts/premium/traefik/.helmignore | 32 - archive/charts/premium/traefik/CHANGELOG.md | 1537 -- archive/charts/premium/traefik/Chart.yaml | 38 - archive/charts/premium/traefik/README.md | 50 - .../charts/premium/traefik/ci/ci-values.yaml | 9 - archive/charts/premium/traefik/dashboard.json | 1577 -- .../docs/Authelia-LLDAP-forwardauth.md | 5 - .../traefik/docs/custom-header-middlewares.md | 13 - .../premium/traefik/docs/img/BasicAuth.png | Bin 47546 -> 0 bytes .../traefik/docs/img/BasicAuthWorking.png | Bin 10191 -> 0 bytes .../docs/img/ConfigureTraefikMiddlewares.png | Bin 11180 -> 0 bytes .../traefik/docs/img/IngressEnabled.png | Bin 8476 -> 0 bytes .../docs/img/traefik-regex-redirect-app.png | Bin 10847 -> 0 bytes .../img/traefik-regex-redirect-fields.png | Bin 28423 -> 0 bytes .../traefik/docs/img/traefik-theme-after.png | Bin 65968 -> 0 bytes .../traefik/docs/img/traefik-theme-app.png | Bin 14618 -> 0 bytes .../traefik/docs/img/traefik-theme-before.png | Bin 52201 -> 0 bytes .../traefik/docs/img/traefik-theme-fields.png | Bin 40208 -> 0 bytes .../traefik/docs/redirect-regex-middleware.md | 44 - .../traefik/docs/theme-park-middleware.md | 55 - .../docs/traefik-basicAuth-middleware.md | 55 - .../charts/premium/traefik/icon-small.webp | Bin 610 -> 0 bytes archive/charts/premium/traefik/icon.webp | Bin 3696 -> 0 bytes .../premium/traefik/templates/NOTES.txt | 1 - .../premium/traefik/templates/_args.tpl | 203 - .../premium/traefik/templates/_helpers.tpl | 22 - .../traefik/templates/_ingressclass.tpl | 24 - .../traefik/templates/_ingressroute.tpl | 34 - .../premium/traefik/templates/_portalhook.tpl | 24 - .../premium/traefik/templates/_tlsoptions.tpl | 13 - .../premium/traefik/templates/_tlsstore.tpl | 26 - .../premium/traefik/templates/common.yaml | 16 - .../templates/middlewares/addPrefix.yaml | 12 - .../middlewares/basic-middleware.yaml | 57 - .../templates/middlewares/basicauth.yaml | 30 - .../templates/middlewares/bouncer.yaml | 112 - .../templates/middlewares/buffering.yaml | 26 - .../traefik/templates/middlewares/chain.yaml | 21 - .../middlewares/customFrameOptionsValue.yaml | 12 - .../middlewares/customRequestHeaders.yaml | 15 - .../middlewares/customResponseHeaders.yaml | 15 - .../templates/middlewares/forwardauth.yaml | 29 - .../templates/middlewares/geoblock.yaml | 29 - .../templates/middlewares/ipwhitelist.yaml | 27 - .../templates/middlewares/modsecurity.yaml | 14 - .../templates/middlewares/ratelimit.yaml | 13 - .../templates/middlewares/real-ip.yaml | 15 - .../templates/middlewares/redirectScheme.yaml | 13 - .../templates/middlewares/redirectregex.yaml | 14 - .../middlewares/rewriteResponseHeaders.yaml | 17 - .../middlewares/stripPrefixRegex.yaml | 14 - .../templates/middlewares/tc-chains.yaml | 24 - .../templates/middlewares/tc-headers.yaml | 55 - .../templates/middlewares/tc-nextcloud.yaml | 20 - .../templates/middlewares/theme-park.yaml | 20 - archive/charts/premium/traefik/values.yaml | 776 - .../automatic-music-downloader/.helmignore | 32 - .../automatic-music-downloader/CHANGELOG.md | 547 - .../automatic-music-downloader/Chart.yaml | 38 - .../automatic-music-downloader/README.md | 61 - .../icon-small.webp | Bin 668 -> 0 bytes .../automatic-music-downloader/icon.webp | Bin 2774 -> 0 bytes .../templates/NOTES.txt | 1 - .../templates/common.yaml | 1 - .../automatic-music-downloader/values.yaml | 66 - archive/charts/stable/ethercalc/.helmignore | 32 - archive/charts/stable/ethercalc/CHANGELOG.md | 544 - archive/charts/stable/ethercalc/Chart.yaml | 41 - archive/charts/stable/ethercalc/README.md | 50 - .../charts/stable/ethercalc/icon-small.webp | Bin 382 -> 0 bytes archive/charts/stable/ethercalc/icon.webp | Bin 1344 -> 0 bytes .../stable/ethercalc/templates/common.yaml | 2 - archive/charts/stable/ethercalc/values.yaml | 26 - archive/charts/stable/freeradius/.helmignore | 32 - archive/charts/stable/freeradius/CHANGELOG.md | 1258 -- archive/charts/stable/freeradius/Chart.yaml | 36 - archive/charts/stable/freeradius/README.md | 61 - .../charts/stable/freeradius/icon-small.webp | Bin 776 -> 0 bytes archive/charts/stable/freeradius/icon.webp | Bin 4534 -> 0 bytes .../stable/freeradius/templates/NOTES.txt | 1 - .../stable/freeradius/templates/common.yaml | 5 - archive/charts/stable/freeradius/values.yaml | 44 - archive/charts/stable/libremdb/.helmignore | 32 - archive/charts/stable/libremdb/CHANGELOG.md | 1 - archive/charts/stable/libremdb/Chart.yaml | 45 - archive/charts/stable/libremdb/README.md | 61 - .../charts/stable/libremdb/icon-small.webp | Bin 566 -> 0 bytes archive/charts/stable/libremdb/icon.webp | Bin 2996 -> 0 bytes .../stable/libremdb/templates/NOTES.txt | 1 - .../stable/libremdb/templates/common.yaml | 1 - archive/charts/stable/libremdb/values.yaml | 38 - .../stable/logitech-media-server/.helmignore | 32 - .../stable/logitech-media-server/CHANGELOG.md | 1717 -- .../stable/logitech-media-server/Chart.yaml | 41 - .../stable/logitech-media-server/README.md | 50 - .../logitech-media-server/icon-small.webp | Bin 574 -> 0 bytes .../stable/logitech-media-server/icon.webp | Bin 2260 -> 0 bytes .../logitech-media-server/templates/NOTES.txt | 1 - .../templates/common.yaml | 1 - .../stable/logitech-media-server/values.yaml | 49 - archive/charts/stable/matomo/.helmignore | 32 - archive/charts/stable/matomo/CHANGELOG.md | 1544 -- archive/charts/stable/matomo/Chart.yaml | 46 - archive/charts/stable/matomo/README.md | 50 - archive/charts/stable/matomo/icon-small.webp | Bin 354 -> 0 bytes archive/charts/stable/matomo/icon.webp | Bin 1734 -> 0 bytes .../charts/stable/matomo/templates/NOTES.txt | 1 - .../stable/matomo/templates/common.yaml | 1 - archive/charts/stable/matomo/values.yaml | 89 - archive/charts/stable/readarr/.helmignore | 32 - archive/charts/stable/readarr/CHANGELOG.md | 1636 -- archive/charts/stable/readarr/Chart.yaml | 45 - archive/charts/stable/readarr/README.md | 50 - .../stable/readarr/ci/default-values.yaml | 3 - .../readarr/ci/disabledmetrics-values.yaml | 9 - archive/charts/stable/readarr/icon-small.webp | Bin 686 -> 0 bytes archive/charts/stable/readarr/icon.webp | Bin 4742 -> 0 bytes .../charts/stable/readarr/templates/NOTES.txt | 1 - .../stable/readarr/templates/common.yaml | 1 - archive/charts/stable/readarr/values.yaml | 103 - archive/charts/stable/rimgo/.helmignore | 32 - archive/charts/stable/rimgo/CHANGELOG.md | 1039 -- archive/charts/stable/rimgo/Chart.yaml | 35 - archive/charts/stable/rimgo/README.md | 61 - archive/charts/stable/rimgo/icon-small.webp | Bin 220 -> 0 bytes archive/charts/stable/rimgo/icon.webp | Bin 486 -> 0 bytes .../charts/stable/rimgo/templates/NOTES.txt | 1 - .../charts/stable/rimgo/templates/common.yaml | 2 - archive/charts/stable/rimgo/values.yaml | 30 - archive/charts/stable/riven/.helmignore | 32 - archive/charts/stable/riven/CHANGELOG.md | 0 archive/charts/stable/riven/Chart.yaml | 37 - archive/charts/stable/riven/README.md | 50 - archive/charts/stable/riven/icon-small.webp | Bin 278 -> 0 bytes archive/charts/stable/riven/icon.webp | Bin 2156 -> 0 bytes .../charts/stable/riven/templates/NOTES.txt | 1 - .../charts/stable/riven/templates/common.yaml | 2 - archive/charts/stable/riven/values.yaml | 117 - archive/charts/stable/solr/.helmignore | 32 - archive/charts/stable/solr/CHANGELOG.md | 809 - archive/charts/stable/solr/Chart.yaml | 40 - archive/charts/stable/solr/README.md | 50 - .../charts/stable/solr/ci/basic-values.yaml | 1 - archive/charts/stable/solr/icon-small.webp | Bin 696 -> 0 bytes archive/charts/stable/solr/icon.webp | Bin 4500 -> 0 bytes .../charts/stable/solr/templates/NOTES.txt | 1 - .../charts/stable/solr/templates/common.yaml | 2 - archive/charts/stable/solr/values.yaml | 106 - archive/charts/stable/youtransfer/.helmignore | 32 - .../charts/stable/youtransfer/CHANGELOG.md | 512 - archive/charts/stable/youtransfer/Chart.yaml | 40 - archive/charts/stable/youtransfer/README.md | 50 - .../charts/stable/youtransfer/icon-small.webp | Bin 234 -> 0 bytes archive/charts/stable/youtransfer/icon.webp | Bin 2516 -> 0 bytes .../stable/youtransfer/templates/NOTES.txt | 1 - .../stable/youtransfer/templates/common.yaml | 2 - archive/charts/stable/youtransfer/values.yaml | 31 - .../charts/system/cert-manager/.helmignore | 32 - archive/charts/system/cert-manager/Chart.yaml | 45 - archive/charts/system/cert-manager/README.md | 50 - .../charts/system/cert-manager/dashboard.json | 1254 -- .../system/cert-manager/icon-small.webp | Bin 818 -> 0 bytes archive/charts/system/cert-manager/icon.webp | Bin 6122 -> 0 bytes .../system/cert-manager/templates/NOTES.txt | 1 - .../system/cert-manager/templates/common.yaml | 5 - .../charts/system/cert-manager/values.yaml | 41 - .../charts/system/cloudnative-pg/.helmignore | 32 - .../charts/system/cloudnative-pg/Chart.yaml | 45 - .../charts/system/cloudnative-pg/README.md | 61 - .../system/cloudnative-pg/icon-small.webp | Bin 556 -> 0 bytes .../charts/system/cloudnative-pg/icon.webp | Bin 3296 -> 0 bytes .../system/cloudnative-pg/templates/NOTES.txt | 1 - .../cloudnative-pg/templates/common.yaml | 9 - .../charts/system/cloudnative-pg/values.yaml | 37 - .../charts/system/csi-driver-nfs/.helmignore | 32 - .../charts/system/csi-driver-nfs/Chart.yaml | 45 - .../charts/system/csi-driver-nfs/README.md | 61 - .../system/csi-driver-nfs/icon-small.webp | Bin 584 -> 0 bytes .../charts/system/csi-driver-nfs/icon.webp | Bin 2856 -> 0 bytes .../system/csi-driver-nfs/templates/NOTES.txt | 1 - .../csi-driver-nfs/templates/common.yaml | 5 - .../charts/system/csi-driver-nfs/values.yaml | 20 - .../charts/system/csi-driver-smb/.helmignore | 32 - .../charts/system/csi-driver-smb/Chart.yaml | 45 - .../charts/system/csi-driver-smb/README.md | 61 - .../system/csi-driver-smb/icon-small.webp | Bin 584 -> 0 bytes .../charts/system/csi-driver-smb/icon.webp | Bin 2856 -> 0 bytes .../system/csi-driver-smb/templates/NOTES.txt | 1 - .../csi-driver-smb/templates/common.yaml | 5 - .../charts/system/csi-driver-smb/values.yaml | 20 - archive/charts/system/descheduler/.helmignore | 32 - archive/charts/system/descheduler/Chart.yaml | 44 - archive/charts/system/descheduler/README.md | 61 - .../charts/system/descheduler/icon-small.webp | Bin 556 -> 0 bytes archive/charts/system/descheduler/icon.webp | Bin 3732 -> 0 bytes .../system/descheduler/templates/NOTES.txt | 1 - .../system/descheduler/templates/common.yaml | 5 - archive/charts/system/descheduler/values.yaml | 25 - .../intel-device-plugins-operator/.helmignore | 32 - .../intel-device-plugins-operator/Chart.yaml | 44 - .../intel-device-plugins-operator/README.md | 61 - .../icon-small.webp | Bin 556 -> 0 bytes .../intel-device-plugins-operator/icon.webp | Bin 3732 -> 0 bytes .../templates/NOTES.txt | 1 - .../templates/common.yaml | 5 - .../intel-device-plugins-operator/values.yaml | 25 - archive/charts/system/kubeapps/.helmignore | 32 - archive/charts/system/kubeapps/Chart.yaml | 44 - archive/charts/system/kubeapps/README.md | 61 - archive/charts/system/kubeapps/docs/token.md | 5 - .../charts/system/kubeapps/icon-small.webp | Bin 686 -> 0 bytes archive/charts/system/kubeapps/icon.webp | Bin 4424 -> 0 bytes .../system/kubeapps/templates/NOTES.txt | 5 - .../system/kubeapps/templates/common.yaml | 19 - archive/charts/system/kubeapps/values.yaml | 113 - archive/charts/system/metallb/.helmignore | 32 - archive/charts/system/metallb/Chart.yaml | 44 - archive/charts/system/metallb/README.md | 61 - archive/charts/system/metallb/icon-small.webp | Bin 556 -> 0 bytes archive/charts/system/metallb/icon.webp | Bin 3732 -> 0 bytes .../charts/system/metallb/templates/NOTES.txt | 1 - .../system/metallb/templates/common.yaml | 5 - archive/charts/system/metallb/values.yaml | 25 - .../charts/system/metrics-server/.helmignore | 32 - .../charts/system/metrics-server/Chart.yaml | 44 - .../charts/system/metrics-server/README.md | 61 - .../system/metrics-server/icon-small.webp | Bin 556 -> 0 bytes .../charts/system/metrics-server/icon.webp | Bin 3732 -> 0 bytes .../system/metrics-server/templates/NOTES.txt | 1 - .../metrics-server/templates/common.yaml | 5 - .../charts/system/metrics-server/values.yaml | 25 - .../system/node-feature-discovery/.helmignore | 32 - .../system/node-feature-discovery/Chart.yaml | 44 - .../system/node-feature-discovery/README.md | 61 - .../node-feature-discovery/icon-small.webp | Bin 556 -> 0 bytes .../system/node-feature-discovery/icon.webp | Bin 3732 -> 0 bytes .../templates/NOTES.txt | 1 - .../templates/common.yaml | 5 - .../system/node-feature-discovery/values.yaml | 25 - .../system/nvidia-device-plugin/.helmignore | 32 - .../system/nvidia-device-plugin/Chart.yaml | 45 - .../system/nvidia-device-plugin/README.md | 61 - .../nvidia-device-plugin/docs/installation.md | 107 - .../nvidia-device-plugin/icon-small.webp | Bin 430 -> 0 bytes .../system/nvidia-device-plugin/icon.webp | Bin 3286 -> 0 bytes .../nvidia-device-plugin/templates/NOTES.txt | 1 - .../templates/common.yaml | 5 - .../system/nvidia-device-plugin/values.yaml | 38 - .../system/nvidia-gpu-operator/.helmignore | 32 - .../system/nvidia-gpu-operator/Chart.yaml | 44 - .../system/nvidia-gpu-operator/README.md | 61 - .../nvidia-gpu-operator/icon-small.webp | Bin 556 -> 0 bytes .../system/nvidia-gpu-operator/icon.webp | Bin 3732 -> 0 bytes .../nvidia-gpu-operator/templates/NOTES.txt | 1 - .../nvidia-gpu-operator/templates/common.yaml | 5 - .../system/nvidia-gpu-operator/values.yaml | 25 - archive/charts/system/openebs/.helmignore | 32 - archive/charts/system/openebs/Chart.yaml | 44 - archive/charts/system/openebs/README.md | 61 - archive/charts/system/openebs/icon-small.webp | Bin 698 -> 0 bytes archive/charts/system/openebs/icon.webp | Bin 5462 -> 0 bytes .../charts/system/openebs/templates/NOTES.txt | 1 - .../system/openebs/templates/common.yaml | 5 - archive/charts/system/openebs/values.yaml | 141 - .../system/prometheus-operator/.helmignore | 32 - .../system/prometheus-operator/Chart.yaml | 44 - .../system/prometheus-operator/README.md | 50 - .../prometheus-operator/icon-small.webp | Bin 540 -> 0 bytes .../system/prometheus-operator/icon.webp | Bin 2894 -> 0 bytes .../prometheus-operator/templates/NOTES.txt | 1 - .../prometheus-operator/templates/common.yaml | 4 - .../system/prometheus-operator/values.yaml | 146 - .../charts/system/traefik-crds/.helmignore | 32 - archive/charts/system/traefik-crds/Chart.yaml | 41 - archive/charts/system/traefik-crds/README.md | 50 - .../traefik-crds/charts/common-25.4.10.tgz | Bin 100673 -> 0 bytes .../charts/system/traefik-crds/dashboard.json | 1568 -- .../system/traefik-crds/icon-small.webp | Bin 610 -> 0 bytes archive/charts/system/traefik-crds/icon.webp | Bin 3696 -> 0 bytes .../system/traefik-crds/templates/NOTES.txt | 1 - .../system/traefik-crds/templates/common.yaml | 5 - .../crds/gateway-standard-install-v1.1.0.yaml | 13386 ---------------- .../hub.traefik.io_accesscontrolpolicies.yaml | 368 - .../crds/hub.traefik.io_apiaccesses.yaml | 188 - .../crds/hub.traefik.io_apibundles.yaml | 125 - .../crds/hub.traefik.io_apiplans.yaml | 103 - .../crds/hub.traefik.io_apiportals.yaml | 139 - .../crds/hub.traefik.io_apiratelimits.yaml | 166 - .../templates/crds/hub.traefik.io_apis.yaml | 190 - .../crds/hub.traefik.io_apiversions.yaml | 194 - .../crds/traefik.io_ingressroutes.yaml | 366 - .../crds/traefik.io_ingressroutetcps.yaml | 247 - .../crds/traefik.io_ingressrouteudps.yaml | 111 - .../crds/traefik.io_middlewares.yaml | 1098 -- .../crds/traefik.io_middlewaretcps.yaml | 87 - .../crds/traefik.io_serverstransports.yaml | 139 - .../crds/traefik.io_serverstransporttcps.yaml | 120 - .../templates/crds/traefik.io_tlsoptions.yaml | 114 - .../templates/crds/traefik.io_tlsstores.yaml | 97 - .../crds/traefik.io_traefikservices.yaml | 639 - .../charts/system/traefik-crds/values.yaml | 15 - .../main/kubernetes/apps/kustomization.yaml | 3 - .../clusters/main/kubernetes/flux-entry.yaml | 41 - .../main/kubernetes/kustomization.yaml | 4 - archive/clustertool/.gitignore | 29 - archive/clustertool/.goreleaser.yaml | 94 - archive/clustertool/.vscode/extensions.json | 23 - archive/clustertool/.vscode/settings.json | 3 - archive/clustertool/.vscode/tasks.json | 22 - archive/clustertool/DEVTRIGGER | 0 archive/clustertool/README.md | 33 - archive/clustertool/changelog.tmpl | 18 - archive/clustertool/clustertool.LICENSE | 106 - archive/clustertool/cmd/adv.go | 25 - archive/clustertool/cmd/adv_gentooldocs.go | 35 - archive/clustertool/cmd/adv_precommit.go | 31 - archive/clustertool/cmd/adv_testcmd.go | 50 - archive/clustertool/cmd/charts.go | 30 - archive/clustertool/cmd/charts_bump.go | 30 - archive/clustertool/cmd/charts_deps.go | 36 - .../clustertool/cmd/charts_genchangelog.go | 46 - .../clustertool/cmd/charts_genchartlist.go | 41 - archive/clustertool/cmd/charts_genmeta.go | 44 - archive/clustertool/cmd/charts_tagclean.go | 32 - archive/clustertool/cmd/checkcrypt.go | 35 - archive/clustertool/cmd/decrypt.go | 31 - archive/clustertool/cmd/encrypt.go | 31 - archive/clustertool/cmd/flux.go | 25 - archive/clustertool/cmd/flux_bootstrap.go | 36 - archive/clustertool/cmd/genconfig.go | 32 - archive/clustertool/cmd/helmrelease.go | 25 - .../clustertool/cmd/helmrelease_install.go | 44 - .../clustertool/cmd/helmrelease_upgrade.go | 45 - archive/clustertool/cmd/info.go | 35 - archive/clustertool/cmd/init.go | 35 - archive/clustertool/cmd/root.go | 47 - archive/clustertool/cmd/talos.go | 25 - archive/clustertool/cmd/talos_apply.go | 123 - archive/clustertool/cmd/talos_bootstrap.go | 38 - archive/clustertool/cmd/talos_health.go | 38 - archive/clustertool/cmd/talos_kubeconfig.go | 52 - archive/clustertool/cmd/talos_reset.go | 53 - archive/clustertool/cmd/talos_upgrade.go | 66 - archive/clustertool/cspell.config.yaml | 17 - archive/clustertool/embed/.gitignore | 4 - .../clustertool/embed/download_talosctl.sh | 66 - archive/clustertool/embed/embed.go | 107 - .../clustertool/embed/embedDarwin_amd64.go | 11 - .../clustertool/embed/embedDarwin_arm64.go | 11 - archive/clustertool/embed/embedLinux_amd64.go | 11 - archive/clustertool/embed/embedLinux_arm64.go | 11 - .../clustertool/embed/embedWindows_amd64.go | 11 - .../clustertool/embed/embedWindows_arm64.go | 11 - .../embed/generic/base/DOTREPLACEgitignore | 15 - .../embed/generic/base/clusterenv.yaml | 37 - .../embed/generic/base/talos/talconfig.yaml | 105 - .../app/helm-release.yaml | 42 - .../kubernetes-dashboard/app/namespace.yaml | 6 - .../core/blocky/app/helm-release.yaml | 76 - .../kubernetes/core/blocky/app/namespace.yaml | 4 - .../core/clusterissuer/app/helm-release.yaml | 67 - .../core/clusterissuer/app/namespace.yaml | 4 - .../core/metallb-config/app/helm-release.yaml | 42 - .../core/metallb-config/app/namespace.yaml | 6 - .../app/kubernetes.yaml | 43 - .../app/kustomization.yaml | 8 - .../app/talos.yaml | 44 - .../embed/generic/kubernetes/flux-entry.yaml | 43 - .../flux-system/flux/bootstrap.yaml.ct | 62 - .../flux/clustersettings.secret.yaml | 7 - .../kubernetes/flux-system/flux/flux.yaml | 87 - .../flux-system/flux/kustomization.yaml | 11 - .../flux-system/flux/namespace.yaml | 7 - .../flux-system/flux/upgradesettings.yaml | 10 - .../cilium/app/bootstrap-values.yaml.ct | 3 - .../kube-system/cilium/app/helm-release.yaml | 80 - .../descheduler/app/bootstrap-values.yaml.ct | 3 - .../descheduler/app/helm-release.yaml | 76 - .../app/bootstrap-values.yaml.ct | 3 - .../app/helm-release.yaml | 18 - .../metrics-server/app/helm-release.yaml | 31 - .../kubernetes/kube-system/namespace.yaml | 6 - .../app/helm-release.yaml | 34 - .../nginx-external/app/helm-release.yaml | 84 - .../nginx-external/app/namespace.yaml | 4 - .../nginx-internal/app/helm-release.yaml | 84 - .../nginx-internal/app/namespace.yaml | 4 - .../system/cert-manager/app/helm-release.yaml | 31 - .../cloudnative-pg/app/helm-release.yaml | 33 - .../app/alertmanagerconfig.yaml | 86 - .../app/helm-release.yaml | 113 - .../app/kustomization.yaml | 7 - .../kube-prometheus-stack/app/namespace.yaml | 6 - .../app/helm-release.yaml | 31 - .../system/longhorn/app/helm-release.yaml | 37 - .../system/longhorn/app/namespace.yaml | 6 - .../longhorn/app/volumeSnapshotClass.yaml | 11 - .../system/metallb/app/helm-release.yaml | 26 - .../system/metallb/app/namespace.yaml | 6 - .../system/openebs/app/helm-release.yaml | 49 - .../system/openebs/app/namespace.yaml | 6 - .../snapshot-controller/app/helm-release.yaml | 27 - .../system/spegel/app/helm-release.yaml | 26 - .../system/spegel/app/namespace.yaml | 6 - .../app/helm-release.yaml | 104 - .../app/kustomization.yaml | 8 - .../app/namespace.yaml | 9 - .../system-upgrade-controller/app/rbac.yaml | 22 - .../system/volsync/app/helm-release.yaml | 23 - .../system/volsync/app/namespace.yaml | 6 - .../embed/generic/patches/all.yaml | 95 - .../embed/generic/patches/controlplane.yaml | 56 - .../embed/generic/patches/nvidia.yaml | 9 - .../embed/generic/patches/worker.yaml | 5 - .../DOTREPLACEdevcontainer/devcontainer.json | 14 - .../postCreateCommand.sh | 32 - .../root/DOTREPLACEgithub/renovate.json5 | 7 - .../DOTREPLACEgithub/workflows/automerge.yaml | 23 - .../workflows/placeholder.yaml | 19 - .../embed/generic/root/DOTREPLACEgitignore | 11 - .../embed/generic/root/DOTREPLACEsops.yaml | 13 - .../root/DOTREPLACEvscode/extensions.json | 18 - .../root/DOTREPLACEvscode/settings.json | 16 - .../clustertool/embed/generic/root/README.md | 1 - .../repositories/entries/kustomization.yaml | 5 - .../generic/root/repositories/flux-entry.yaml | 41 - .../root/repositories/git/kustomization.yaml | 7 - .../root/repositories/git/this-repo.yaml | 20 - .../root/repositories/git/truecharts.yaml | 19 - .../generic/root/repositories/helm/bjw-s.yaml | 11 - .../repositories/helm/cloudnative-pg.yaml | 11 - .../repositories/helm/home-ops-mirror.yaml | 11 - .../root/repositories/helm/jetstack.yaml | 11 - .../root/repositories/helm/kustomization.yaml | 17 - .../root/repositories/helm/metallb.yaml | 11 - .../helm/node-feature-discovery.yaml | 11 - .../helm/prometheus-community.yaml | 11 - .../root/repositories/helm/spegel.yaml | 11 - .../root/repositories/helm/truecharts.yaml | 11 - .../root/repositories/kustomization.yaml | 9 - .../root/repositories/oci/flux-manifests.yaml | 12 - .../root/repositories/oci/kustomization.yaml | 6 - archive/clustertool/fix.py | 63 - archive/clustertool/go.mod | 287 - archive/clustertool/go.sum | 845 - archive/clustertool/main.go | 80 - .../partial_builds/partial_build.sh | 40 - .../partial_builds/precommit/main.go | 15 - .../pkg/charts/changelog/active_charts.go | 60 - .../pkg/charts/changelog/changed_data.go | 187 - .../pkg/charts/changelog/changelog.go | 260 - .../pkg/charts/changelog/commit.go | 89 - .../clustertool/pkg/charts/changelog/patch.go | 155 - .../pkg/charts/changelog/render.go | 75 - .../clustertool/pkg/charts/changelog/utils.go | 154 - .../pkg/charts/chartFile/chart_file.go | 234 - .../pkg/charts/chartFile/chart_file_test.go | 621 - .../pkg/charts/chartFile/updater.go | 208 - .../pkg/charts/chartFile/updater_test.go | 230 - archive/clustertool/pkg/charts/deps/deps.go | 203 - .../pkg/charts/helmignore/helmignore.go | 30 - .../clustertool/pkg/charts/image/cleanup.go | 187 - .../pkg/charts/image/cleanup_test.go | 277 - archive/clustertool/pkg/charts/image/image.go | 146 - .../pkg/charts/image/image_test.go | 171 - archive/clustertool/pkg/charts/info/info.go | 61 - .../clustertool/pkg/charts/readme/readme.go | 35 - .../pkg/charts/valuesYaml/addonValues.go | 60 - .../valuesYaml/externalInterfaceValues.go | 36 - .../pkg/charts/valuesYaml/ingressValues.go | 59 - .../pkg/charts/valuesYaml/metricsValues.go | 16 - .../charts/valuesYaml/networkPolicyValues.go | 80 - .../pkg/charts/valuesYaml/parse.go | 113 - .../charts/valuesYaml/persistenceValues.go | 74 - .../pkg/charts/valuesYaml/podOptionsValues.go | 23 - .../pkg/charts/valuesYaml/resourceValues.go | 43 - .../valuesYaml/securityContextValues.go | 25 - .../pkg/charts/valuesYaml/serviceValues.go | 28 - .../pkg/charts/valuesYaml/updater.go | 44 - .../pkg/charts/valuesYaml/workloadValues.go | 53 - .../clustertool/pkg/charts/version/bump.go | 51 - .../pkg/charts/version/bump_test.go | 78 - .../clustertool/pkg/fluxhandler/bootstrap.go | 142 - archive/clustertool/pkg/fluxhandler/helm.go | 583 - .../pkg/fluxhandler/helmrelease.go | 207 - .../clustertool/pkg/fluxhandler/helmrepo.go | 76 - .../pkg/fluxhandler/kustomizations.go | 160 - .../pkg/fluxhandler/sshsecretgen.go | 203 - archive/clustertool/pkg/gencmd/apply.go | 43 - archive/clustertool/pkg/gencmd/bootstrap.go | 219 - archive/clustertool/pkg/gencmd/execcmd.go | 137 - archive/clustertool/pkg/gencmd/genconfig.go | 84 - archive/clustertool/pkg/gencmd/plain.go | 46 - archive/clustertool/pkg/gencmd/upgrade.go | 51 - archive/clustertool/pkg/helper/copy.go | 120 - archive/clustertool/pkg/helper/dns.go | 40 - archive/clustertool/pkg/helper/envsubst.go | 154 - archive/clustertool/pkg/helper/git.go | 344 - archive/clustertool/pkg/helper/helper.go | 117 - archive/clustertool/pkg/helper/marshaller.go | 31 - archive/clustertool/pkg/helper/netvalidate.go | 104 - archive/clustertool/pkg/helper/prompts.go | 35 - archive/clustertool/pkg/helper/replace.go | 96 - archive/clustertool/pkg/helper/runcmd.go | 59 - .../pkg/helper/talhelperextract.go | 78 - archive/clustertool/pkg/helper/time.go | 41 - archive/clustertool/pkg/helper/tooldocs.go | 182 - archive/clustertool/pkg/helper/var2file.go | 25 - archive/clustertool/pkg/helper/vars.go | 46 - archive/clustertool/pkg/helper/walker.go | 39 - archive/clustertool/pkg/helper/yamlutil.go | 48 - archive/clustertool/pkg/info/info.go | 61 - .../clustertool/pkg/initfiles/clusterenv.go | 319 - .../clustertool/pkg/initfiles/initfiles.go | 521 - archive/clustertool/pkg/kubectlcmds/apply.go | 178 - .../pkg/kubectlcmds/approvecerts.go | 98 - .../pkg/kubectlcmds/checkstatus.go | 96 - archive/clustertool/pkg/nodestatus/health.go | 114 - archive/clustertool/pkg/nodestatus/status.go | 97 - archive/clustertool/pkg/sops/checkencrypt.go | 304 - archive/clustertool/pkg/sops/decrypt.go | 135 - archive/clustertool/pkg/sops/encrypt.go | 141 - archive/clustertool/pkg/sops/loadsops.go | 54 - archive/clustertool/pkg/sops/wrapper.go | 191 - archive/clustertool/pkg/talassist/load.go | 76 - .../pkg/talhelperutil/extractfromtalconfig.go | 69 - .../testdata/chart_yaml/invalidChart.yaml | 20 - .../testdata/chart_yaml/malformedChart.yaml | 3 - .../chart_yaml/unmarshalableChart.yaml | 24 - .../testdata/chart_yaml/validChart.yaml | 20 - .../testdata/updater/stable/my-app/Chart.yaml | 0 .../testdata/values_yaml/emptyValues.yaml | 0 .../testdata/values_yaml/malformedValues.yaml | 1 - .../values_yaml/multiImageValues.yaml | 70 - .../values_yaml/singleImageValues.yaml | 3 - .../container-tools/.pre-commit-config.yaml | 11 - archive/container-tools/README.md | 48 - archive/container-tools/createmirror.sh | 25 - archive/container-tools/scarf.sh | 22 - archive/container-tools/to-mirror.sh | 11 - archive/container-tools/to-mirror.txt | 48 - archive/repositories/kustomization.yaml | 7 - archive/scripts/dockerhub.sh | 45 - archive/scripts/removereleases.py | 123 - archive/scripts/update-version-file.sh | 21 - archive/website/SCALE/SUPPORT.md | 92 - archive/website/SCALE/guides/add-storage.md | 74 - .../website/SCALE/guides/backup-restore.md | 127 - .../SCALE/guides/cnpg-migration-guide.md | 117 - archive/website/SCALE/guides/dataset.md | 91 - archive/website/SCALE/guides/image.png | Bin 14857 -> 0 bytes archive/website/SCALE/guides/linking-apps.md | 111 - archive/website/SCALE/guides/migration-pvc.md | 243 - archive/website/SCALE/guides/nfs-share.md | 63 - .../website/SCALE/guides/pci-passthrough.md | 25 - archive/website/SCALE/guides/pvc-access.md | 157 - .../website/SCALE/guides/questions-yaml.md | 250 - archive/website/SCALE/guides/recover-cnpg.md | 106 - archive/website/SCALE/guides/scale-intro.mdx | 195 - archive/website/SCALE/guides/sql-export.md | 59 - .../guides/truenas-web-gui-via-traefik.md | 26 - archive/website/SCALE/guides/vpn-setup.md | 182 - .../website/SCALE/img/volumesnapshotclass.png | Bin 58431 -> 0 bytes archive/website/SCALE/index.mdx | 138 - .../SCALE/migrations/cobia-dragonfish.mdx | 213 - .../SCALE/migrations/img/openebs-datasets.png | Bin 19893 -> 0 bytes .../SCALE/migrations/img/openebs-options.png | Bin 69425 -> 0 bytes archive/website/SCALE/migrations/index.md | 7 - archive/website/SCALE/systemrequirements.md | 43 - archive/website/SCALE/validation.md | 63 - .../migrations/img/AddNFSShare.png | Bin 53380 -> 0 bytes .../migrations/img/Adminer-Export.png | Bin 130058 -> 0 bytes .../migrations/img/Adminer-Import.png | Bin 105579 -> 0 bytes .../migrations/img/Adminer-Login.png | Bin 46406 -> 0 bytes .../migrations/img/Adminer-Login2.png | Bin 61020 -> 0 bytes .../migrations/img/AppShellStorageAdded.png | Bin 80850 -> 0 bytes .../clustertool/migrations/img/Apps.png | Bin 9629 -> 0 bytes .../clustertool/migrations/img/Apps2.png | Bin 4058 -> 0 bytes .../clustertool/migrations/img/Apps3.png | Bin 2743 -> 0 bytes .../clustertool/migrations/img/Apps4.png | Bin 3704 -> 0 bytes .../clustertool/migrations/img/Apps5.png | Bin 16594 -> 0 bytes .../clustertool/migrations/img/Apps6.png | Bin 29050 -> 0 bytes .../clustertool/migrations/img/Apps7.png | Bin 10421 -> 0 bytes .../migrations/img/BlankAddAppStorage.png | Bin 45730 -> 0 bytes .../migrations/img/Copy-App-Config.png | Bin 45184 -> 0 bytes .../migrations/img/CustomVPNprovider.png | Bin 45105 -> 0 bytes .../migrations/img/Dragonfish-Storage1.png | Bin 2863 -> 0 bytes .../migrations/img/Dragonfish-Storage2.png | Bin 31860 -> 0 bytes .../migrations/img/Dragonfish-Storage3.png | Bin 12730 -> 0 bytes .../migrations/img/Dragonfish-Storage4.png | Bin 3304 -> 0 bytes .../migrations/img/Dragonfish-Storage5.png | Bin 37764 -> 0 bytes .../migrations/img/Dragonfish-Storage5b.png | Bin 15352 -> 0 bytes .../migrations/img/Gluetun-Proxy1.png | Bin 52157 -> 0 bytes .../migrations/img/Gluetun-Proxy2.png | Bin 138413 -> 0 bytes .../migrations/img/Gluetun-Proxy3.png | Bin 98082 -> 0 bytes .../migrations/img/Gluetun-VPN1.png | Bin 78322 -> 0 bytes .../migrations/img/Gluetun-VPN2.png | Bin 76163 -> 0 bytes .../migrations/img/Gluetun-VPN3.png | Bin 166557 -> 0 bytes .../migrations/img/Gluetun-VPN4.png | Bin 37694 -> 0 bytes .../migrations/img/Gluetun-VPN5.png | Bin 21820 -> 0 bytes .../migrations/img/Gluetun-VPN6.png | Bin 15806 -> 0 bytes .../migrations/img/Gluetun-VPN7.png | Bin 22219 -> 0 bytes .../migrations/img/Gluetun-VPN8.png | Bin 12059 -> 0 bytes .../migrations/img/Gluetun-vpn-log-icon.png | Bin 93250 -> 0 bytes .../migrations/img/Gluetun-vpn-log.png | Bin 61586 -> 0 bytes .../migrations/img/HeavyScript-Backup.png | Bin 18132 -> 0 bytes .../migrations/img/HeavyScript-Main.png | Bin 20985 -> 0 bytes .../img/HeavyScript-Restore-List.png | Bin 43507 -> 0 bytes .../migrations/img/MariaDBenv1.png | Bin 490784 -> 0 bytes .../migrations/img/MariaDBenv2.png | Bin 483739 -> 0 bytes .../migrations/img/NFSAddAppStorageBlank.png | Bin 22126 -> 0 bytes .../migrations/img/NFSAddAppStorageFilled.png | Bin 38438 -> 0 bytes .../migrations/img/New-App-Config.png | Bin 117754 -> 0 bytes .../migrations/img/New-App-Finish.png | Bin 108792 -> 0 bytes .../migrations/img/OpenEBS-storage.png | Bin 45373 -> 0 bytes .../clustertool/migrations/img/OpenEBS.png | Bin 43135 -> 0 bytes .../migrations/img/Replication1.png | Bin 85719 -> 0 bytes .../migrations/img/Replication2.png | Bin 132427 -> 0 bytes .../migrations/img/Replication3.png | Bin 106536 -> 0 bytes .../clustertool/migrations/img/Sharesmain.png | Bin 135768 -> 0 bytes .../clustertool/migrations/img/StopAll.png | Bin 5925 -> 0 bytes .../migrations/img/app-storage.png | Bin 67588 -> 0 bytes .../img/cnpg-add-operator-train.png | Bin 22633 -> 0 bytes .../clustertool/migrations/img/cnpg-info.png | Bin 14491 -> 0 bytes .../migrations/img/cnpg-pgadmin-add.png | Bin 100368 -> 0 bytes .../migrations/img/cnpg-pgadmin-backup.png | Bin 96256 -> 0 bytes .../migrations/img/cnpg-pgadmin-creds.png | Bin 66106 -> 0 bytes .../migrations/img/cnpg-pgadmin-name.png | Bin 57834 -> 0 bytes .../migrations/img/cnpg-pgadmin-restore.png | Bin 101633 -> 0 bytes .../migrations/img/cnpg-pgadmin-restore2.png | Bin 44922 -> 0 bytes .../migrations/img/cnpg-pgadmin-restore3.png | Bin 69406 -> 0 bytes .../migrations/img/cnpg-pgadmin-restore4.png | Bin 79999 -> 0 bytes .../migrations/img/cnpg-pgadmin-save.png | Bin 51991 -> 0 bytes .../migrations/img/cnpg-scaled.png | Bin 48208 -> 0 bytes .../migrations/img/cnpg-shell-command.png | Bin 155018 -> 0 bytes .../clustertool/migrations/img/data-perms.png | Bin 53300 -> 0 bytes .../migrations/img/icons/authelia.png | Bin 17643 -> 0 bytes .../migrations/img/icons/blocky.png | Bin 16136 -> 0 bytes .../migrations/img/icons/cert-manager.png | Bin 22396 -> 0 bytes .../clustertool/migrations/img/icons/cnpg.png | Bin 13280 -> 0 bytes .../migrations/img/icons/metallb.png | Bin 7951 -> 0 bytes .../migrations/img/icons/openebs.png | Bin 4721 -> 0 bytes .../img/icons/prometheus-operator.png | Bin 15168 -> 0 bytes .../migrations/img/icons/traefik.png | Bin 21140 -> 0 bytes .../migrations/img/icons/traefik.webp | Bin 21352 -> 0 bytes .../clustertool/migrations/img/image.png | Bin 2545 -> 0 bytes .../clustertool/migrations/img/inotify.png | Bin 15293 -> 0 bytes .../migrations/img/nfs-share-cobia.png | Bin 39426 -> 0 bytes .../migrations/img/pgadminbackup.png | Bin 33870 -> 0 bytes .../migrations/img/pgadminbackupselect.png | Bin 59916 -> 0 bytes .../migrations/img/pgadminconnect.png | Bin 48005 -> 0 bytes .../migrations/img/pgadminrestore.png | Bin 57914 -> 0 bytes .../migrations/img/pgadminrestorepage1.png | Bin 29950 -> 0 bytes .../migrations/img/pgadminrestorepage2.png | Bin 43241 -> 0 bytes .../migrations/img/pgadminrestorepage3.png | Bin 51755 -> 0 bytes .../migrations/img/s3_scale_cnpg_backup.png | Bin 7432 -> 0 bytes .../migrations/img/s3_scale_credentials.png | Bin 21003 -> 0 bytes .../migrations/img/s3_scale_pvc_backup.png | Bin 14857 -> 0 bytes .../migrations/img/share-smb-cobia.png | Bin 42104 -> 0 bytes .../clustertool/migrations/img/smb-cli1.png | Bin 105031 -> 0 bytes .../clustertool/migrations/img/smb-cli2.png | Bin 3969 -> 0 bytes .../clustertool/migrations/img/tcdbinfo.png | Bin 38442 -> 0 bytes ...truenas-web-gui-via-traefik-screenshot.png | Bin 169413 -> 0 bytes .../migrations/img/user-groups.png | Bin 59283 -> 0 bytes .../migrations/img/velero-backup-verify.png | Bin 39017 -> 0 bytes .../migrations/img/velero-complete.png | Bin 150430 -> 0 bytes .../migrations/img/velero-create-disaster.png | Bin 5660 -> 0 bytes .../img/velero-minio-create-bucket-2.png | Bin 47918 -> 0 bytes .../img/velero-minio-create-bucket.png | Bin 46042 -> 0 bytes .../migrations/img/velero-restore.png | Bin 42302 -> 0 bytes .../migrations/img/volumesnapshotclass.png | Bin 58431 -> 0 bytes .../migrations/scale-config-only.md | 67 - .../website/clustertool/migrations/scale.md | 276 - .../workflows/clustertool.golangci-lint.yaml | 45 - archive/workflows/clustertool.release.yaml | 34 - archive/workflows/clustertool.tests.yaml | 64 - archive/workflows/containers.build.yaml | 369 - .../workflows/containers.housekeeping.yaml | 36 - archive/workflows/containers.scarf.yaml | 36 - archive/workflows/prune.yaml | 17 - 703 files changed, 64987 deletions(-) delete mode 100644 archive/DEVTRIGGER delete mode 100644 archive/README.md delete mode 100644 archive/charts/premium/prometheus/.helmignore delete mode 100644 archive/charts/premium/prometheus/CHANGELOG.md delete mode 100644 archive/charts/premium/prometheus/Chart.yaml delete mode 100644 archive/charts/premium/prometheus/README.md delete mode 100644 archive/charts/premium/prometheus/icon-small.webp delete mode 100644 archive/charts/premium/prometheus/icon.webp delete mode 100644 archive/charts/premium/prometheus/templates/NOTES.txt delete mode 100644 archive/charts/premium/prometheus/templates/_helpers.tpl delete mode 100644 archive/charts/premium/prometheus/templates/alertmanager/_alertmanager.tpl delete mode 100644 archive/charts/premium/prometheus/templates/alertmanager/secrets.yaml delete mode 100644 archive/charts/premium/prometheus/templates/alertmanager/serviceaccount.yaml delete mode 100644 archive/charts/premium/prometheus/templates/alertmanager/servicemonitor.yaml delete mode 100644 archive/charts/premium/prometheus/templates/common.yaml delete mode 100644 archive/charts/premium/prometheus/templates/prometheus/_additionalPrometheusRules.tpl delete mode 100644 archive/charts/premium/prometheus/templates/prometheus/_additionalScrapeJobs.tpl delete mode 100644 archive/charts/premium/prometheus/templates/prometheus/_prometheus.tpl delete mode 100644 archive/charts/premium/prometheus/templates/prometheus/_servicemonitor.tpl delete mode 100644 archive/charts/premium/prometheus/templates/prometheus/clusterrole.yaml delete mode 100644 archive/charts/premium/prometheus/templates/prometheus/clusterrolebinding.yaml delete mode 100644 archive/charts/premium/prometheus/templates/prometheus/serviceaccount.yaml delete mode 100644 archive/charts/premium/prometheus/values.yaml delete mode 100644 archive/charts/premium/traefik/.helmignore delete mode 100644 archive/charts/premium/traefik/CHANGELOG.md delete mode 100644 archive/charts/premium/traefik/Chart.yaml delete mode 100644 archive/charts/premium/traefik/README.md delete mode 100644 archive/charts/premium/traefik/ci/ci-values.yaml delete mode 100644 archive/charts/premium/traefik/dashboard.json delete mode 100644 archive/charts/premium/traefik/docs/Authelia-LLDAP-forwardauth.md delete mode 100644 archive/charts/premium/traefik/docs/custom-header-middlewares.md delete mode 100644 archive/charts/premium/traefik/docs/img/BasicAuth.png delete mode 100644 archive/charts/premium/traefik/docs/img/BasicAuthWorking.png delete mode 100644 archive/charts/premium/traefik/docs/img/ConfigureTraefikMiddlewares.png delete mode 100644 archive/charts/premium/traefik/docs/img/IngressEnabled.png delete mode 100644 archive/charts/premium/traefik/docs/img/traefik-regex-redirect-app.png delete mode 100644 archive/charts/premium/traefik/docs/img/traefik-regex-redirect-fields.png delete mode 100644 archive/charts/premium/traefik/docs/img/traefik-theme-after.png delete mode 100644 archive/charts/premium/traefik/docs/img/traefik-theme-app.png delete mode 100644 archive/charts/premium/traefik/docs/img/traefik-theme-before.png delete mode 100644 archive/charts/premium/traefik/docs/img/traefik-theme-fields.png delete mode 100644 archive/charts/premium/traefik/docs/redirect-regex-middleware.md delete mode 100644 archive/charts/premium/traefik/docs/theme-park-middleware.md delete mode 100644 archive/charts/premium/traefik/docs/traefik-basicAuth-middleware.md delete mode 100644 archive/charts/premium/traefik/icon-small.webp delete mode 100644 archive/charts/premium/traefik/icon.webp delete mode 100644 archive/charts/premium/traefik/templates/NOTES.txt delete mode 100644 archive/charts/premium/traefik/templates/_args.tpl delete mode 100644 archive/charts/premium/traefik/templates/_helpers.tpl delete mode 100644 archive/charts/premium/traefik/templates/_ingressclass.tpl delete mode 100644 archive/charts/premium/traefik/templates/_ingressroute.tpl delete mode 100644 archive/charts/premium/traefik/templates/_portalhook.tpl delete mode 100644 archive/charts/premium/traefik/templates/_tlsoptions.tpl delete mode 100644 archive/charts/premium/traefik/templates/_tlsstore.tpl delete mode 100644 archive/charts/premium/traefik/templates/common.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/addPrefix.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/basic-middleware.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/basicauth.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/bouncer.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/buffering.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/chain.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/customFrameOptionsValue.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/customRequestHeaders.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/customResponseHeaders.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/forwardauth.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/geoblock.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/ipwhitelist.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/modsecurity.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/ratelimit.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/real-ip.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/redirectScheme.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/redirectregex.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/rewriteResponseHeaders.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/stripPrefixRegex.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/tc-chains.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/tc-headers.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/tc-nextcloud.yaml delete mode 100644 archive/charts/premium/traefik/templates/middlewares/theme-park.yaml delete mode 100644 archive/charts/premium/traefik/values.yaml delete mode 100644 archive/charts/stable/automatic-music-downloader/.helmignore delete mode 100644 archive/charts/stable/automatic-music-downloader/CHANGELOG.md delete mode 100644 archive/charts/stable/automatic-music-downloader/Chart.yaml delete mode 100644 archive/charts/stable/automatic-music-downloader/README.md delete mode 100644 archive/charts/stable/automatic-music-downloader/icon-small.webp delete mode 100644 archive/charts/stable/automatic-music-downloader/icon.webp delete mode 100644 archive/charts/stable/automatic-music-downloader/templates/NOTES.txt delete mode 100644 archive/charts/stable/automatic-music-downloader/templates/common.yaml delete mode 100644 archive/charts/stable/automatic-music-downloader/values.yaml delete mode 100644 archive/charts/stable/ethercalc/.helmignore delete mode 100644 archive/charts/stable/ethercalc/CHANGELOG.md delete mode 100644 archive/charts/stable/ethercalc/Chart.yaml delete mode 100644 archive/charts/stable/ethercalc/README.md delete mode 100644 archive/charts/stable/ethercalc/icon-small.webp delete mode 100644 archive/charts/stable/ethercalc/icon.webp delete mode 100644 archive/charts/stable/ethercalc/templates/common.yaml delete mode 100644 archive/charts/stable/ethercalc/values.yaml delete mode 100644 archive/charts/stable/freeradius/.helmignore delete mode 100644 archive/charts/stable/freeradius/CHANGELOG.md delete mode 100644 archive/charts/stable/freeradius/Chart.yaml delete mode 100644 archive/charts/stable/freeradius/README.md delete mode 100644 archive/charts/stable/freeradius/icon-small.webp delete mode 100644 archive/charts/stable/freeradius/icon.webp delete mode 100644 archive/charts/stable/freeradius/templates/NOTES.txt delete mode 100644 archive/charts/stable/freeradius/templates/common.yaml delete mode 100644 archive/charts/stable/freeradius/values.yaml delete mode 100644 archive/charts/stable/libremdb/.helmignore delete mode 100644 archive/charts/stable/libremdb/CHANGELOG.md delete mode 100644 archive/charts/stable/libremdb/Chart.yaml delete mode 100644 archive/charts/stable/libremdb/README.md delete mode 100644 archive/charts/stable/libremdb/icon-small.webp delete mode 100644 archive/charts/stable/libremdb/icon.webp delete mode 100644 archive/charts/stable/libremdb/templates/NOTES.txt delete mode 100644 archive/charts/stable/libremdb/templates/common.yaml delete mode 100644 archive/charts/stable/libremdb/values.yaml delete mode 100644 archive/charts/stable/logitech-media-server/.helmignore delete mode 100644 archive/charts/stable/logitech-media-server/CHANGELOG.md delete mode 100644 archive/charts/stable/logitech-media-server/Chart.yaml delete mode 100644 archive/charts/stable/logitech-media-server/README.md delete mode 100644 archive/charts/stable/logitech-media-server/icon-small.webp delete mode 100644 archive/charts/stable/logitech-media-server/icon.webp delete mode 100644 archive/charts/stable/logitech-media-server/templates/NOTES.txt delete mode 100644 archive/charts/stable/logitech-media-server/templates/common.yaml delete mode 100644 archive/charts/stable/logitech-media-server/values.yaml delete mode 100644 archive/charts/stable/matomo/.helmignore delete mode 100644 archive/charts/stable/matomo/CHANGELOG.md delete mode 100644 archive/charts/stable/matomo/Chart.yaml delete mode 100644 archive/charts/stable/matomo/README.md delete mode 100644 archive/charts/stable/matomo/icon-small.webp delete mode 100644 archive/charts/stable/matomo/icon.webp delete mode 100644 archive/charts/stable/matomo/templates/NOTES.txt delete mode 100644 archive/charts/stable/matomo/templates/common.yaml delete mode 100644 archive/charts/stable/matomo/values.yaml delete mode 100644 archive/charts/stable/readarr/.helmignore delete mode 100644 archive/charts/stable/readarr/CHANGELOG.md delete mode 100644 archive/charts/stable/readarr/Chart.yaml delete mode 100644 archive/charts/stable/readarr/README.md delete mode 100644 archive/charts/stable/readarr/ci/default-values.yaml delete mode 100644 archive/charts/stable/readarr/ci/disabledmetrics-values.yaml delete mode 100644 archive/charts/stable/readarr/icon-small.webp delete mode 100644 archive/charts/stable/readarr/icon.webp delete mode 100644 archive/charts/stable/readarr/templates/NOTES.txt delete mode 100644 archive/charts/stable/readarr/templates/common.yaml delete mode 100644 archive/charts/stable/readarr/values.yaml delete mode 100644 archive/charts/stable/rimgo/.helmignore delete mode 100644 archive/charts/stable/rimgo/CHANGELOG.md delete mode 100644 archive/charts/stable/rimgo/Chart.yaml delete mode 100644 archive/charts/stable/rimgo/README.md delete mode 100644 archive/charts/stable/rimgo/icon-small.webp delete mode 100644 archive/charts/stable/rimgo/icon.webp delete mode 100644 archive/charts/stable/rimgo/templates/NOTES.txt delete mode 100644 archive/charts/stable/rimgo/templates/common.yaml delete mode 100644 archive/charts/stable/rimgo/values.yaml delete mode 100644 archive/charts/stable/riven/.helmignore delete mode 100644 archive/charts/stable/riven/CHANGELOG.md delete mode 100644 archive/charts/stable/riven/Chart.yaml delete mode 100644 archive/charts/stable/riven/README.md delete mode 100644 archive/charts/stable/riven/icon-small.webp delete mode 100644 archive/charts/stable/riven/icon.webp delete mode 100644 archive/charts/stable/riven/templates/NOTES.txt delete mode 100644 archive/charts/stable/riven/templates/common.yaml delete mode 100644 archive/charts/stable/riven/values.yaml delete mode 100644 archive/charts/stable/solr/.helmignore delete mode 100644 archive/charts/stable/solr/CHANGELOG.md delete mode 100644 archive/charts/stable/solr/Chart.yaml delete mode 100644 archive/charts/stable/solr/README.md delete mode 100644 archive/charts/stable/solr/ci/basic-values.yaml delete mode 100644 archive/charts/stable/solr/icon-small.webp delete mode 100644 archive/charts/stable/solr/icon.webp delete mode 100644 archive/charts/stable/solr/templates/NOTES.txt delete mode 100644 archive/charts/stable/solr/templates/common.yaml delete mode 100644 archive/charts/stable/solr/values.yaml delete mode 100644 archive/charts/stable/youtransfer/.helmignore delete mode 100644 archive/charts/stable/youtransfer/CHANGELOG.md delete mode 100644 archive/charts/stable/youtransfer/Chart.yaml delete mode 100644 archive/charts/stable/youtransfer/README.md delete mode 100644 archive/charts/stable/youtransfer/icon-small.webp delete mode 100644 archive/charts/stable/youtransfer/icon.webp delete mode 100644 archive/charts/stable/youtransfer/templates/NOTES.txt delete mode 100644 archive/charts/stable/youtransfer/templates/common.yaml delete mode 100644 archive/charts/stable/youtransfer/values.yaml delete mode 100644 archive/charts/system/cert-manager/.helmignore delete mode 100644 archive/charts/system/cert-manager/Chart.yaml delete mode 100644 archive/charts/system/cert-manager/README.md delete mode 100644 archive/charts/system/cert-manager/dashboard.json delete mode 100644 archive/charts/system/cert-manager/icon-small.webp delete mode 100644 archive/charts/system/cert-manager/icon.webp delete mode 100644 archive/charts/system/cert-manager/templates/NOTES.txt delete mode 100644 archive/charts/system/cert-manager/templates/common.yaml delete mode 100644 archive/charts/system/cert-manager/values.yaml delete mode 100644 archive/charts/system/cloudnative-pg/.helmignore delete mode 100644 archive/charts/system/cloudnative-pg/Chart.yaml delete mode 100644 archive/charts/system/cloudnative-pg/README.md delete mode 100644 archive/charts/system/cloudnative-pg/icon-small.webp delete mode 100644 archive/charts/system/cloudnative-pg/icon.webp delete mode 100644 archive/charts/system/cloudnative-pg/templates/NOTES.txt delete mode 100644 archive/charts/system/cloudnative-pg/templates/common.yaml delete mode 100644 archive/charts/system/cloudnative-pg/values.yaml delete mode 100644 archive/charts/system/csi-driver-nfs/.helmignore delete mode 100644 archive/charts/system/csi-driver-nfs/Chart.yaml delete mode 100644 archive/charts/system/csi-driver-nfs/README.md delete mode 100644 archive/charts/system/csi-driver-nfs/icon-small.webp delete mode 100644 archive/charts/system/csi-driver-nfs/icon.webp delete mode 100644 archive/charts/system/csi-driver-nfs/templates/NOTES.txt delete mode 100644 archive/charts/system/csi-driver-nfs/templates/common.yaml delete mode 100644 archive/charts/system/csi-driver-nfs/values.yaml delete mode 100644 archive/charts/system/csi-driver-smb/.helmignore delete mode 100644 archive/charts/system/csi-driver-smb/Chart.yaml delete mode 100644 archive/charts/system/csi-driver-smb/README.md delete mode 100644 archive/charts/system/csi-driver-smb/icon-small.webp delete mode 100644 archive/charts/system/csi-driver-smb/icon.webp delete mode 100644 archive/charts/system/csi-driver-smb/templates/NOTES.txt delete mode 100644 archive/charts/system/csi-driver-smb/templates/common.yaml delete mode 100644 archive/charts/system/csi-driver-smb/values.yaml delete mode 100644 archive/charts/system/descheduler/.helmignore delete mode 100644 archive/charts/system/descheduler/Chart.yaml delete mode 100644 archive/charts/system/descheduler/README.md delete mode 100644 archive/charts/system/descheduler/icon-small.webp delete mode 100644 archive/charts/system/descheduler/icon.webp delete mode 100644 archive/charts/system/descheduler/templates/NOTES.txt delete mode 100644 archive/charts/system/descheduler/templates/common.yaml delete mode 100644 archive/charts/system/descheduler/values.yaml delete mode 100644 archive/charts/system/intel-device-plugins-operator/.helmignore delete mode 100644 archive/charts/system/intel-device-plugins-operator/Chart.yaml delete mode 100644 archive/charts/system/intel-device-plugins-operator/README.md delete mode 100644 archive/charts/system/intel-device-plugins-operator/icon-small.webp delete mode 100644 archive/charts/system/intel-device-plugins-operator/icon.webp delete mode 100644 archive/charts/system/intel-device-plugins-operator/templates/NOTES.txt delete mode 100644 archive/charts/system/intel-device-plugins-operator/templates/common.yaml delete mode 100644 archive/charts/system/intel-device-plugins-operator/values.yaml delete mode 100644 archive/charts/system/kubeapps/.helmignore delete mode 100644 archive/charts/system/kubeapps/Chart.yaml delete mode 100644 archive/charts/system/kubeapps/README.md delete mode 100644 archive/charts/system/kubeapps/docs/token.md delete mode 100644 archive/charts/system/kubeapps/icon-small.webp delete mode 100644 archive/charts/system/kubeapps/icon.webp delete mode 100644 archive/charts/system/kubeapps/templates/NOTES.txt delete mode 100644 archive/charts/system/kubeapps/templates/common.yaml delete mode 100644 archive/charts/system/kubeapps/values.yaml delete mode 100644 archive/charts/system/metallb/.helmignore delete mode 100644 archive/charts/system/metallb/Chart.yaml delete mode 100644 archive/charts/system/metallb/README.md delete mode 100644 archive/charts/system/metallb/icon-small.webp delete mode 100644 archive/charts/system/metallb/icon.webp delete mode 100644 archive/charts/system/metallb/templates/NOTES.txt delete mode 100644 archive/charts/system/metallb/templates/common.yaml delete mode 100644 archive/charts/system/metallb/values.yaml delete mode 100644 archive/charts/system/metrics-server/.helmignore delete mode 100644 archive/charts/system/metrics-server/Chart.yaml delete mode 100644 archive/charts/system/metrics-server/README.md delete mode 100644 archive/charts/system/metrics-server/icon-small.webp delete mode 100644 archive/charts/system/metrics-server/icon.webp delete mode 100644 archive/charts/system/metrics-server/templates/NOTES.txt delete mode 100644 archive/charts/system/metrics-server/templates/common.yaml delete mode 100644 archive/charts/system/metrics-server/values.yaml delete mode 100644 archive/charts/system/node-feature-discovery/.helmignore delete mode 100644 archive/charts/system/node-feature-discovery/Chart.yaml delete mode 100644 archive/charts/system/node-feature-discovery/README.md delete mode 100644 archive/charts/system/node-feature-discovery/icon-small.webp delete mode 100644 archive/charts/system/node-feature-discovery/icon.webp delete mode 100644 archive/charts/system/node-feature-discovery/templates/NOTES.txt delete mode 100644 archive/charts/system/node-feature-discovery/templates/common.yaml delete mode 100644 archive/charts/system/node-feature-discovery/values.yaml delete mode 100644 archive/charts/system/nvidia-device-plugin/.helmignore delete mode 100644 archive/charts/system/nvidia-device-plugin/Chart.yaml delete mode 100644 archive/charts/system/nvidia-device-plugin/README.md delete mode 100644 archive/charts/system/nvidia-device-plugin/docs/installation.md delete mode 100644 archive/charts/system/nvidia-device-plugin/icon-small.webp delete mode 100644 archive/charts/system/nvidia-device-plugin/icon.webp delete mode 100644 archive/charts/system/nvidia-device-plugin/templates/NOTES.txt delete mode 100644 archive/charts/system/nvidia-device-plugin/templates/common.yaml delete mode 100644 archive/charts/system/nvidia-device-plugin/values.yaml delete mode 100644 archive/charts/system/nvidia-gpu-operator/.helmignore delete mode 100644 archive/charts/system/nvidia-gpu-operator/Chart.yaml delete mode 100644 archive/charts/system/nvidia-gpu-operator/README.md delete mode 100644 archive/charts/system/nvidia-gpu-operator/icon-small.webp delete mode 100644 archive/charts/system/nvidia-gpu-operator/icon.webp delete mode 100644 archive/charts/system/nvidia-gpu-operator/templates/NOTES.txt delete mode 100644 archive/charts/system/nvidia-gpu-operator/templates/common.yaml delete mode 100644 archive/charts/system/nvidia-gpu-operator/values.yaml delete mode 100644 archive/charts/system/openebs/.helmignore delete mode 100644 archive/charts/system/openebs/Chart.yaml delete mode 100644 archive/charts/system/openebs/README.md delete mode 100644 archive/charts/system/openebs/icon-small.webp delete mode 100644 archive/charts/system/openebs/icon.webp delete mode 100644 archive/charts/system/openebs/templates/NOTES.txt delete mode 100644 archive/charts/system/openebs/templates/common.yaml delete mode 100644 archive/charts/system/openebs/values.yaml delete mode 100644 archive/charts/system/prometheus-operator/.helmignore delete mode 100644 archive/charts/system/prometheus-operator/Chart.yaml delete mode 100644 archive/charts/system/prometheus-operator/README.md delete mode 100644 archive/charts/system/prometheus-operator/icon-small.webp delete mode 100644 archive/charts/system/prometheus-operator/icon.webp delete mode 100644 archive/charts/system/prometheus-operator/templates/NOTES.txt delete mode 100644 archive/charts/system/prometheus-operator/templates/common.yaml delete mode 100644 archive/charts/system/prometheus-operator/values.yaml delete mode 100644 archive/charts/system/traefik-crds/.helmignore delete mode 100644 archive/charts/system/traefik-crds/Chart.yaml delete mode 100644 archive/charts/system/traefik-crds/README.md delete mode 100644 archive/charts/system/traefik-crds/charts/common-25.4.10.tgz delete mode 100644 archive/charts/system/traefik-crds/dashboard.json delete mode 100644 archive/charts/system/traefik-crds/icon-small.webp delete mode 100644 archive/charts/system/traefik-crds/icon.webp delete mode 100644 archive/charts/system/traefik-crds/templates/NOTES.txt delete mode 100644 archive/charts/system/traefik-crds/templates/common.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/gateway-standard-install-v1.1.0.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_accesscontrolpolicies.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiaccesses.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apibundles.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiplans.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiportals.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiratelimits.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apis.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiversions.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutes.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutetcps.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressrouteudps.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewares.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewaretcps.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransports.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransporttcps.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsoptions.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsstores.yaml delete mode 100644 archive/charts/system/traefik-crds/templates/crds/traefik.io_traefikservices.yaml delete mode 100644 archive/charts/system/traefik-crds/values.yaml delete mode 100644 archive/clusters/main/kubernetes/apps/kustomization.yaml delete mode 100644 archive/clusters/main/kubernetes/flux-entry.yaml delete mode 100644 archive/clusters/main/kubernetes/kustomization.yaml delete mode 100644 archive/clustertool/.gitignore delete mode 100644 archive/clustertool/.goreleaser.yaml delete mode 100644 archive/clustertool/.vscode/extensions.json delete mode 100644 archive/clustertool/.vscode/settings.json delete mode 100644 archive/clustertool/.vscode/tasks.json delete mode 100644 archive/clustertool/DEVTRIGGER delete mode 100644 archive/clustertool/README.md delete mode 100644 archive/clustertool/changelog.tmpl delete mode 100644 archive/clustertool/clustertool.LICENSE delete mode 100644 archive/clustertool/cmd/adv.go delete mode 100644 archive/clustertool/cmd/adv_gentooldocs.go delete mode 100644 archive/clustertool/cmd/adv_precommit.go delete mode 100644 archive/clustertool/cmd/adv_testcmd.go delete mode 100644 archive/clustertool/cmd/charts.go delete mode 100644 archive/clustertool/cmd/charts_bump.go delete mode 100644 archive/clustertool/cmd/charts_deps.go delete mode 100644 archive/clustertool/cmd/charts_genchangelog.go delete mode 100644 archive/clustertool/cmd/charts_genchartlist.go delete mode 100644 archive/clustertool/cmd/charts_genmeta.go delete mode 100644 archive/clustertool/cmd/charts_tagclean.go delete mode 100644 archive/clustertool/cmd/checkcrypt.go delete mode 100644 archive/clustertool/cmd/decrypt.go delete mode 100644 archive/clustertool/cmd/encrypt.go delete mode 100644 archive/clustertool/cmd/flux.go delete mode 100644 archive/clustertool/cmd/flux_bootstrap.go delete mode 100644 archive/clustertool/cmd/genconfig.go delete mode 100644 archive/clustertool/cmd/helmrelease.go delete mode 100644 archive/clustertool/cmd/helmrelease_install.go delete mode 100644 archive/clustertool/cmd/helmrelease_upgrade.go delete mode 100644 archive/clustertool/cmd/info.go delete mode 100644 archive/clustertool/cmd/init.go delete mode 100644 archive/clustertool/cmd/root.go delete mode 100644 archive/clustertool/cmd/talos.go delete mode 100644 archive/clustertool/cmd/talos_apply.go delete mode 100644 archive/clustertool/cmd/talos_bootstrap.go delete mode 100644 archive/clustertool/cmd/talos_health.go delete mode 100644 archive/clustertool/cmd/talos_kubeconfig.go delete mode 100644 archive/clustertool/cmd/talos_reset.go delete mode 100644 archive/clustertool/cmd/talos_upgrade.go delete mode 100644 archive/clustertool/cspell.config.yaml delete mode 100644 archive/clustertool/embed/.gitignore delete mode 100755 archive/clustertool/embed/download_talosctl.sh delete mode 100644 archive/clustertool/embed/embed.go delete mode 100644 archive/clustertool/embed/embedDarwin_amd64.go delete mode 100644 archive/clustertool/embed/embedDarwin_arm64.go delete mode 100644 archive/clustertool/embed/embedLinux_amd64.go delete mode 100644 archive/clustertool/embed/embedLinux_arm64.go delete mode 100644 archive/clustertool/embed/embedWindows_amd64.go delete mode 100644 archive/clustertool/embed/embedWindows_arm64.go delete mode 100644 archive/clustertool/embed/generic/base/DOTREPLACEgitignore delete mode 100644 archive/clustertool/embed/generic/base/clusterenv.yaml delete mode 100644 archive/clustertool/embed/generic/base/talos/talconfig.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/apps/kubernetes-dashboard/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/apps/kubernetes-dashboard/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/blocky/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/blocky/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/clusterissuer/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/clusterissuer/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/metallb-config/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/metallb-config/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/system-upgrade-controller-plans/app/kubernetes.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/system-upgrade-controller-plans/app/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/core/system-upgrade-controller-plans/app/talos.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/flux-entry.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/flux-system/flux/bootstrap.yaml.ct delete mode 100644 archive/clustertool/embed/generic/kubernetes/flux-system/flux/clustersettings.secret.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/flux-system/flux/flux.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/flux-system/flux/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/flux-system/flux/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/flux-system/flux/upgradesettings.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/cilium/app/bootstrap-values.yaml.ct delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/cilium/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/descheduler/app/bootstrap-values.yaml.ct delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/descheduler/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/kubelet-csr-approver/app/bootstrap-values.yaml.ct delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/kubelet-csr-approver/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/metrics-server/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/kube-system/node-feature-discovery/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/networking/nginx-external/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/networking/nginx-external/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/networking/nginx-internal/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/networking/nginx-internal/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/cert-manager/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/cloudnative-pg/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/kube-prometheus-stack/app/alertmanagerconfig.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/kube-prometheus-stack/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/kube-prometheus-stack/app/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/kube-prometheus-stack/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/kubernetes-reflector/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/longhorn/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/longhorn/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/longhorn/app/volumeSnapshotClass.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/metallb/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/metallb/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/openebs/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/openebs/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/snapshot-controller/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/spegel/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/spegel/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/system-upgrade-controller/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/system-upgrade-controller/app/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/system-upgrade-controller/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/system-upgrade-controller/app/rbac.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/volsync/app/helm-release.yaml delete mode 100644 archive/clustertool/embed/generic/kubernetes/system/volsync/app/namespace.yaml delete mode 100644 archive/clustertool/embed/generic/patches/all.yaml delete mode 100644 archive/clustertool/embed/generic/patches/controlplane.yaml delete mode 100644 archive/clustertool/embed/generic/patches/nvidia.yaml delete mode 100644 archive/clustertool/embed/generic/patches/worker.yaml delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEdevcontainer/devcontainer.json delete mode 100755 archive/clustertool/embed/generic/root/DOTREPLACEdevcontainer/postCreateCommand.sh delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEgithub/renovate.json5 delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEgithub/workflows/automerge.yaml delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEgithub/workflows/placeholder.yaml delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEgitignore delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEsops.yaml delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEvscode/extensions.json delete mode 100644 archive/clustertool/embed/generic/root/DOTREPLACEvscode/settings.json delete mode 100644 archive/clustertool/embed/generic/root/README.md delete mode 100644 archive/clustertool/embed/generic/root/repositories/entries/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/flux-entry.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/git/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/git/this-repo.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/git/truecharts.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/bjw-s.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/cloudnative-pg.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/home-ops-mirror.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/jetstack.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/metallb.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/node-feature-discovery.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/prometheus-community.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/spegel.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/helm/truecharts.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/kustomization.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/oci/flux-manifests.yaml delete mode 100644 archive/clustertool/embed/generic/root/repositories/oci/kustomization.yaml delete mode 100644 archive/clustertool/fix.py delete mode 100644 archive/clustertool/go.mod delete mode 100644 archive/clustertool/go.sum delete mode 100644 archive/clustertool/main.go delete mode 100755 archive/clustertool/partial_builds/partial_build.sh delete mode 100644 archive/clustertool/partial_builds/precommit/main.go delete mode 100644 archive/clustertool/pkg/charts/changelog/active_charts.go delete mode 100644 archive/clustertool/pkg/charts/changelog/changed_data.go delete mode 100644 archive/clustertool/pkg/charts/changelog/changelog.go delete mode 100644 archive/clustertool/pkg/charts/changelog/commit.go delete mode 100644 archive/clustertool/pkg/charts/changelog/patch.go delete mode 100644 archive/clustertool/pkg/charts/changelog/render.go delete mode 100644 archive/clustertool/pkg/charts/changelog/utils.go delete mode 100644 archive/clustertool/pkg/charts/chartFile/chart_file.go delete mode 100644 archive/clustertool/pkg/charts/chartFile/chart_file_test.go delete mode 100644 archive/clustertool/pkg/charts/chartFile/updater.go delete mode 100644 archive/clustertool/pkg/charts/chartFile/updater_test.go delete mode 100644 archive/clustertool/pkg/charts/deps/deps.go delete mode 100644 archive/clustertool/pkg/charts/helmignore/helmignore.go delete mode 100644 archive/clustertool/pkg/charts/image/cleanup.go delete mode 100644 archive/clustertool/pkg/charts/image/cleanup_test.go delete mode 100644 archive/clustertool/pkg/charts/image/image.go delete mode 100644 archive/clustertool/pkg/charts/image/image_test.go delete mode 100644 archive/clustertool/pkg/charts/info/info.go delete mode 100644 archive/clustertool/pkg/charts/readme/readme.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/addonValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/externalInterfaceValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/ingressValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/metricsValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/networkPolicyValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/parse.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/persistenceValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/podOptionsValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/resourceValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/securityContextValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/serviceValues.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/updater.go delete mode 100644 archive/clustertool/pkg/charts/valuesYaml/workloadValues.go delete mode 100644 archive/clustertool/pkg/charts/version/bump.go delete mode 100644 archive/clustertool/pkg/charts/version/bump_test.go delete mode 100644 archive/clustertool/pkg/fluxhandler/bootstrap.go delete mode 100644 archive/clustertool/pkg/fluxhandler/helm.go delete mode 100644 archive/clustertool/pkg/fluxhandler/helmrelease.go delete mode 100644 archive/clustertool/pkg/fluxhandler/helmrepo.go delete mode 100644 archive/clustertool/pkg/fluxhandler/kustomizations.go delete mode 100644 archive/clustertool/pkg/fluxhandler/sshsecretgen.go delete mode 100644 archive/clustertool/pkg/gencmd/apply.go delete mode 100644 archive/clustertool/pkg/gencmd/bootstrap.go delete mode 100644 archive/clustertool/pkg/gencmd/execcmd.go delete mode 100644 archive/clustertool/pkg/gencmd/genconfig.go delete mode 100644 archive/clustertool/pkg/gencmd/plain.go delete mode 100644 archive/clustertool/pkg/gencmd/upgrade.go delete mode 100644 archive/clustertool/pkg/helper/copy.go delete mode 100644 archive/clustertool/pkg/helper/dns.go delete mode 100644 archive/clustertool/pkg/helper/envsubst.go delete mode 100644 archive/clustertool/pkg/helper/git.go delete mode 100644 archive/clustertool/pkg/helper/helper.go delete mode 100644 archive/clustertool/pkg/helper/marshaller.go delete mode 100644 archive/clustertool/pkg/helper/netvalidate.go delete mode 100644 archive/clustertool/pkg/helper/prompts.go delete mode 100644 archive/clustertool/pkg/helper/replace.go delete mode 100644 archive/clustertool/pkg/helper/runcmd.go delete mode 100644 archive/clustertool/pkg/helper/talhelperextract.go delete mode 100644 archive/clustertool/pkg/helper/time.go delete mode 100644 archive/clustertool/pkg/helper/tooldocs.go delete mode 100644 archive/clustertool/pkg/helper/var2file.go delete mode 100644 archive/clustertool/pkg/helper/vars.go delete mode 100644 archive/clustertool/pkg/helper/walker.go delete mode 100644 archive/clustertool/pkg/helper/yamlutil.go delete mode 100644 archive/clustertool/pkg/info/info.go delete mode 100644 archive/clustertool/pkg/initfiles/clusterenv.go delete mode 100644 archive/clustertool/pkg/initfiles/initfiles.go delete mode 100644 archive/clustertool/pkg/kubectlcmds/apply.go delete mode 100644 archive/clustertool/pkg/kubectlcmds/approvecerts.go delete mode 100644 archive/clustertool/pkg/kubectlcmds/checkstatus.go delete mode 100644 archive/clustertool/pkg/nodestatus/health.go delete mode 100644 archive/clustertool/pkg/nodestatus/status.go delete mode 100644 archive/clustertool/pkg/sops/checkencrypt.go delete mode 100644 archive/clustertool/pkg/sops/decrypt.go delete mode 100644 archive/clustertool/pkg/sops/encrypt.go delete mode 100644 archive/clustertool/pkg/sops/loadsops.go delete mode 100644 archive/clustertool/pkg/sops/wrapper.go delete mode 100644 archive/clustertool/pkg/talassist/load.go delete mode 100644 archive/clustertool/pkg/talhelperutil/extractfromtalconfig.go delete mode 100644 archive/clustertool/testdata/chart_yaml/invalidChart.yaml delete mode 100644 archive/clustertool/testdata/chart_yaml/malformedChart.yaml delete mode 100644 archive/clustertool/testdata/chart_yaml/unmarshalableChart.yaml delete mode 100644 archive/clustertool/testdata/chart_yaml/validChart.yaml delete mode 100644 archive/clustertool/testdata/updater/stable/my-app/Chart.yaml delete mode 100644 archive/clustertool/testdata/values_yaml/emptyValues.yaml delete mode 100644 archive/clustertool/testdata/values_yaml/malformedValues.yaml delete mode 100644 archive/clustertool/testdata/values_yaml/multiImageValues.yaml delete mode 100644 archive/clustertool/testdata/values_yaml/singleImageValues.yaml delete mode 100644 archive/container-tools/.pre-commit-config.yaml delete mode 100644 archive/container-tools/README.md delete mode 100755 archive/container-tools/createmirror.sh delete mode 100755 archive/container-tools/scarf.sh delete mode 100755 archive/container-tools/to-mirror.sh delete mode 100644 archive/container-tools/to-mirror.txt delete mode 100644 archive/repositories/kustomization.yaml delete mode 100755 archive/scripts/dockerhub.sh delete mode 100644 archive/scripts/removereleases.py delete mode 100755 archive/scripts/update-version-file.sh delete mode 100644 archive/website/SCALE/SUPPORT.md delete mode 100644 archive/website/SCALE/guides/add-storage.md delete mode 100644 archive/website/SCALE/guides/backup-restore.md delete mode 100644 archive/website/SCALE/guides/cnpg-migration-guide.md delete mode 100644 archive/website/SCALE/guides/dataset.md delete mode 100644 archive/website/SCALE/guides/image.png delete mode 100644 archive/website/SCALE/guides/linking-apps.md delete mode 100644 archive/website/SCALE/guides/migration-pvc.md delete mode 100644 archive/website/SCALE/guides/nfs-share.md delete mode 100644 archive/website/SCALE/guides/pci-passthrough.md delete mode 100644 archive/website/SCALE/guides/pvc-access.md delete mode 100644 archive/website/SCALE/guides/questions-yaml.md delete mode 100644 archive/website/SCALE/guides/recover-cnpg.md delete mode 100644 archive/website/SCALE/guides/scale-intro.mdx delete mode 100644 archive/website/SCALE/guides/sql-export.md delete mode 100644 archive/website/SCALE/guides/truenas-web-gui-via-traefik.md delete mode 100644 archive/website/SCALE/guides/vpn-setup.md delete mode 100644 archive/website/SCALE/img/volumesnapshotclass.png delete mode 100644 archive/website/SCALE/index.mdx delete mode 100644 archive/website/SCALE/migrations/cobia-dragonfish.mdx delete mode 100644 archive/website/SCALE/migrations/img/openebs-datasets.png delete mode 100644 archive/website/SCALE/migrations/img/openebs-options.png delete mode 100644 archive/website/SCALE/migrations/index.md delete mode 100644 archive/website/SCALE/systemrequirements.md delete mode 100644 archive/website/SCALE/validation.md delete mode 100644 archive/website/clustertool/migrations/img/AddNFSShare.png delete mode 100644 archive/website/clustertool/migrations/img/Adminer-Export.png delete mode 100644 archive/website/clustertool/migrations/img/Adminer-Import.png delete mode 100644 archive/website/clustertool/migrations/img/Adminer-Login.png delete mode 100644 archive/website/clustertool/migrations/img/Adminer-Login2.png delete mode 100644 archive/website/clustertool/migrations/img/AppShellStorageAdded.png delete mode 100644 archive/website/clustertool/migrations/img/Apps.png delete mode 100644 archive/website/clustertool/migrations/img/Apps2.png delete mode 100644 archive/website/clustertool/migrations/img/Apps3.png delete mode 100644 archive/website/clustertool/migrations/img/Apps4.png delete mode 100644 archive/website/clustertool/migrations/img/Apps5.png delete mode 100644 archive/website/clustertool/migrations/img/Apps6.png delete mode 100644 archive/website/clustertool/migrations/img/Apps7.png delete mode 100644 archive/website/clustertool/migrations/img/BlankAddAppStorage.png delete mode 100644 archive/website/clustertool/migrations/img/Copy-App-Config.png delete mode 100644 archive/website/clustertool/migrations/img/CustomVPNprovider.png delete mode 100644 archive/website/clustertool/migrations/img/Dragonfish-Storage1.png delete mode 100644 archive/website/clustertool/migrations/img/Dragonfish-Storage2.png delete mode 100644 archive/website/clustertool/migrations/img/Dragonfish-Storage3.png delete mode 100644 archive/website/clustertool/migrations/img/Dragonfish-Storage4.png delete mode 100644 archive/website/clustertool/migrations/img/Dragonfish-Storage5.png delete mode 100644 archive/website/clustertool/migrations/img/Dragonfish-Storage5b.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-Proxy1.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-Proxy2.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-Proxy3.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN1.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN2.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN3.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN4.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN5.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN6.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN7.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-VPN8.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-vpn-log-icon.png delete mode 100644 archive/website/clustertool/migrations/img/Gluetun-vpn-log.png delete mode 100644 archive/website/clustertool/migrations/img/HeavyScript-Backup.png delete mode 100644 archive/website/clustertool/migrations/img/HeavyScript-Main.png delete mode 100644 archive/website/clustertool/migrations/img/HeavyScript-Restore-List.png delete mode 100644 archive/website/clustertool/migrations/img/MariaDBenv1.png delete mode 100644 archive/website/clustertool/migrations/img/MariaDBenv2.png delete mode 100644 archive/website/clustertool/migrations/img/NFSAddAppStorageBlank.png delete mode 100644 archive/website/clustertool/migrations/img/NFSAddAppStorageFilled.png delete mode 100644 archive/website/clustertool/migrations/img/New-App-Config.png delete mode 100644 archive/website/clustertool/migrations/img/New-App-Finish.png delete mode 100644 archive/website/clustertool/migrations/img/OpenEBS-storage.png delete mode 100644 archive/website/clustertool/migrations/img/OpenEBS.png delete mode 100644 archive/website/clustertool/migrations/img/Replication1.png delete mode 100644 archive/website/clustertool/migrations/img/Replication2.png delete mode 100644 archive/website/clustertool/migrations/img/Replication3.png delete mode 100644 archive/website/clustertool/migrations/img/Sharesmain.png delete mode 100644 archive/website/clustertool/migrations/img/StopAll.png delete mode 100644 archive/website/clustertool/migrations/img/app-storage.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-add-operator-train.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-info.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-add.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-backup.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-creds.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-name.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-restore.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-restore2.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-restore3.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-restore4.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-pgadmin-save.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-scaled.png delete mode 100644 archive/website/clustertool/migrations/img/cnpg-shell-command.png delete mode 100644 archive/website/clustertool/migrations/img/data-perms.png delete mode 100644 archive/website/clustertool/migrations/img/icons/authelia.png delete mode 100644 archive/website/clustertool/migrations/img/icons/blocky.png delete mode 100644 archive/website/clustertool/migrations/img/icons/cert-manager.png delete mode 100644 archive/website/clustertool/migrations/img/icons/cnpg.png delete mode 100644 archive/website/clustertool/migrations/img/icons/metallb.png delete mode 100644 archive/website/clustertool/migrations/img/icons/openebs.png delete mode 100644 archive/website/clustertool/migrations/img/icons/prometheus-operator.png delete mode 100644 archive/website/clustertool/migrations/img/icons/traefik.png delete mode 100644 archive/website/clustertool/migrations/img/icons/traefik.webp delete mode 100644 archive/website/clustertool/migrations/img/image.png delete mode 100644 archive/website/clustertool/migrations/img/inotify.png delete mode 100644 archive/website/clustertool/migrations/img/nfs-share-cobia.png delete mode 100644 archive/website/clustertool/migrations/img/pgadminbackup.png delete mode 100644 archive/website/clustertool/migrations/img/pgadminbackupselect.png delete mode 100644 archive/website/clustertool/migrations/img/pgadminconnect.png delete mode 100644 archive/website/clustertool/migrations/img/pgadminrestore.png delete mode 100644 archive/website/clustertool/migrations/img/pgadminrestorepage1.png delete mode 100644 archive/website/clustertool/migrations/img/pgadminrestorepage2.png delete mode 100644 archive/website/clustertool/migrations/img/pgadminrestorepage3.png delete mode 100644 archive/website/clustertool/migrations/img/s3_scale_cnpg_backup.png delete mode 100644 archive/website/clustertool/migrations/img/s3_scale_credentials.png delete mode 100644 archive/website/clustertool/migrations/img/s3_scale_pvc_backup.png delete mode 100644 archive/website/clustertool/migrations/img/share-smb-cobia.png delete mode 100644 archive/website/clustertool/migrations/img/smb-cli1.png delete mode 100644 archive/website/clustertool/migrations/img/smb-cli2.png delete mode 100644 archive/website/clustertool/migrations/img/tcdbinfo.png delete mode 100644 archive/website/clustertool/migrations/img/truenas-web-gui-via-traefik-screenshot.png delete mode 100644 archive/website/clustertool/migrations/img/user-groups.png delete mode 100644 archive/website/clustertool/migrations/img/velero-backup-verify.png delete mode 100644 archive/website/clustertool/migrations/img/velero-complete.png delete mode 100644 archive/website/clustertool/migrations/img/velero-create-disaster.png delete mode 100644 archive/website/clustertool/migrations/img/velero-minio-create-bucket-2.png delete mode 100644 archive/website/clustertool/migrations/img/velero-minio-create-bucket.png delete mode 100644 archive/website/clustertool/migrations/img/velero-restore.png delete mode 100644 archive/website/clustertool/migrations/img/volumesnapshotclass.png delete mode 100644 archive/website/clustertool/migrations/scale-config-only.md delete mode 100644 archive/website/clustertool/migrations/scale.md delete mode 100644 archive/workflows/clustertool.golangci-lint.yaml delete mode 100644 archive/workflows/clustertool.release.yaml delete mode 100644 archive/workflows/clustertool.tests.yaml delete mode 100644 archive/workflows/containers.build.yaml delete mode 100644 archive/workflows/containers.housekeeping.yaml delete mode 100644 archive/workflows/containers.scarf.yaml delete mode 100644 archive/workflows/prune.yaml diff --git a/archive/DEVTRIGGER b/archive/DEVTRIGGER deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/archive/README.md b/archive/README.md deleted file mode 100644 index 3b649683a2b..00000000000 --- a/archive/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# archive - -This folder contains old TrueCharts project code diff --git a/archive/charts/premium/prometheus/.helmignore b/archive/charts/premium/prometheus/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/premium/prometheus/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/premium/prometheus/CHANGELOG.md b/archive/charts/premium/prometheus/CHANGELOG.md deleted file mode 100644 index 30a54496890..00000000000 --- a/archive/charts/premium/prometheus/CHANGELOG.md +++ /dev/null @@ -1,2564 +0,0 @@ ---- -title: Changelog -pagefind: false ---- - -## [prometheus-5.0.0](https://github.com/truecharts/charts/compare/prometheus-4.0.131...prometheus-5.0.0) (2022-11-10) - -### Chore - -- Major Change to GUI - -## [prometheus-4.0.131](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.131) (2022-11-10) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4343](https://github.com/truecharts/charts/issues/4343)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update docker general non-major ([#4355](https://github.com/truecharts/charts/issues/4355)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) -- update docker general non-major ([#4366](https://github.com/truecharts/charts/issues/4366)) - -## [prometheus-4.0.130](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.130) (2022-11-09) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4355](https://github.com/truecharts/charts/issues/4355)) -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4343](https://github.com/truecharts/charts/issues/4343)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [prometheus-4.0.129](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.129) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4343](https://github.com/truecharts/charts/issues/4343)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [prometheus-4.0.128](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.128) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4343](https://github.com/truecharts/charts/issues/4343)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [prometheus-4.0.128](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.128) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4343](https://github.com/truecharts/charts/issues/4343)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [prometheus-4.0.128](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.128) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4343](https://github.com/truecharts/charts/issues/4343)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [prometheus-4.0.127](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.127) (2022-11-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [prometheus-4.0.127](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.44...prometheus-4.0.127) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [prometheus-4.0.126](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.43...prometheus-4.0.126) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) - -## [prometheus-4.0.125](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.43...prometheus-4.0.125) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) - -## [prometheus-4.0.124](https://github.com/truecharts/charts/compare/prometheus-4.0.123...prometheus-4.0.124) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308)) - -## [prometheus-4.0.123](https://github.com/truecharts/charts/compare/prometheus-4.0.122...prometheus-4.0.123) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4301](https://github.com/truecharts/charts/issues/4301)) - -## [prometheus-4.0.122](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.42...prometheus-4.0.122) (2022-11-03) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4289](https://github.com/truecharts/charts/issues/4289)) - -## [prometheus-4.0.121](https://github.com/truecharts/charts/compare/prometheus-4.0.120...prometheus-4.0.121) (2022-11-02) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)) -- update docker general non-major ([#4280](https://github.com/truecharts/charts/issues/4280)) - -## [prometheus-4.0.120](https://github.com/truecharts/charts/compare/prometheus-4.0.119...prometheus-4.0.120) (2022-10-31) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4249](https://github.com/truecharts/charts/issues/4249)) - -## [prometheus-4.0.119](https://github.com/truecharts/charts/compare/prometheus-4.0.118...prometheus-4.0.119) (2022-10-30) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4238](https://github.com/truecharts/charts/issues/4238)) - -## [prometheus-4.0.118](https://github.com/truecharts/charts/compare/prometheus-4.0.117...prometheus-4.0.118) (2022-10-29) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4230](https://github.com/truecharts/charts/issues/4230)) - -## [prometheus-4.0.117](https://github.com/truecharts/charts/compare/prometheus-4.0.116...prometheus-4.0.117) (2022-10-28) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4218](https://github.com/truecharts/charts/issues/4218)) - -## [prometheus-4.0.116](https://github.com/truecharts/charts/compare/prometheus-4.0.115...prometheus-4.0.116) (2022-10-27) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4201](https://github.com/truecharts/charts/issues/4201)) - -## [prometheus-4.0.116](https://github.com/truecharts/charts/compare/prometheus-4.0.115...prometheus-4.0.116) (2022-10-27) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4201](https://github.com/truecharts/charts/issues/4201)) - -## [prometheus-4.0.115](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.41...prometheus-4.0.115) (2022-10-26) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4189](https://github.com/truecharts/charts/issues/4189)) - -## [prometheus-4.0.114](https://github.com/truecharts/charts/compare/prometheus-4.0.113...prometheus-4.0.114) (2022-10-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) - -## [prometheus-4.0.113](https://github.com/truecharts/charts/compare/prometheus-4.0.111...prometheus-4.0.113) (2022-10-24) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4171](https://github.com/truecharts/charts/issues/4171)) -- update docker general non-major ([#4165](https://github.com/truecharts/charts/issues/4165)) - -## [prometheus-4.0.111](https://github.com/truecharts/charts/compare/prometheus-4.0.110...prometheus-4.0.111) (2022-10-22) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4155](https://github.com/truecharts/charts/issues/4155)) - -## [prometheus-4.0.109](https://github.com/truecharts/charts/compare/prometheus-4.0.108...prometheus-4.0.109) (2022-10-19) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) -- update docker general non-major ([#4128](https://github.com/truecharts/charts/issues/4128)) - -## [prometheus-4.0.108](https://github.com/truecharts/charts/compare/prometheus-4.0.107...prometheus-4.0.108) (2022-10-18) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4120](https://github.com/truecharts/charts/issues/4120)) - -## [prometheus-4.0.107](https://github.com/truecharts/charts/compare/prometheus-4.0.106...prometheus-4.0.107) (2022-10-17) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4119](https://github.com/truecharts/charts/issues/4119)) - -## [prometheus-4.0.106](https://github.com/truecharts/charts/compare/prometheus-4.0.105...prometheus-4.0.106) (2022-10-16) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4108](https://github.com/truecharts/charts/issues/4108)) - -## [prometheus-4.0.105](https://github.com/truecharts/charts/compare/prometheus-4.0.104...prometheus-4.0.105) (2022-10-14) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4084](https://github.com/truecharts/charts/issues/4084)) - -## [prometheus-4.0.104](https://github.com/truecharts/charts/compare/prometheus-4.0.103...prometheus-4.0.104) (2022-10-12) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) - -## [prometheus-4.0.103](https://github.com/truecharts/charts/compare/prometheus-4.0.102...prometheus-4.0.103) (2022-10-11) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4070](https://github.com/truecharts/charts/issues/4070)) - -## [prometheus-4.0.102](https://github.com/truecharts/charts/compare/prometheus-4.0.101...prometheus-4.0.102) (2022-10-10) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4049](https://github.com/truecharts/charts/issues/4049)) -- update docker general non-major - -## [prometheus-4.0.101](https://github.com/truecharts/charts/compare/prometheus-4.0.99...prometheus-4.0.101) (2022-10-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4030](https://github.com/truecharts/charts/issues/4030)) -- update helm general non-major - -## [prometheus-4.0.100](https://github.com/truecharts/charts/compare/prometheus-4.0.99...prometheus-4.0.100) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [prometheus-4.0.99](https://github.com/truecharts/charts/compare/prometheus-4.0.98...prometheus-4.0.99) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major - -## [prometheus-4.0.98](https://github.com/truecharts/charts/compare/prometheus-4.0.97...prometheus-4.0.98) (2022-10-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [prometheus-4.0.97](https://github.com/truecharts/charts/compare/prometheus-4.0.96...prometheus-4.0.97) (2022-10-05) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4010](https://github.com/truecharts/charts/issues/4010)) - -## [prometheus-4.0.96](https://github.com/truecharts/charts/compare/prometheus-4.0.95...prometheus-4.0.96) (2022-10-04) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4001](https://github.com/truecharts/charts/issues/4001)) -- update docker general non-major - -## [prometheus-4.0.95](https://github.com/truecharts/charts/compare/prometheus-4.0.94...prometheus-4.0.95) (2022-10-01) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3975](https://github.com/truecharts/charts/issues/3975)) - -## [prometheus-4.0.94](https://github.com/truecharts/charts/compare/prometheus-4.0.93...prometheus-4.0.94) (2022-09-30) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3965](https://github.com/truecharts/charts/issues/3965)) - -## [prometheus-4.0.93](https://github.com/truecharts/charts/compare/prometheus-4.0.92...prometheus-4.0.93) (2022-09-28) - -### Chore - -- update docker general non-major ([#3938](https://github.com/truecharts/charts/issues/3938)) - -## [prometheus-4.0.91](https://github.com/truecharts/charts/compare/prometheus-4.0.90...prometheus-4.0.91) (2022-09-27) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)) - -## [prometheus-4.0.90](https://github.com/truecharts/charts/compare/prometheus-4.0.89...prometheus-4.0.90) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) - -## [prometheus-4.0.89](https://github.com/truecharts/charts/compare/prometheus-4.0.88...prometheus-4.0.89) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3881](https://github.com/truecharts/charts/issues/3881)) - -## [prometheus-4.0.88](https://github.com/truecharts/charts/compare/prometheus-4.0.87...prometheus-4.0.88) (2022-09-24) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3860](https://github.com/truecharts/charts/issues/3860)) - -## [prometheus-4.0.87](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.87) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.87](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.87) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.86](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.86) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.86](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.86) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.86](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.86) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.85](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.85) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.85](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.85) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.85](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.85) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Expose prometheus configuration options in Scale GUI ([#3797](https://github.com/truecharts/charts/issues/3797)) - -## [prometheus-4.0.84](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.84) (2022-09-17) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [prometheus-4.0.84](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.84) (2022-09-18) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [prometheus-4.0.84](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.84) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [prometheus-4.0.84](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.84) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [prometheus-4.0.84](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.84) (2022-09-15) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [prometheus-4.0.84](https://github.com/truecharts/charts/compare/prometheus-4.0.83...prometheus-4.0.84) (2022-09-15) - -### Chore - -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [prometheus-4.0.83](https://github.com/truecharts/charts/compare/prometheus-4.0.82...prometheus-4.0.83) (2022-09-15) - -### Chore - -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [prometheus-4.0.82](https://github.com/truecharts/charts/compare/prometheus-4.0.81...prometheus-4.0.82) (2022-09-13) - -### Chore - -- update docker general non-major ([#3755](https://github.com/truecharts/charts/issues/3755)) - -## [prometheus-4.0.81](https://github.com/truecharts/charts/compare/prometheus-4.0.80...prometheus-4.0.81) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [prometheus-4.0.81](https://github.com/truecharts/charts/compare/prometheus-4.0.80...prometheus-4.0.81) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [prometheus-4.0.81](https://github.com/truecharts/charts/compare/prometheus-4.0.80...prometheus-4.0.81) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [prometheus-4.0.81](https://github.com/truecharts/charts/compare/prometheus-4.0.80...prometheus-4.0.81) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [prometheus-4.0.81](https://github.com/truecharts/charts/compare/prometheus-4.0.80...prometheus-4.0.81) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [prometheus-4.0.81](https://github.com/truecharts/charts/compare/prometheus-4.0.80...prometheus-4.0.81) (2022-09-11) - -### Chore - -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [prometheus-4.0.80](https://github.com/truecharts/charts/compare/prometheus-4.0.79...prometheus-4.0.80) (2022-09-10) - -### Chore - -- update docker general non-major ([#3727](https://github.com/truecharts/charts/issues/3727)) - -## [prometheus-4.0.79](https://github.com/truecharts/charts/compare/prometheus-4.0.78...prometheus-4.0.79) (2022-09-07) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3710](https://github.com/truecharts/charts/issues/3710)) - -## [prometheus-4.0.79](https://github.com/truecharts/charts/compare/prometheus-4.0.78...prometheus-4.0.79) (2022-09-06) - -### Chore - -- update docker general non-major ([#3710](https://github.com/truecharts/charts/issues/3710)) - -## [prometheus-4.0.78](https://github.com/truecharts/charts/compare/prometheus-4.0.77...prometheus-4.0.78) (2022-09-05) - -### Chore - -- update docker general non-major ([#3700](https://github.com/truecharts/charts/issues/3700)) - -### Fix - -- fix serviceaccount creation on few apps ([#3665](https://github.com/truecharts/charts/issues/3665)) - -## [prometheus-4.0.77](https://github.com/truecharts/charts/compare/prometheus-4.0.76...prometheus-4.0.77) (2022-09-03) - -### Chore - -- update docker general non-major ([#3668](https://github.com/truecharts/charts/issues/3668)) - -## [prometheus-4.0.76](https://github.com/truecharts/charts/compare/prometheus-4.0.75...prometheus-4.0.76) (2022-09-02) - -### Chore - -- update docker general non-major ([#3660](https://github.com/truecharts/charts/issues/3660)) - -## [prometheus-4.0.75](https://github.com/truecharts/charts/compare/prometheus-4.0.74...prometheus-4.0.75) (2022-08-31) - -### Chore - -- update docker general non-major ([#3640](https://github.com/truecharts/charts/issues/3640)) - -## [prometheus-4.0.74](https://github.com/truecharts/charts/compare/prometheus-4.0.72...prometheus-4.0.74) (2022-08-30) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [prometheus-4.0.73](https://github.com/truecharts/charts/compare/prometheus-4.0.72...prometheus-4.0.73) (2022-08-30) - -### Chore - -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [prometheus-4.0.72](https://github.com/truecharts/charts/compare/prometheus-4.0.71...prometheus-4.0.72) (2022-08-30) - -### Chore - -- update docker general non-major ([#3623](https://github.com/truecharts/charts/issues/3623)) - -## [prometheus-4.0.71](https://github.com/truecharts/charts/compare/prometheus-4.0.69...prometheus-4.0.71) (2022-08-29) - -### Chore - -- update docker general non-major ([#3620](https://github.com/truecharts/charts/issues/3620)) -- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) - -## [prometheus-4.0.69](https://github.com/truecharts/charts/compare/prometheus-4.0.68...prometheus-4.0.69) (2022-08-26) - -### Chore - -- update docker general non-major ([#3573](https://github.com/truecharts/charts/issues/3573)) - -## [prometheus-4.0.68](https://github.com/truecharts/charts/compare/prometheus-4.0.67...prometheus-4.0.68) (2022-08-25) - -### Chore - -- update docker general non-major ([#3561](https://github.com/truecharts/charts/issues/3561)) - -## [prometheus-4.0.67](https://github.com/truecharts/charts/compare/uptimerobot-prometheus-4.0.29...prometheus-4.0.67) (2022-08-24) - -### Chore - -- update docker general non-major ([#3552](https://github.com/truecharts/charts/issues/3552)) - -## [prometheus-4.0.66](https://github.com/truecharts/charts/compare/prometheus-4.0.65...prometheus-4.0.66) (2022-08-23) - -### Chore - -- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) - -## [prometheus-4.0.65](https://github.com/truecharts/charts/compare/prometheus-4.0.64...prometheus-4.0.65) (2022-08-22) - -### Chore - -- update docker general non-major ([#3530](https://github.com/truecharts/charts/issues/3530)) - -## [prometheus-4.0.64](https://github.com/truecharts/charts/compare/prometheus-4.0.63...prometheus-4.0.64) (2022-08-20) - -### Chore - -- update docker general non-major docker tags ([#3518](https://github.com/truecharts/charts/issues/3518)) - -## [prometheus-4.0.63](https://github.com/truecharts/charts/compare/prometheus-4.0.62...prometheus-4.0.63) (2022-08-19) - -### Chore - -- update docker general non-major docker tags ([#3512](https://github.com/truecharts/charts/issues/3512)) - -## [prometheus-4.0.62](https://github.com/truecharts/charts/compare/prometheus-4.0.61...prometheus-4.0.62) (2022-08-18) - -### Chore - -- update docker general non-major ([#3503](https://github.com/truecharts/charts/issues/3503)) - -## [prometheus-4.0.61](https://github.com/truecharts/charts/compare/prometheus-4.0.60...prometheus-4.0.61) (2022-08-17) - -### Chore - -- update docker general non-major ([#3478](https://github.com/truecharts/charts/issues/3478)) - -## [prometheus-4.0.60](https://github.com/truecharts/charts/compare/prometheus-4.0.59...prometheus-4.0.60) (2022-08-12) - -### Chore - -- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456)) - -## [prometheus-4.0.59](https://github.com/truecharts/charts/compare/prometheus-4.0.58...prometheus-4.0.59) (2022-08-12) - -### Chore - -- update docker general non-major ([#3453](https://github.com/truecharts/charts/issues/3453)) - -## [prometheus-4.0.58](https://github.com/truecharts/charts/compare/prometheus-4.0.57...prometheus-4.0.58) (2022-08-10) - -### Chore - -- update docker general non-major ([#3421](https://github.com/truecharts/charts/issues/3421)) - -## [prometheus-4.0.57](https://github.com/truecharts/charts/compare/prometheus-4.0.56...prometheus-4.0.57) (2022-08-09) - -### Chore - -- update helm general non-major helm releases to v10.4.9 ([#3413](https://github.com/truecharts/charts/issues/3413)) - -## [prometheus-4.0.56](https://github.com/truecharts/charts/compare/prometheus-4.0.55...prometheus-4.0.56) (2022-08-09) - -### Chore - -- update docker general non-major ([#3377](https://github.com/truecharts/charts/issues/3377)) - -## [prometheus-4.0.55](https://github.com/truecharts/charts/compare/prometheus-4.0.53...prometheus-4.0.55) (2022-08-08) - -### Chore - -- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376)) -- update docker general non-major ([#3356](https://github.com/truecharts/charts/issues/3356)) -- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402)) - -## [prometheus-4.0.53](https://github.com/truecharts/apps/compare/prometheus-4.0.52...prometheus-4.0.53) (2022-07-30) - -### Chore - -- update docker general non-major - -## [prometheus-4.0.52](https://github.com/truecharts/apps/compare/prometheus-4.0.51...prometheus-4.0.52) (2022-07-29) - -### Chore - -- update docker general non-major ([#3339](https://github.com/truecharts/apps/issues/3339)) - -## [prometheus-4.0.51](https://github.com/truecharts/apps/compare/prometheus-4.0.50...prometheus-4.0.51) (2022-07-28) - -### Chore - -- update docker general non-major ([#3326](https://github.com/truecharts/apps/issues/3326)) - -## [prometheus-4.0.50](https://github.com/truecharts/apps/compare/prometheus-4.0.49...prometheus-4.0.50) (2022-07-27) - -### Chore - -- update docker general non-major ([#3313](https://github.com/truecharts/apps/issues/3313)) - -## [prometheus-4.0.49](https://github.com/truecharts/apps/compare/prometheus-4.0.48...prometheus-4.0.49) (2022-07-26) - -### Chore - -- update docker general non-major ([#3301](https://github.com/truecharts/apps/issues/3301)) -- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302)) - -## [prometheus-4.0.48](https://github.com/truecharts/apps/compare/prometheus-4.0.47...prometheus-4.0.48) (2022-07-25) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [prometheus-4.0.48](https://github.com/truecharts/apps/compare/prometheus-4.0.47...prometheus-4.0.48) (2022-07-25) - -### Chore - -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [prometheus-4.0.47](https://github.com/truecharts/apps/compare/prometheus-4.0.46...prometheus-4.0.47) (2022-07-25) - -### Chore - -- update docker general non-major ([#3290](https://github.com/truecharts/apps/issues/3290)) - -## [prometheus-4.0.46](https://github.com/truecharts/apps/compare/prometheus-4.0.44...prometheus-4.0.46) (2022-07-24) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3284](https://github.com/truecharts/apps/issues/3284)) -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [prometheus-4.0.45](https://github.com/truecharts/apps/compare/prometheus-4.0.44...prometheus-4.0.45) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [prometheus-4.0.45](https://github.com/truecharts/apps/compare/prometheus-4.0.44...prometheus-4.0.45) (2022-07-23) - -### Chore - -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [prometheus-4.0.44](https://github.com/truecharts/apps/compare/prometheus-4.0.43...prometheus-4.0.44) (2022-07-23) - -### Chore - -- update docker general non-major ([#3272](https://github.com/truecharts/apps/issues/3272)) - -## [prometheus-4.0.43](https://github.com/truecharts/apps/compare/prometheus-4.0.41...prometheus-4.0.43) (2022-07-22) - -### Chore - -- Bump all charts to generate config and container references due to huge increase of repository -- update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) -- update docker general non-major ([#3266](https://github.com/truecharts/apps/issues/3266)) - -## [prometheus-4.0.41](https://github.com/truecharts/apps/compare/prometheus-4.0.40...prometheus-4.0.41) (2022-07-22) - -### Chore - -- update docker general non-major ([#3258](https://github.com/truecharts/apps/issues/3258)) - -## [prometheus-4.0.40](https://github.com/truecharts/apps/compare/prometheus-4.0.39...prometheus-4.0.40) (2022-07-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) - -## [prometheus-4.0.40](https://github.com/truecharts/apps/compare/prometheus-4.0.39...prometheus-4.0.40) (2022-07-21) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) - -## [prometheus-4.0.40](https://github.com/truecharts/apps/compare/prometheus-4.0.39...prometheus-4.0.40) (2022-07-21) - -### Chore - -- update docker general non-major ([#3239](https://github.com/truecharts/apps/issues/3239)) - -## [prometheus-4.0.39](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.20...prometheus-4.0.39) (2022-07-20) - -### Chore - -- update docker general non-major ([#3222](https://github.com/truecharts/apps/issues/3222)) - -## [prometheus-4.0.38](https://github.com/truecharts/apps/compare/prometheus-4.0.37...prometheus-4.0.38) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - -## [prometheus-4.0.37](https://github.com/truecharts/apps/compare/prometheus-4.0.36...prometheus-4.0.37) (2022-07-17) - -### Chore - -- update docker general non-major ([#3198](https://github.com/truecharts/apps/issues/3198)) - -## [prometheus-4.0.36](https://github.com/truecharts/apps/compare/prometheus-4.0.35...prometheus-4.0.36) (2022-07-16) - -### Chore - -- update docker general non-major ([#3192](https://github.com/truecharts/apps/issues/3192)) - -## [prometheus-4.0.35](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.19...prometheus-4.0.35) (2022-07-15) - -### Chore - -- update docker general non-major ([#3184](https://github.com/truecharts/apps/issues/3184)) - -## [prometheus-4.0.34](https://github.com/truecharts/apps/compare/prometheus-4.0.33...prometheus-4.0.34) (2022-07-14) - -### Fix - -- regenerate catalog and update template - -## [prometheus-4.0.33](https://github.com/truecharts/apps/compare/prometheus-4.0.31...prometheus-4.0.33) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - -## [prometheus-4.0.31](https://github.com/truecharts/apps/compare/prometheus-4.0.30...prometheus-4.0.31) (2022-07-13) - -### Chore - -- update docker general non-major ([#3157](https://github.com/truecharts/apps/issues/3157)) - -## [prometheus-4.0.30](https://github.com/truecharts/apps/compare/prometheus-4.0.28...prometheus-4.0.30) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - -## [prometheus-4.0.28](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.13...prometheus-4.0.28) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - -### [prometheus-4.0.27](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.12...prometheus-4.0.27) (2022-07-12) - -#### Chore - -- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) -- update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) - - - -### [prometheus-4.0.26](https://github.com/truecharts/apps/compare/prometheus-4.0.25...prometheus-4.0.26) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [prometheus-4.0.25](https://github.com/truecharts/apps/compare/prometheus-4.0.24...prometheus-4.0.25) (2022-07-09) - -#### Chore - -- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - -### [prometheus-4.0.24](https://github.com/truecharts/apps/compare/prometheus-4.0.23...prometheus-4.0.24) (2022-07-09) - -#### Chore - -- update docker general non-major ([#3106](https://github.com/truecharts/apps/issues/3106)) - - - -### [prometheus-4.0.23](https://github.com/truecharts/apps/compare/prometheus-4.0.22...prometheus-4.0.23) (2022-07-07) - -#### Chore - -- update docker general non-major ([#3089](https://github.com/truecharts/apps/issues/3089)) - - - -### [prometheus-4.0.22](https://github.com/truecharts/apps/compare/prometheus-4.0.21...prometheus-4.0.22) (2022-07-06) - -#### Chore - -- update docker general non-major ([#3078](https://github.com/truecharts/apps/issues/3078)) - - - -### [prometheus-4.0.21](https://github.com/truecharts/apps/compare/prometheus-4.0.20...prometheus-4.0.21) (2022-07-05) - -#### Chore - -- update docker general non-major ([#3071](https://github.com/truecharts/apps/issues/3071)) - - - -### [prometheus-4.0.20](https://github.com/truecharts/apps/compare/prometheus-4.0.19...prometheus-4.0.20) (2022-07-04) - -#### Chore - -- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - -### [prometheus-4.0.19](https://github.com/truecharts/apps/compare/prometheus-4.0.18...prometheus-4.0.19) (2022-07-04) - -#### Chore - -- update docker general non-major ([#3061](https://github.com/truecharts/apps/issues/3061)) - - - -### [prometheus-4.0.18](https://github.com/truecharts/apps/compare/prometheus-4.0.17...prometheus-4.0.18) (2022-07-03) - -#### Chore - -- update docker general non-major ([#3052](https://github.com/truecharts/apps/issues/3052)) - - - -### [prometheus-4.0.17](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.9...prometheus-4.0.17) (2022-07-01) - -#### Chore - -- update docker general non-major ([#3015](https://github.com/truecharts/apps/issues/3015)) - - - -### [prometheus-4.0.16](https://github.com/truecharts/apps/compare/prometheus-4.0.15...prometheus-4.0.16) (2022-06-29) - -#### Chore - -- update docker general non-major ([#3002](https://github.com/truecharts/apps/issues/3002)) - - - -### [prometheus-4.0.15](https://github.com/truecharts/apps/compare/prometheus-4.0.14...prometheus-4.0.15) (2022-06-27) - -#### Chore - -- update docker general non-major ([#2996](https://github.com/truecharts/apps/issues/2996)) - - - -### [prometheus-4.0.14](https://github.com/truecharts/apps/compare/prometheus-4.0.13...prometheus-4.0.14) (2022-06-25) - -#### Chore - -- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977)) - - - -### [prometheus-4.0.13](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.7...prometheus-4.0.13) (2022-06-25) - -#### Chore - -- update docker general non-major ([#2960](https://github.com/truecharts/apps/issues/2960)) - - - -### [prometheus-4.0.12](https://github.com/truecharts/apps/compare/prometheus-4.0.11...prometheus-4.0.12) (2022-06-22) - -#### Chore - -- update docker general non-major ([#2954](https://github.com/truecharts/apps/issues/2954)) -- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948)) - - - -### [prometheus-4.0.11](https://github.com/truecharts/apps/compare/prometheus-4.0.10...prometheus-4.0.11) (2022-06-21) - -#### Chore - -- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943)) -- update docker general non-major ([#2931](https://github.com/truecharts/apps/issues/2931)) - - - -### [prometheus-4.0.10](https://github.com/truecharts/apps/compare/prometheus-4.0.9...prometheus-4.0.10) (2022-06-18) - -#### Chore - -- update docker general non-major ([#2927](https://github.com/truecharts/apps/issues/2927)) - - - -### [prometheus-4.0.9](https://github.com/truecharts/apps/compare/prometheus-4.0.8...prometheus-4.0.9) (2022-06-17) - -#### Chore - -- update docker general non-major ([#2917](https://github.com/truecharts/apps/issues/2917)) - - - -### [prometheus-4.0.8](https://github.com/truecharts/apps/compare/prometheus-4.0.7...prometheus-4.0.8) (2022-06-15) - -#### Chore - -- update docker general non-major ([#2890](https://github.com/truecharts/apps/issues/2890)) - - - -### [prometheus-4.0.7](https://github.com/truecharts/apps/compare/prometheus-4.0.6...prometheus-4.0.7) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2887](https://github.com/truecharts/apps/issues/2887)) - - - -### [prometheus-4.0.6](https://github.com/truecharts/apps/compare/prometheus-4.0.5...prometheus-4.0.6) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886)) - - - -### [prometheus-4.0.5](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-4.0.3...prometheus-4.0.5) (2022-06-14) - -#### Chore - -- update docker general non-major ([#2872](https://github.com/truecharts/apps/issues/2872)) - - - -### [prometheus-4.0.4](https://github.com/truecharts/apps/compare/prometheus-4.0.3...prometheus-4.0.4) (2022-06-11) - -#### Chore - -- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854)) - - - -### [prometheus-4.0.3](https://github.com/truecharts/apps/compare/prometheus-4.0.2...prometheus-4.0.3) (2022-06-11) - -#### Chore - -- update docker general non-major ([#2848](https://github.com/truecharts/apps/issues/2848)) - - - -### [prometheus-4.0.2](https://github.com/truecharts/apps/compare/prometheus-4.0.1...prometheus-4.0.2) (2022-06-09) - -#### Chore - -- update docker general non-major ([#2846](https://github.com/truecharts/apps/issues/2846)) - - - -### [prometheus-4.0.1](https://github.com/truecharts/apps/compare/prometheus-4.0.0...prometheus-4.0.1) (2022-06-08) - -#### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#2839](https://github.com/truecharts/apps/issues/2839)) - - - -### [prometheus-4.0.1](https://github.com/truecharts/apps/compare/prometheus-4.0.0...prometheus-4.0.1) (2022-06-08) - -#### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#2839](https://github.com/truecharts/apps/issues/2839)) - - - -### [prometheus-4.0.1](https://github.com/truecharts/apps/compare/prometheus-4.0.0...prometheus-4.0.1) (2022-06-08) - -#### Chore - -- update docker general non-major ([#2839](https://github.com/truecharts/apps/issues/2839)) - - - -### [prometheus-4.0.0](https://github.com/truecharts/apps/compare/prometheus-3.0.1...prometheus-4.0.0) (2022-06-07) - -#### Chore - -- update helm general major helm releases ([#2804](https://github.com/truecharts/apps/issues/2804)) - -#### Fix - -- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format. - - - -### [prometheus-3.0.1](https://github.com/truecharts/apps/compare/prometheus-2.0.77...prometheus-3.0.1) (2022-06-07) - -#### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#2831](https://github.com/truecharts/apps/issues/2831)) - -#### Fix - -- remove malfunctioning SCALE migration script - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [prometheus-3.0.0](https://github.com/truecharts/apps/compare/prometheus-2.0.77...prometheus-3.0.0) (2022-06-07) - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [prometheus-2.0.77](https://github.com/truecharts/apps/compare/prometheus-2.0.76...prometheus-2.0.77) (2022-06-04) - -#### Chore - -- update docker general non-major ([#2826](https://github.com/truecharts/apps/issues/2826)) - - - -### [prometheus-2.0.76](https://github.com/truecharts/apps/compare/prometheus-2.0.75...prometheus-2.0.76) (2022-06-03) - -#### Chore - -- update docker general non-major ([#2821](https://github.com/truecharts/apps/issues/2821)) - - - -### [prometheus-2.0.75](https://github.com/truecharts/apps/compare/prometheus-2.0.74...prometheus-2.0.75) (2022-06-02) - -#### Chore - -- update docker general non-major ([#2806](https://github.com/truecharts/apps/issues/2806)) - - - -### [prometheus-2.0.74](https://github.com/truecharts/apps/compare/prometheus-2.0.73...prometheus-2.0.74) (2022-05-31) - -#### Chore - -- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803)) -- update docker general non-major ([#2791](https://github.com/truecharts/apps/issues/2791)) - - - -### [prometheus-2.0.73](https://github.com/truecharts/apps/compare/prometheus-2.0.72...prometheus-2.0.73) (2022-05-29) - -#### Chore - -- update docker general non-major ([#2762](https://github.com/truecharts/apps/issues/2762)) - - - -### [prometheus-2.0.72](https://github.com/truecharts/apps/compare/prometheus-2.0.71...prometheus-2.0.72) (2022-05-26) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [prometheus-2.0.72](https://github.com/truecharts/apps/compare/prometheus-2.0.71...prometheus-2.0.72) (2022-05-26) - -#### Chore - -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [prometheus-2.0.71](https://github.com/truecharts/apps/compare/prometheus-2.0.70...prometheus-2.0.71) (2022-05-26) - -#### Chore - -- update docker general non-major ([#2756](https://github.com/truecharts/apps/issues/2756)) - - - -### [prometheus-2.0.70](https://github.com/truecharts/apps/compare/prometheus-2.0.69...prometheus-2.0.70) (2022-05-25) - -#### Chore - -- update docker general non-major ([#2745](https://github.com/truecharts/apps/issues/2745)) - - - -### [prometheus-2.0.69](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.17...prometheus-2.0.69) (2022-05-24) - -#### Chore - -- update docker general non-major ([#2744](https://github.com/truecharts/apps/issues/2744)) -- update docker general non-major ([#2740](https://github.com/truecharts/apps/issues/2740)) - - - -### [prometheus-2.0.68](https://github.com/truecharts/apps/compare/prometheus-2.0.67...prometheus-2.0.68) (2022-05-24) - -#### Chore - -- update helm general non-major helm releases - - - -### [prometheus-2.0.67](https://github.com/truecharts/apps/compare/prometheus-2.0.66...prometheus-2.0.67) (2022-05-23) - -#### Chore - -- update docker general non-major ([#2733](https://github.com/truecharts/apps/issues/2733)) - - - -### [prometheus-2.0.66](https://github.com/truecharts/apps/compare/prometheus-2.0.63...prometheus-2.0.66) (2022-05-22) - -#### Chore - -- update docker general non-major ([#2730](https://github.com/truecharts/apps/issues/2730)) -- update docker general non-major ([#2724](https://github.com/truecharts/apps/issues/2724)) -- update docker general non-major ([#2720](https://github.com/truecharts/apps/issues/2720)) - - - -### [prometheus-2.0.63](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.16...prometheus-2.0.63) (2022-05-19) - -#### Chore - -- update docker general non-major ([#2711](https://github.com/truecharts/apps/issues/2711)) - - - -### [prometheus-2.0.62](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.15...prometheus-2.0.62) (2022-05-18) - -#### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#2706](https://github.com/truecharts/apps/issues/2706)) -- update helm general non-major helm releases - - - -### [prometheus-2.0.61](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.15...prometheus-2.0.61) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [prometheus-2.0.60](https://github.com/truecharts/apps/compare/prometheus-2.0.59...prometheus-2.0.60) (2022-05-17) - -#### Chore - -- update docker general non-major ([#2695](https://github.com/truecharts/apps/issues/2695)) -- update helm general non-major helm releases - - - -### [prometheus-2.0.59](https://github.com/truecharts/apps/compare/prometheus-2.0.58...prometheus-2.0.59) (2022-05-16) - -#### Chore - -- update docker general non-major ([#2692](https://github.com/truecharts/apps/issues/2692)) - - - -### [prometheus-2.0.58](https://github.com/truecharts/apps/compare/prometheus-2.0.57...prometheus-2.0.58) (2022-05-15) - -#### Chore - -- update docker general non-major ([#2686](https://github.com/truecharts/apps/issues/2686)) - - - -### [prometheus-2.0.57](https://github.com/truecharts/apps/compare/prometheus-2.0.56...prometheus-2.0.57) (2022-05-14) - -#### Chore - -- update docker general non-major ([#2679](https://github.com/truecharts/apps/issues/2679)) - - - -### [prometheus-2.0.56](https://github.com/truecharts/apps/compare/prometheus-2.0.55...prometheus-2.0.56) (2022-05-13) - -#### Chore - -- update docker general non-major ([#2658](https://github.com/truecharts/apps/issues/2658)) - - - -### [prometheus-2.0.55](https://github.com/truecharts/apps/compare/prometheus-2.0.54...prometheus-2.0.55) (2022-05-11) - -#### Chore - -- update docker general non-major ([#2653](https://github.com/truecharts/apps/issues/2653)) - - - -### [prometheus-2.0.54](https://github.com/truecharts/apps/compare/prometheus-2.0.53...prometheus-2.0.54) (2022-05-10) - -#### Chore - -- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649)) - - - -### [prometheus-2.0.53](https://github.com/truecharts/apps/compare/prometheus-2.0.52...prometheus-2.0.53) (2022-05-10) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.52](https://github.com/truecharts/apps/compare/prometheus-2.0.51...prometheus-2.0.52) (2022-05-09) - -#### Chore - -- update docker general non-major ([#2641](https://github.com/truecharts/apps/issues/2641)) - - - -### [prometheus-2.0.51](https://github.com/truecharts/apps/compare/prometheus-2.0.50...prometheus-2.0.51) (2022-05-08) - -#### Chore - -- update docker general non-major ([#2639](https://github.com/truecharts/apps/issues/2639)) - - - -### [prometheus-2.0.50](https://github.com/truecharts/apps/compare/prometheus-2.0.49...prometheus-2.0.50) (2022-05-06) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.49](https://github.com/truecharts/apps/compare/prometheus-2.0.48...prometheus-2.0.49) (2022-05-06) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.48](https://github.com/truecharts/apps/compare/prometheus-2.0.47...prometheus-2.0.48) (2022-05-05) - -#### Chore - -- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612)) - - - -### [prometheus-2.0.47](https://github.com/truecharts/apps/compare/prometheus-2.0.46...prometheus-2.0.47) (2022-05-04) - -#### Chore - -- update docker general non-major ([#2606](https://github.com/truecharts/apps/issues/2606)) - - - -### [prometheus-2.0.46](https://github.com/truecharts/apps/compare/prometheus-2.0.45...prometheus-2.0.46) (2022-04-29) - -#### Chore - -- update docker general non-major ([#2581](https://github.com/truecharts/apps/issues/2581)) - - - -### [prometheus-2.0.45](https://github.com/truecharts/apps/compare/prometheus-2.0.44...prometheus-2.0.45) (2022-04-28) - -#### Chore - -- update docker general non-major ([#2577](https://github.com/truecharts/apps/issues/2577)) - - - -### [prometheus-2.0.44](https://github.com/truecharts/apps/compare/prometheus-2.0.43...prometheus-2.0.44) (2022-04-26) - -#### Chore - -- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573)) - - - -### [prometheus-2.0.43](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.11...prometheus-2.0.43) (2022-04-26) - -#### Chore - -- update docker general non-major ([#2571](https://github.com/truecharts/apps/issues/2571)) - - - -### [prometheus-2.0.42](https://github.com/truecharts/apps/compare/prometheus-2.0.41...prometheus-2.0.42) (2022-04-20) - -#### Chore - -- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524)) - - - -### [prometheus-2.0.41](https://github.com/truecharts/apps/compare/prometheus-2.0.40...prometheus-2.0.41) (2022-04-20) - -#### Chore - -- update docker general non-major ([#2522](https://github.com/truecharts/apps/issues/2522)) - - - -### [prometheus-2.0.40](https://github.com/truecharts/apps/compare/prometheus-2.0.39...prometheus-2.0.40) (2022-04-18) - -#### Chore - -- update docker general non-major ([#2502](https://github.com/truecharts/apps/issues/2502)) - - - -### [prometheus-2.0.39](https://github.com/truecharts/apps/compare/prometheus-2.0.38...prometheus-2.0.39) (2022-04-17) - -#### Chore - -- update docker general non-major ([#2497](https://github.com/truecharts/apps/issues/2497)) - - - -### [prometheus-2.0.38](https://github.com/truecharts/apps/compare/prometheus-2.0.37...prometheus-2.0.38) (2022-04-16) - -#### Chore - -- update docker general non-major ([#2494](https://github.com/truecharts/apps/issues/2494)) - - - -### [prometheus-2.0.37](https://github.com/truecharts/apps/compare/prometheus-2.0.36...prometheus-2.0.37) (2022-04-13) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.36](https://github.com/truecharts/apps/compare/prometheus-2.0.35...prometheus-2.0.36) (2022-04-12) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.35](https://github.com/truecharts/apps/compare/prometheus-2.0.34...prometheus-2.0.35) (2022-04-12) - -#### Chore - -- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480)) - - - -### [prometheus-2.0.34](https://github.com/truecharts/apps/compare/prometheus-2.0.33...prometheus-2.0.34) (2022-04-12) - -#### Chore - -- update docker general non-major ([#2478](https://github.com/truecharts/apps/issues/2478)) - - - -### [prometheus-2.0.33](https://github.com/truecharts/apps/compare/prometheus-2.0.32...prometheus-2.0.33) (2022-04-09) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.32](https://github.com/truecharts/apps/compare/prometheus-2.0.31...prometheus-2.0.32) (2022-04-09) - -#### Chore - -- update docker general non-major ([#2460](https://github.com/truecharts/apps/issues/2460)) - - - -### [prometheus-2.0.31](https://github.com/truecharts/apps/compare/prometheus-2.0.30...prometheus-2.0.31) (2022-04-06) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.30](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.9...prometheus-2.0.30) (2022-04-04) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.29](https://github.com/truecharts/apps/compare/prometheus-2.0.28...prometheus-2.0.29) (2022-04-03) - -#### Chore - -- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410)) -- update docker general non-major ([#2414](https://github.com/truecharts/apps/issues/2414)) - - - -### [prometheus-2.0.28](https://github.com/truecharts/apps/compare/prometheus-2.0.27...prometheus-2.0.28) (2022-04-03) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.27](https://github.com/truecharts/apps/compare/prometheus-2.0.26...prometheus-2.0.27) (2022-04-02) - -#### Chore - -- update docker general non-major ([#2383](https://github.com/truecharts/apps/issues/2383)) - - - -### [prometheus-2.0.26](https://github.com/truecharts/apps/compare/prometheus-2.0.25...prometheus-2.0.26) (2022-04-01) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.25](https://github.com/truecharts/apps/compare/prometheus-2.0.23...prometheus-2.0.25) (2022-03-31) - -#### Chore - -- update docker general non-major ([#2357](https://github.com/truecharts/apps/issues/2357)) -- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361)) - - - -### [prometheus-2.0.23](https://github.com/truecharts/apps/compare/prometheus-2.0.22...prometheus-2.0.23) (2022-03-30) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354)) - - - -### [prometheus-2.0.22](https://github.com/truecharts/apps/compare/prometheus-2.0.21...prometheus-2.0.22) (2022-03-30) - -#### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#2349](https://github.com/truecharts/apps/issues/2349)) - - - -### [prometheus-2.0.21](https://github.com/truecharts/apps/compare/prometheus-2.0.20...prometheus-2.0.21) (2022-03-30) - -#### Chore - -- update docker general non-major ([#2347](https://github.com/truecharts/apps/issues/2347)) - - - -### [prometheus-2.0.20](https://github.com/truecharts/apps/compare/prometheus-2.0.19...prometheus-2.0.20) (2022-03-30) - -#### Chore - -- update docker general non-major ([#2338](https://github.com/truecharts/apps/issues/2338)) - - - -### [prometheus-2.0.19](https://github.com/truecharts/apps/compare/prometheus-2.0.18...prometheus-2.0.19) (2022-03-28) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.18](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.6...prometheus-2.0.18) (2022-03-27) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.17](https://github.com/truecharts/apps/compare/prometheus-2.0.16...prometheus-2.0.17) (2022-03-26) - -#### Chore - -- bump all apps to trigger ci - - - -### [prometheus-2.0.15](https://github.com/truecharts/apps/compare/prometheus-2.0.14...prometheus-2.0.15) (2022-03-26) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.14](https://github.com/truecharts/apps/compare/prometheus-2.0.13...prometheus-2.0.14) (2022-03-24) - -#### Chore - -- update docker general non-major - - - -### [prometheus-2.0.13](https://github.com/truecharts/apps/compare/prometheus-2.0.12...prometheus-2.0.13) (2022-03-24) - -#### Chore - -- update docker general non-major ([#2259](https://github.com/truecharts/apps/issues/2259)) - - - -### [prometheus-2.0.12](https://github.com/truecharts/apps/compare/prometheus-2.0.11...prometheus-2.0.12) (2022-03-23) - -#### Chore - -- update docker general non-major -- update docker general non-major - - - -### [prometheus-2.0.10](https://github.com/truecharts/apps/compare/prometheus-2.0.9...prometheus-2.0.10) (2022-03-20) - -#### Chore - -- update docker general non-major -- update docker general non-major - - - -### [prometheus-2.0.8](https://github.com/truecharts/apps/compare/prometheus-2.0.7...prometheus-2.0.8) (2022-03-17) - -#### Chore - -- update helm general non-major helm releases ([#2186](https://github.com/truecharts/apps/issues/2186)) - - - -### [prometheus-2.0.7](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.2...prometheus-2.0.7) (2022-03-17) - -#### Chore - -- update docker general non-major ([#2198](https://github.com/truecharts/apps/issues/2198)) -- update docker general non-major ([#2196](https://github.com/truecharts/apps/issues/2196)) - - - -### [prometheus-2.0.5](https://github.com/truecharts/apps/compare/prometheus-2.0.4...prometheus-2.0.5) (2022-03-15) - -#### Chore - -- update docker general non-major ([#2178](https://github.com/truecharts/apps/issues/2178)) - - - -### [prometheus-2.0.4](https://github.com/truecharts/apps/compare/prometheus-2.0.3...prometheus-2.0.4) (2022-03-15) - -#### Chore - -- update docker general non-major ([#2175](https://github.com/truecharts/apps/issues/2175)) - - - -### [prometheus-2.0.3](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.1...prometheus-2.0.3) (2022-03-08) - -#### Chore - -- update helm general non-major helm releases ([#2116](https://github.com/truecharts/apps/issues/2116)) - - - -### [prometheus-2.0.2](https://github.com/truecharts/apps/compare/prometheus-2.0.1...prometheus-2.0.2) (2022-03-07) - -#### Chore - -- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111)) -- update docker general non-major ([#2108](https://github.com/truecharts/apps/issues/2108)) - - - -### [prometheus-2.0.1](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-3.0.0...prometheus-2.0.1) (2022-03-07) - -#### Chore - -- update docker general non-major ([#2046](https://github.com/truecharts/apps/issues/2046)) -- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040)) - - - -### [prometheus-2.0.0](https://github.com/truecharts/apps/compare/prometheus-1.1.73...prometheus-2.0.0) (2022-03-03) - -#### Chore - -- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021)) -- update docker general non-major ([#2008](https://github.com/truecharts/apps/issues/2008)) - - - -### [prometheus-1.1.73](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.23...prometheus-1.1.73) (2022-03-03) - -#### Chore - -- update docker general non-major ([#2006](https://github.com/truecharts/apps/issues/2006)) - - - -### [prometheus-1.1.72](https://github.com/truecharts/apps/compare/prometheus-1.1.71...prometheus-1.1.72) (2022-03-02) - -#### Chore - -- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999)) - - - -### [prometheus-1.1.71](https://github.com/truecharts/apps/compare/prometheus-1.1.70...prometheus-1.1.71) (2022-02-28) - -#### Chore - -- update docker general non-major ([#1983](https://github.com/truecharts/apps/issues/1983)) - - - -### [prometheus-1.1.70](https://github.com/truecharts/apps/compare/prometheus-1.1.69...prometheus-1.1.70) (2022-02-28) - -#### Chore - -- update docker general non-major ([#1980](https://github.com/truecharts/apps/issues/1980)) - - - -### [prometheus-1.1.69](https://github.com/truecharts/apps/compare/prometheus-1.1.68...prometheus-1.1.69) (2022-02-26) - -#### Fix - -- enable hostNetworking and change port ([#1969](https://github.com/truecharts/apps/issues/1969)) - - - -### [prometheus-1.1.68](https://github.com/truecharts/apps/compare/prometheus-1.1.67...prometheus-1.1.68) (2022-02-26) - -#### Chore - -- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957)) - -#### Fix - -- don't export node-exporter on host - - - -### [prometheus-1.1.67](https://github.com/truecharts/apps/compare/prometheus-1.1.66...prometheus-1.1.67) (2022-02-22) - -#### Chore - -- update helm general non-major helm releases ([#1932](https://github.com/truecharts/apps/issues/1932)) - - - -### [prometheus-1.1.66](https://github.com/truecharts/apps/compare/prometheus-1.1.65...prometheus-1.1.66) (2022-02-21) - -#### Chore - -- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927)) - - - -### [prometheus-1.1.65](https://github.com/truecharts/apps/compare/prometheus-1.1.64...prometheus-1.1.65) (2022-02-21) - -#### Chore - -- update docker general non-major ([#1924](https://github.com/truecharts/apps/issues/1924)) - - - -### [prometheus-1.1.64](https://github.com/truecharts/apps/compare/prometheus-1.1.63...prometheus-1.1.64) (2022-02-15) - -#### Chore - -- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901)) - - - -### [prometheus-1.1.63](https://github.com/truecharts/apps/compare/prometheus-1.1.62...prometheus-1.1.63) (2022-02-14) - -#### Chore - -- update docker general non-major ([#1895](https://github.com/truecharts/apps/issues/1895)) - - - -### [prometheus-1.1.62](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.20...prometheus-1.1.62) (2022-02-10) - -#### Chore - -- update docker general non-major ([#1876](https://github.com/truecharts/apps/issues/1876)) - - - -### [prometheus-1.1.61](https://github.com/truecharts/apps/compare/prometheus-1.1.60...prometheus-1.1.61) (2022-02-08) - -#### Chore - -- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871)) - - - -### [prometheus-1.1.60](https://github.com/truecharts/apps/compare/prometheus-1.1.59...prometheus-1.1.60) (2022-02-08) - -#### Chore - -- update docker general non-major ([#1869](https://github.com/truecharts/apps/issues/1869)) - - - -### [prometheus-1.1.59](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.19...prometheus-1.1.59) (2022-02-07) - -#### Chore - -- update docker general non-major ([#1863](https://github.com/truecharts/apps/issues/1863)) - - - -### [prometheus-1.1.58](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.18...prometheus-1.1.58) (2022-02-06) - -#### Chore - -- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859)) -- update docker general non-major ([#1855](https://github.com/truecharts/apps/issues/1855)) - - - -### [prometheus-1.1.57](https://github.com/truecharts/apps/compare/prometheus-1.1.56...prometheus-1.1.57) (2022-02-05) - -#### Chore - -- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852)) -- update docker general non-major ([#1849](https://github.com/truecharts/apps/issues/1849)) - - - -### [prometheus-1.1.56](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.17...prometheus-1.1.56) (2022-02-03) - -#### Chore - -- update docker general non-major ([#1836](https://github.com/truecharts/apps/issues/1836)) - - - -### [prometheus-1.1.55](https://github.com/truecharts/apps/compare/prometheus-1.1.54...prometheus-1.1.55) (2022-02-02) - -#### Chore - -- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828)) - - - -### [prometheus-1.1.54](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.16...prometheus-1.1.54) (2022-01-31) - -#### Chore - -- update docker general non-major docker tags ([#1823](https://github.com/truecharts/apps/issues/1823)) - - - -### [prometheus-1.1.53](https://github.com/truecharts/apps/compare/prometheus-1.1.52...prometheus-1.1.53) (2022-01-25) - -#### Chore - -- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791)) - - - -### [prometheus-1.1.52](https://github.com/truecharts/apps/compare/prometheus-1.1.51...prometheus-1.1.52) (2022-01-24) - -#### Chore - -- update docker general non-major docker tags ([#1787](https://github.com/truecharts/apps/issues/1787)) - - - -### [prometheus-1.1.51](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.15...prometheus-1.1.51) (2022-01-24) - -#### Chore - -- update docker general non-major ([#1786](https://github.com/truecharts/apps/issues/1786)) - - - -### [prometheus-1.1.50](https://github.com/truecharts/apps/compare/prometheus-1.1.49...prometheus-1.1.50) (2022-01-22) - -#### Chore - -- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766)) - - - -### [prometheus-1.1.49](https://github.com/truecharts/apps/compare/prometheus-1.1.48...prometheus-1.1.49) (2022-01-22) - -#### Chore - -- update docker general non-major ([#1764](https://github.com/truecharts/apps/issues/1764)) - - - -### [prometheus-1.1.48](https://github.com/truecharts/apps/compare/prometheus-1.1.47...prometheus-1.1.48) (2022-01-21) - -#### Chore - -- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759)) - - - -### [prometheus-1.1.47](https://github.com/truecharts/apps/compare/prometheus-1.1.46...prometheus-1.1.47) (2022-01-21) - -#### Chore - -- update docker general non-major ([#1757](https://github.com/truecharts/apps/issues/1757)) - - - -### [prometheus-1.1.46](https://github.com/truecharts/apps/compare/prometheus-1.1.45...prometheus-1.1.46) (2022-01-21) - -#### Chore - -- update docker general non-major ([#1751](https://github.com/truecharts/apps/issues/1751)) - -#### Fix - -- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750)) - - - -### [prometheus-1.1.45](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.13...prometheus-1.1.45) (2022-01-19) - -#### Chore - -- update docker general non-major ([#1741](https://github.com/truecharts/apps/issues/1741)) - - - -### [prometheus-1.1.43](https://github.com/truecharts/apps/compare/prometheus-1.1.42...prometheus-1.1.43) (2022-01-17) - -#### Chore - -- update docker general non-major ([#1728](https://github.com/truecharts/apps/issues/1728)) - - - -### [prometheus-1.1.42](https://github.com/truecharts/apps/compare/prometheus-1.1.41...prometheus-1.1.42) (2022-01-13) - -#### Chore - -- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712)) - - - -### [prometheus-1.1.41](https://github.com/truecharts/apps/compare/prometheus-1.1.40...prometheus-1.1.41) (2022-01-12) - -#### Chore - -- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704)) - - - -### [prometheus-1.1.40](https://github.com/truecharts/apps/compare/prometheus-1.1.39...prometheus-1.1.40) (2022-01-11) - -#### Chore - -- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693)) - - - -### [prometheus-1.1.39](https://github.com/truecharts/apps/compare/prometheus-1.1.38...prometheus-1.1.39) (2022-01-10) - -#### Chore - -- update docker general non-major docker tags ([#1687](https://github.com/truecharts/apps/issues/1687)) - - - -### [prometheus-1.1.38](https://github.com/truecharts/apps/compare/prometheus-1.1.37...prometheus-1.1.38) (2022-01-10) - -#### Chore - -- update docker general non-major ([#1685](https://github.com/truecharts/apps/issues/1685)) - - - -### [prometheus-1.1.37](https://github.com/truecharts/apps/compare/prometheus-1.1.36...prometheus-1.1.37) (2022-01-10) - -#### Chore - -- update docker general non-major ([#1677](https://github.com/truecharts/apps/issues/1677)) - - - -### [prometheus-1.1.36](https://github.com/truecharts/apps/compare/prometheus-1.1.35...prometheus-1.1.36) (2022-01-09) - -#### Fix - -- fix logic in tpl ([#1668](https://github.com/truecharts/apps/issues/1668)) - - - -### [prometheus-1.1.35](https://github.com/truecharts/apps/compare/prometheus-1.1.34...prometheus-1.1.35) (2022-01-04) - -#### Chore - -- update helm general non-major helm releases - - - -### [prometheus-1.1.34](https://github.com/truecharts/apps/compare/prometheus-1.1.33...prometheus-1.1.34) (2022-01-04) - -#### Chore - -- update docker general non-major ([#1648](https://github.com/truecharts/apps/issues/1648)) - - - -### [prometheus-1.1.33](https://github.com/truecharts/apps/compare/prometheus-1.1.32...prometheus-1.1.33) (2022-01-03) - -#### Chore - -- update docker general non-major ([#1646](https://github.com/truecharts/apps/issues/1646)) - - - -### [prometheus-1.1.32](https://github.com/truecharts/apps/compare/prometheus-1.1.31...prometheus-1.1.32) (2021-12-28) - -#### Chore - -- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623)) - - - -### [prometheus-1.1.31](https://github.com/truecharts/apps/compare/prometheus-1.1.30...prometheus-1.1.31) (2021-12-27) - -#### Chore - -- update docker general non-major ([#1615](https://github.com/truecharts/apps/issues/1615)) - - - -### [prometheus-1.1.30](https://github.com/truecharts/apps/compare/prometheus-1.1.29...prometheus-1.1.30) (2021-12-26) - -#### Fix - -- fix default ingress on traefik ([#1614](https://github.com/truecharts/apps/issues/1614)) - - - -### [prometheus-1.1.29](https://github.com/truecharts/apps/compare/prometheus-1.1.28...prometheus-1.1.29) (2021-12-24) - -#### Chore - -- update docker general non-major docker tags ([#1609](https://github.com/truecharts/apps/issues/1609)) - - - -### [prometheus-1.1.28](https://github.com/truecharts/apps/compare/prometheus-1.1.27...prometheus-1.1.28) (2021-12-24) - -#### Chore - -- update docker general non-major ([#1607](https://github.com/truecharts/apps/issues/1607)) - - - -### [prometheus-1.1.27](https://github.com/truecharts/apps/compare/prometheus-1.1.26...prometheus-1.1.27) (2021-12-21) - -#### Chore - -- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596)) -- update docker general non-major ([#1595](https://github.com/truecharts/apps/issues/1595)) - - - -### [prometheus-1.1.26](https://github.com/truecharts/apps/compare/prometheus-1.1.25...prometheus-1.1.26) (2021-12-20) - -#### Chore - -- update docker general non-major ([#1589](https://github.com/truecharts/apps/issues/1589)) - - - -### [prometheus-1.1.25](https://github.com/truecharts/apps/compare/prometheus-1.1.24...prometheus-1.1.25) (2021-12-20) - -#### Chore - -- update docker general non-major ([#1585](https://github.com/truecharts/apps/issues/1585)) - - - -### [prometheus-1.1.24](https://github.com/truecharts/apps/compare/prometheus-1.1.23...prometheus-1.1.24) (2021-12-20) - -#### Chore - -- update docker general non-major ([#1581](https://github.com/truecharts/apps/issues/1581)) - - - -### [prometheus-1.1.23](https://github.com/truecharts/apps/compare/prometheus-1.1.22...prometheus-1.1.23) (2021-12-19) - -#### Chore - -- Last patch bump before RC2 branch-off - - - -### [prometheus-1.1.22](https://github.com/truecharts/apps/compare/prometheus-1.1.21...prometheus-1.1.22) (2021-12-19) - -#### Chore - -- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571)) - - - -### [prometheus-1.1.21](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.4...prometheus-1.1.21) (2021-12-19) - -#### Chore - -- update docker general non-major ([#1567](https://github.com/truecharts/apps/issues/1567)) - - - -### [prometheus-1.1.20](https://github.com/truecharts/apps/compare/prometheus-1.1.19...prometheus-1.1.20) (2021-12-14) - -#### Chore - -- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535)) - - - -### [prometheus-1.1.19](https://github.com/truecharts/apps/compare/prometheus-1.1.18...prometheus-1.1.19) (2021-12-13) - -#### Chore - -- update docker general non-major ([#1531](https://github.com/truecharts/apps/issues/1531)) - - - -### [prometheus-1.1.18](https://github.com/truecharts/apps/compare/prometheus-1.1.17...prometheus-1.1.18) (2021-12-13) - -#### Chore - -- move incubator apps to stable and bump everything - - - -### [prometheus-1.1.17](https://github.com/truecharts/apps/compare/prometheus-1.1.16...prometheus-1.1.17) (2021-12-13) - -#### Chore - -- update docker general non-major ([#1522](https://github.com/truecharts/apps/issues/1522)) - - - -### [prometheus-1.1.16](https://github.com/truecharts/apps/compare/prometheus-1.1.15...prometheus-1.1.16) (2021-12-12) - -#### Chore - -- update docker general non-major ([#1518](https://github.com/truecharts/apps/issues/1518)) - - - -### [prometheus-1.1.15](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-2.0.0...prometheus-1.1.15) (2021-12-11) - -#### Chore - -- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509)) - - - -### [prometheus-1.1.14](https://github.com/truecharts/apps/compare/prometheus-1.1.13...prometheus-1.1.14) (2021-12-11) - -#### Chore - -- update non-major docker ([#1507](https://github.com/truecharts/apps/issues/1507)) - - - -### [prometheus-1.1.13](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-1.0.9...prometheus-1.1.13) (2021-12-08) - -#### Chore - -- update non-major ([#1488](https://github.com/truecharts/apps/issues/1488)) - - - -### [prometheus-1.1.12](https://github.com/truecharts/apps/compare/prometheus-1.1.11...prometheus-1.1.12) (2021-12-07) - -#### Chore - -- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481)) - - - -### [prometheus-1.1.11](https://github.com/truecharts/apps/compare/prometheus-1.1.10...prometheus-1.1.11) (2021-12-07) - -#### Chore - -- update non-major ([#1485](https://github.com/truecharts/apps/issues/1485)) - - - -### [prometheus-1.1.10](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-1.0.8...prometheus-1.1.10) (2021-12-07) - -#### Chore - -- update non-major ([#1475](https://github.com/truecharts/apps/issues/1475)) - - - -### prometheus-1.1.9 (2021-12-05) - -#### Chore - -- bump apps to generate security page -- ensure container references are prefixed with v -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major ([#1466](https://github.com/truecharts/apps/issues/1466)) -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) -- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471)) -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) -- update non-major ([#1427](https://github.com/truecharts/apps/issues/1427)) - -#### Fix - -- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428)) - - - -### [prometheus-1.1.8](https://github.com/truecharts/apps/compare/prometheus-1.1.7...prometheus-1.1.8) (2021-12-05) - -#### Chore - -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) - - - -### [prometheus-1.1.7](https://github.com/truecharts/apps/compare/prometheus-1.1.6...prometheus-1.1.7) (2021-12-05) - -#### Chore - -- update non-major ([#1466](https://github.com/truecharts/apps/issues/1466)) - - - -### [prometheus-1.1.6](https://github.com/truecharts/apps/compare/prometheus-1.1.5...prometheus-1.1.6) (2021-12-04) - -#### Chore - -- bump apps to generate security page - - - -### [prometheus-1.1.5](https://github.com/truecharts/apps/compare/prometheus-1.1.4...prometheus-1.1.5) (2021-12-04) - -#### Chore - -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) - - - -### [prometheus-1.1.4](https://github.com/truecharts/apps/compare/prometheus-1.1.3...prometheus-1.1.4) (2021-12-03) - -#### Chore - -- ensure container references are prefixed with v -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) - - - -### [prometheus-1.1.3](https://github.com/truecharts/apps/compare/prometheus-1.1.2...prometheus-1.1.3) (2021-11-30) - -#### Chore - -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - - - -### [prometheus-1.1.2](https://github.com/truecharts/apps/compare/prometheus-1.1.1...prometheus-1.1.2) (2021-11-30) - -#### Chore - -- update non-major ([#1427](https://github.com/truecharts/apps/issues/1427)) -- update non-major deps helm releases - - - -### [prometheus-1.1.0](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-1.0.0...prometheus-1.1.0) (2021-11-25) - -#### Feat - -- add more default exporters to prometheus ([#1406](https://github.com/truecharts/apps/issues/1406)) - - - -### [prometheus-1.0.1](https://github.com/truecharts/apps/compare/prometheus-1.0.0...prometheus-1.0.1) (2021-11-24) - -#### Chore - -- bump version - -#### Fix - -- correctly digest pin the containers - - - -### [prometheus-1.0.0](https://github.com/truecharts/apps/compare/uptimerobot-prometheus-0.0.1...prometheus-1.0.0) (2021-11-24) - -#### Feat - -- add more config options to GUI ([#1398](https://github.com/truecharts/apps/issues/1398)) - - - -### [prometheus-0.0.10](https://github.com/truecharts/apps/compare/prometheus-0.0.9...prometheus-0.0.10) (2021-11-23) - -#### Fix - -- correct port reference for alertmanager - - - -### [prometheus-0.0.9](https://github.com/truecharts/apps/compare/prometheus-0.0.8...prometheus-0.0.9) (2021-11-23) - -#### Chore - -- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386)) - - - -### [prometheus-0.0.8](https://github.com/truecharts/apps/compare/prometheus-0.0.5...prometheus-0.0.8) (2021-11-22) - -#### Chore - -- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383)) -- don't allow config of promop service and remove reminants - -#### Fix - -- use correct port for alertmanager probe - - - -### [prometheus-0.0.5](https://github.com/truecharts/apps/compare/prometheus-0.0.4...prometheus-0.0.5) (2021-11-22) - -#### Fix - -- migrate away services - - - -### [prometheus-0.0.4](https://github.com/truecharts/apps/compare/prometheus-0.0.3...prometheus-0.0.4) (2021-11-22) - -#### Fix - -- correct prometheus GUI mistakes - - - -### [prometheus-0.0.3](https://github.com/truecharts/apps/compare/prometheus-0.0.2...prometheus-0.0.3) (2021-11-22) - -#### Chore - -- some cleanup - - - -### [prometheus-0.0.2](https://github.com/truecharts/apps/compare/prometheus-0.0.1...prometheus-0.0.2) (2021-11-22) - -#### Fix - -- more thoroughly show services on SCALE - - - -### prometheus-0.0.1 (2021-11-22) - -#### Add - -- add prometheus prototype ([#1379](https://github.com/truecharts/apps/issues/1379)) diff --git a/archive/charts/premium/prometheus/Chart.yaml b/archive/charts/premium/prometheus/Chart.yaml deleted file mode 100644 index 85684021d06..00000000000 --- a/archive/charts/premium/prometheus/Chart.yaml +++ /dev/null @@ -1,45 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: metrics - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: premium -apiVersion: v2 -appVersion: 3.0.1 -dependencies: - - name: common - version: 25.4.10 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: kube-prometheus-stack - version: 69.8.0 - repository: oci://ghcr.io/prometheus-community/charts - condition: "" - alias: kps - tags: [] - import-values: [] -deprecated: true -description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. -home: https://truecharts.org/charts/premium/prometheus -icon: https://truecharts.org/img/hotlink-ok/chart-icons/prometheus.webp -keywords: - - metrics -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: prometheus -sources: - - https://gallery.ecr.aws/bitnami/alertmanager - - https://gallery.ecr.aws/bitnami/prometheus - - https://github.com/prometheus-community/helm-charts - - https://github.com/prometheus-operator/kube-prometheus - - https://github.com/truecharts/charts/tree/master/charts/premium/prometheus - - https://quay.io/thanos/thanos -type: application -version: 22.5.3 diff --git a/archive/charts/premium/prometheus/README.md b/archive/charts/premium/prometheus/README.md deleted file mode 100644 index 4c343d4b69f..00000000000 --- a/archive/charts/premium/prometheus/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/prometheus) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/prometheus` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/premium/prometheus - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/premium/prometheus/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/premium/prometheus/icon-small.webp b/archive/charts/premium/prometheus/icon-small.webp deleted file mode 100644 index ba5fa635e121142d4afed88c192e5f3c9068b840..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 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 diff --git a/archive/charts/premium/prometheus/templates/NOTES.txt b/archive/charts/premium/prometheus/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/premium/prometheus/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/premium/prometheus/templates/_helpers.tpl b/archive/charts/premium/prometheus/templates/_helpers.tpl deleted file mode 100644 index 1f44049ac4c..00000000000 --- a/archive/charts/premium/prometheus/templates/_helpers.tpl +++ /dev/null @@ -1,210 +0,0 @@ -{{/* Name suffixed with operator */}} -{{- define "kube-prometheus.fullname" -}} -{{- printf "%s" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Name suffixed with operator */}} -{{- define "kube-prometheus.name" -}} -{{- printf "%s" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Name suffixed with operator */}} -{{- define "kube-prometheus.operator.name" -}} -{{- printf "%s-operator" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Name suffixed with prometheus */}} -{{- define "kube-prometheus.prometheus.name" -}} -{{- printf "%s-prometheus" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Name suffixed with alertmanager */}} -{{- define "kube-prometheus.alertmanager.name" -}} -{{- printf "%s-alertmanager" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Name suffixed with thanos */}} -{{- define "kube-prometheus.thanos.name" -}} -{{- printf "%s-thanos" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Fullname suffixed with operator */}} -{{- define "kube-prometheus.operator.fullname" -}} -{{- printf "%s-operator" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Fullname suffixed with prometheus */}} -{{- define "kube-prometheus.prometheus.fullname" -}} -{{- printf "%s-prometheus" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Fullname suffixed with alertmanager */}} -{{- define "kube-prometheus.alertmanager.fullname" -}} -{{- printf "%s-alertmanager" (include "tc.v1.common.lib.chart.names.fullname" . ) -}} -{{- end }} - -{{/* Fullname suffixed with thanos */}} -{{- define "kube-prometheus.thanos.fullname" -}} -{{- printf "%s-thanos" (include "kube-prometheus.prometheus.fullname" .) -}} -{{- end }} - -{{- define "kube-prometheus.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common Labels -*/}} -{{- define "kube-prometheus.labels" -}} - {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} - {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} - {{- . | nindent 0 }} - {{- end }} -{{- if .Values.global.labels }} -{{ toYaml .Values.global.labels }} -{{- end }} -{{- end -}} - -{{/* -Labels for operator -*/}} -{{- define "kube-prometheus.operator.labels" -}} - {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} - {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} - {{- . | nindent 0 }} - {{- end }} -app.kubernetes.io/component: operator -{{- end -}} - -{{/* -Labels for prometheus -*/}} -{{- define "kube-prometheus.prometheus.labels" -}} - {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} - {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} - {{- . | nindent 0 }} - {{- end }} -app.kubernetes.io/component: prometheus -{{- end -}} - -{{/* -Labels for alertmanager -*/}} -{{- define "kube-prometheus.alertmanager.labels" -}} - {{- $labels := (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml) -}} - {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} - {{- . | nindent 0 }} - {{- end }} -app.kubernetes.io/component: alertmanager -{{- end -}} - -{{/* -matchLabels for operator -*/}} -{{- define "kube-prometheus.operator.matchLabels" -}} -{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} -app.kubernetes.io/component: operator -{{- end -}} - -{{/* -matchLabels for prometheus -*/}} -{{- define "kube-prometheus.prometheus.matchLabels" -}} -{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} -app.kubernetes.io/component: prometheus -{{- end -}} - -{{/* -matchLabels for alertmanager -*/}} -{{- define "kube-prometheus.alertmanager.matchLabels" -}} -{{ include "tc.v1.common.lib.metadata.selectorLabels" (dict "rootCtx" $ )}} -app.kubernetes.io/component: alertmanager -{{- end -}} - -{{/* -Return the proper Prometheus Operator image name -*/}} -{{- define "kube-prometheus.image" -}} -{{ printf "%s:%s" .Values.image.repository (default .Chart.AppVersion .Values.image.tag) | quote }} -{{- end -}} - -{{/* -Return the proper Prometheus Operator Reloader image name -*/}} -{{- define "kube-prometheus.prometheusConfigReloader.image" -}} -{{- include "kube-prometheus.image" . -}} -{{- end -}} - -{{/* -Return the proper Prometheus Image name -*/}} -{{- define "kube-prometheus.prometheus.image" -}} -{{ printf "%s:%s" .Values.image.repository (default .Chart.AppVersion .Values.image.tag) | quote }} -{{- end -}} - -{{/* -Return the proper Thanos Image name -*/}} -{{- define "kube-prometheus.prometheus.thanosImage" -}} -{{ printf "%s:%s" .Values.thanosImage.repository (default .Chart.AppVersion .Values.thanosImage.tag) | quote }} -{{- end -}} - -{{/* -Return the proper Alertmanager Image name -*/}} -{{- define "kube-prometheus.alertmanager.image" -}} -{{ printf "%s:%s" .Values.alertmanagerImage.repository (default .Chart.AppVersion .Values.alertmanagerImage.tag) | quote }} -{{- end -}} - -{{/* -Return the proper Docker Image Registry Secret Names -*/}} -{{- define "kube-prometheus.imagePullSecrets" -}} -{{- end -}} - -{{/* -Create the name of the operator service account to use -*/}} -{{- define "kube-prometheus.operator.serviceAccountName" -}} -{{- if .Values.operator.serviceAccount.create -}} - {{ default (include "kube-prometheus.operator.fullname" .) .Values.operator.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.operator.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the prometheus service account to use -*/}} -{{- define "kube-prometheus.prometheus.serviceAccountName" -}} -{{- if .Values.prometheus.serviceAccount.create -}} - {{ default (include "kube-prometheus.prometheus.fullname" .) .Values.prometheus.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.prometheus.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the alertmanager service account to use -*/}} -{{- define "kube-prometheus.alertmanager.serviceAccountName" -}} -{{- if .Values.alertmanager.serviceAccount.create -}} - {{ default (include "kube-prometheus.alertmanager.fullname" .) .Values.alertmanager.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.alertmanager.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Compile all warnings into a single message, and call fail. -*/}} -{{- define "kube-prometheus.validateValues" -}} -{{- $messages := list -}} -{{- $messages := without $messages "" -}} -{{- $message := join "\n" $messages -}} - -{{- if $message -}} -{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} -{{- end -}} -{{- end -}} diff --git a/archive/charts/premium/prometheus/templates/alertmanager/_alertmanager.tpl b/archive/charts/premium/prometheus/templates/alertmanager/_alertmanager.tpl deleted file mode 100644 index ed5e24e9da6..00000000000 --- a/archive/charts/premium/prometheus/templates/alertmanager/_alertmanager.tpl +++ /dev/null @@ -1,174 +0,0 @@ -{{- define "prometheus.alertmanager.alertmanager" -}} -{{- if .Values.alertmanager.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: Alertmanager -metadata: - name: {{ template "kube-prometheus.alertmanager.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.alertmanager.replicaCount }} - serviceAccountName: {{ template "kube-prometheus.alertmanager.serviceAccountName" . }} - {{- if .Values.alertmanager.image }} - image: {{ template "kube-prometheus.alertmanager.image" . }} - {{- end }} - listenLocal: {{ .Values.alertmanager.listenLocal }} - {{- if index .Values.alertmanager "externalUrl" }} - externalUrl: "{{ .Values.alertmanager.externalUrl }}" - {{- else if and .Values.ingress.alertmanager.enabled .Values.ingress.alertmanager.hosts }} - externalUrl: {{ if .Values.ingress.alertmanager.tls }}https{{else}}http{{ end }}://{{ (index .Values.ingress.alertmanager.hosts 0).name }}{{ .Values.alertmanager.routePrefix }} - {{- else }} - externalUrl: http://{{ template "kube-prometheus.alertmanager.fullname" . }}.{{ .Release.Namespace }}:{{ .Values.service.alertmanager.ports.alertmanager.port }}{{ .Values.alertmanager.routePrefix }} - {{- end }} - portName: "{{ .Values.alertmanager.portName }}" - paused: {{ .Values.alertmanager.paused }} - logFormat: {{ .Values.alertmanager.logFormat }} - logLevel: {{ .Values.alertmanager.logLevel }} - retention: {{ .Values.alertmanager.retention }} - {{- if .Values.alertmanager.secrets }} - secrets: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.secrets "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.alertmanager.configMaps }} - configMaps: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configMaps "context" $) | nindent 4 }} - {{- end }} - resources: {{- toYaml .Values.alertmanager.resources | nindent 4 }} - routePrefix: "{{ .Values.alertmanager.routePrefix }}" - {{- if .Values.alertmanager.podSecurityContext.enabled }} - securityContext: {{- omit .Values.alertmanager.podSecurityContext "enabled" | toYaml | nindent 4 }} - {{- end }} - {{- if .Values.alertmanager.storageSpec }} - storage: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.storageSpec "context" $) | nindent 4 }} - {{- else }} - {{- if .Values.alertmanager.persistence.enabled }} - storage: - volumeClaimTemplate: - spec: - accessModes: - {{- range .Values.alertmanager.persistence.accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ .Values.alertmanager.persistence.size | quote }} - {{- with (include "tc.v1.common.lib.storage.storageClassName" ( dict "rootCtx" . "objectData" .Values.prometheus.persistence )) | trim }} - storageClassName: {{ . }} - {{- end }} - {{- end }} - {{- end }} - {{- if or .Values.alertmanager.podMetadata.labels .Values.alertmanager.podMetadata.annotations (eq .Values.alertmanager.podAntiAffinityPreset "soft") (eq .Values.alertmanager.podAntiAffinityPreset "hard") }} - podMetadata: - labels: - {{- if .Values.alertmanager.podMetadata.labels }} - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.podMetadata.labels "context" $) | nindent 6 }} - {{- end }} - {{- if or (eq .Values.alertmanager.podAntiAffinityPreset "soft") (eq .Values.alertmanager.podAntiAffinityPreset "hard") }} - {{- include "kube-prometheus.alertmanager.matchLabels" . | nindent 6 }} - {{- end }} - {{- if .Values.alertmanager.podMetadata.annotations }} - annotations: - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.podMetadata.annotations "context" $) | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.alertmanager.affinity }} - affinity: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.affinity "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.alertmanager.nodeSelector }} - nodeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.nodeSelector "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.alertmanager.tolerations }} - tolerations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.tolerations "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.alertmanager.volumes }} - volumes: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.volumes "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.alertmanager.volumeMounts }} - volumeMounts: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.volumeMounts "context" $) | nindent 4 }} - {{- end }} -{{- include "kube-prometheus.imagePullSecrets" . | indent 2 }} - {{- if or .Values.alertmanager.containers .Values.alertmanager.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} - containers: - {{- if or .Values.alertmanager.containerSecurityContext.enabled .Values.alertmanager.livenessProbe.enabled .Values.alertmanager.readinessProbe.enabled }} - ## This monkey patching is needed until the securityContexts are - ## directly patchable via the CRD. - ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 - ## currently implemented with strategic merge - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md - - name: alertmanager - {{- if .Values.alertmanager.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.alertmanager.containerSecurityContext "enabled" | toYaml | nindent 8 }} - {{- end }} - {{- if .Values.alertmanager.livenessProbe.enabled }} - livenessProbe: - httpGet: - path: {{ .Values.alertmanager.livenessProbe.path }} - port: alertmanager - scheme: HTTP - initialDelaySeconds: {{ .Values.alertmanager.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.alertmanager.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.alertmanager.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.alertmanager.livenessProbe.failureThreshold }} - successThreshold: {{ .Values.alertmanager.livenessProbe.successThreshold }} - {{- end }} - {{- if .Values.alertmanager.readinessProbe.enabled }} - readinessProbe: - httpGet: - path: {{ .Values.alertmanager.readinessProbe.path }} - port: alertmanager - scheme: HTTP - initialDelaySeconds: {{ .Values.alertmanager.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.alertmanager.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.alertmanager.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.alertmanager.readinessProbe.failureThreshold }} - successThreshold: {{ .Values.alertmanager.readinessProbe.successThreshold }} - {{- end }} - {{- end }} - {{- if or .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.livenessProbe.enabled .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} - ## This monkey patching is needed until the securityContexts are - ## directly patchable via the CRD. - ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 - ## currently implemented with strategic merge - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md - - name: config-reloader - {{- if .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.operator.prometheusConfigReloader.containerSecurityContext "enabled" | toYaml | nindent 8 }} - {{- end }} - {{- if .Values.operator.prometheusConfigReloader.livenessProbe.enabled }} - livenessProbe: - tcpSocket: - port: reloader-web - initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.failureThreshold }} - successThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.successThreshold }} - {{- end }} - {{- if .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} - readinessProbe: - tcpSocket: - port: reloader-web - initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.failureThreshold }} - successThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.successThreshold }} - {{- end }} - {{- end }} - {{- if .Values.alertmanager.containers }} - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.containers "context" $) | nindent 4 }} - {{- end }} - {{- end }} - {{- if .Values.alertmanager.priorityClassName }} - priorityClassName: {{ .Values.alertmanager.priorityClassName }} - {{- end }} - {{- if .Values.alertmanager.additionalPeers }} - additionalPeers: {{ .Values.alertmanager.additionalPeers }} - {{- end }} - {{- if .Values.alertmanager.configNamespaceSelector }} - alertmanagerConfigNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configNamespaceSelector "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.alertmanager.configSelector }} - alertmanagerConfigSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.configSelector "context" $) | nindent 4 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/alertmanager/secrets.yaml b/archive/charts/premium/prometheus/templates/alertmanager/secrets.yaml deleted file mode 100644 index 9a6f518f35c..00000000000 --- a/archive/charts/premium/prometheus/templates/alertmanager/secrets.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if (and .Values.alertmanager.enabled (not .Values.alertmanager.externalConfig) ) }} -apiVersion: v1 -kind: Secret -metadata: - name: alertmanager-{{ template "kube-prometheus.alertmanager.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} -data: - alertmanager.yaml: {{ toYaml .Values.alertmanager.config | b64enc | quote }} -{{- range $key, $val := .Values.alertmanager.templateFiles }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/alertmanager/serviceaccount.yaml b/archive/charts/premium/prometheus/templates/alertmanager/serviceaccount.yaml deleted file mode 100644 index a6f438889a2..00000000000 --- a/archive/charts/premium/prometheus/templates/alertmanager/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus.alertmanager.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} - {{- if index .Values.alertmanager.serviceAccount "annotations" }} - annotations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.alertmanager.serviceAccount.annotations "context" $) | nindent 4 }} - {{- end }} -{{- include "kube-prometheus.imagePullSecrets" . }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/alertmanager/servicemonitor.yaml b/archive/charts/premium/prometheus/templates/alertmanager/servicemonitor.yaml deleted file mode 100644 index ef0e02d3875..00000000000 --- a/archive/charts/premium/prometheus/templates/alertmanager/servicemonitor.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus.alertmanager.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.alertmanager.labels" . | nindent 4 }} -spec: - selector: - matchLabels: {{- include "kube-prometheus.alertmanager.matchLabels" . | nindent 6 }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace }} - endpoints: - - port: http - {{- if .Values.alertmanager.serviceMonitor.interval }} - interval: {{ .Values.alertmanager.serviceMonitor.interval }} - {{- end }} - path: {{ trimSuffix "/" .Values.alertmanager.routePrefix }}/metrics - {{- if .Values.alertmanager.serviceMonitor.metricRelabelings }} - metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.alertmanager.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.alertmanager.serviceMonitor.relabelings }} - relabelings: {{- toYaml .Values.alertmanager.serviceMonitor.relabelings | nindent 8 }} - {{- end }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/common.yaml b/archive/charts/premium/prometheus/templates/common.yaml deleted file mode 100644 index 61364503a70..00000000000 --- a/archive/charts/premium/prometheus/templates/common.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{- include "prometheus.prometheus.prometheus" . }} -{{- include "prometheus.prometheus.additionalprometheusrules" . }} -{{- include "prometheus.prometheus.additionalscrapejobs" . }} -{{- include "prometheus.prometheus.servicemonitor" . }} - -{{- include "prometheus.alertmanager.alertmanager" . }} - - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/premium/prometheus/templates/prometheus/_additionalPrometheusRules.tpl b/archive/charts/premium/prometheus/templates/prometheus/_additionalPrometheusRules.tpl deleted file mode 100644 index 121048d87ce..00000000000 --- a/archive/charts/premium/prometheus/templates/prometheus/_additionalPrometheusRules.tpl +++ /dev/null @@ -1,15 +0,0 @@ -{{- define "prometheus.prometheus.additionalprometheusrules" -}} -{{- if and .Values.prometheus.enabled .Values.prometheus.additionalPrometheusRules}} - {{- range .Values.prometheus.additionalPrometheusRules }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ template "kube-prometheus.name" $ }}-{{ .name }} - namespace: {{ $.Release.Namespace }} - labels: {{ include "kube-prometheus.prometheus.labels" $ | nindent 4 }} -spec: - groups: {{- toYaml .groups | nindent 4 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/prometheus/_additionalScrapeJobs.tpl b/archive/charts/premium/prometheus/templates/prometheus/_additionalScrapeJobs.tpl deleted file mode 100644 index 3c5f85140a4..00000000000 --- a/archive/charts/premium/prometheus/templates/prometheus/_additionalScrapeJobs.tpl +++ /dev/null @@ -1,13 +0,0 @@ -{{- define "prometheus.prometheus.additionalscrapejobs" -}} -{{- if (and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "internal") ) }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: additional-scrape-jobs-{{ template "kube-prometheus.prometheus.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} -data: - scrape-jobs.yaml: {{ include "tc.v1.common.tplvalues.render" ( dict "value" .Values.prometheus.additionalScrapeConfigs.internal.jobList "context" $ ) | b64enc | quote }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/prometheus/_prometheus.tpl b/archive/charts/premium/prometheus/templates/prometheus/_prometheus.tpl deleted file mode 100644 index b5bd3bcb292..00000000000 --- a/archive/charts/premium/prometheus/templates/prometheus/_prometheus.tpl +++ /dev/null @@ -1,366 +0,0 @@ -{{- define "prometheus.prometheus.prometheus" -}} -{{- if .Values.prometheus.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: Prometheus -metadata: - name: {{ template "kube-prometheus.prometheus.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.prometheus.replicaCount }} - serviceAccountName: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} - {{- if .Values.prometheus.serviceMonitorSelector }} - serviceMonitorSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceMonitorSelector "context" $) | nindent 4 }} - {{- else }} - serviceMonitorSelector: {} - {{- end }} - {{- if .Values.prometheus.podMonitorSelector }} - podMonitorSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMonitorSelector "context" $) | nindent 4 }} - {{- else }} - podMonitorSelector: {} - {{- end }} - {{- if .Values.prometheus.probeSelector }} - probeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.probeSelector "context" $) | nindent 4 }} - {{- else }} - probeSelector: {} - {{- end }} - {{- if .Values.prometheus.scrapeConfigSelector }} - scrapeConfigSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.scrapeConfigSelector "context" $) | nindent 4 }} - {{- else }} - scrapeConfigSelector: {} - {{- end }} - alerting: - alertmanagers: - {{- if .Values.prometheus.alertingEndpoints }} - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.alertingEndpoints "context" $) | nindent 6 }} - {{- else if .Values.alertmanager.enabled }} - - namespace: {{ .Release.Namespace }} - name: {{ template "kube-prometheus.alertmanager.fullname" . }} - port: http - pathPrefix: "{{ .Values.alertmanager.routePrefix }}" - {{- else }} - [] - {{- end }} - {{- if .Values.prometheus.image }} - image: {{ template "kube-prometheus.prometheus.image" . }} - {{- end }} - {{- if .Values.prometheus.externalLabels }} - externalLabels: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.externalLabels "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.prometheusExternalLabelNameClear }} - prometheusExternalLabelName: "" - {{- else if .Values.prometheus.prometheusExternalLabelName }} - prometheusExternalLabelName: "{{ .Values.prometheus.prometheusExternalLabelName }}" - {{- end }} - {{- if .Values.prometheus.replicaExternalLabelNameClear }} - replicaExternalLabelName: "" - {{- else if .Values.prometheus.replicaExternalLabelName }} - replicaExternalLabelName: "{{ .Values.prometheus.replicaExternalLabelName }}" - {{- end }} - {{- if index .Values.prometheus "externalUrl" }} - externalUrl: "{{ .Values.prometheus.externalUrl }}" - {{- else if and .Values.ingress.main.enabled .Values.ingress.main.hosts }} - externalUrl: {{ if .Values.ingress.main.tls }}https{{else}}http{{ end }}://{{ (index .Values.ingress.main.hosts 0).name }}{{ .Values.prometheus.routePrefix }} - {{- else }} - externalUrl: http://{{ template "kube-prometheus.prometheus.fullname" . }}.{{ .Release.Namespace }}:9090{{ .Values.prometheus.routePrefix }} - {{- end }} - paused: {{ .Values.prometheus.paused }} - logLevel: {{ .Values.prometheus.logLevel }} - logFormat: {{ .Values.prometheus.logFormat }} - listenLocal: {{ .Values.prometheus.listenLocal }} - enableAdminAPI: {{ .Values.prometheus.enableAdminAPI }} - {{- if .Values.prometheus.enableFeatures }} - enableFeatures: - {{- range .Values.prometheus.enableFeatures }} - - {{ . | quote }} - {{- end }} - {{- end }} - {{- if .Values.prometheus.scrapeInterval }} - scrapeInterval: {{ .Values.prometheus.scrapeInterval }} - {{- end }} - {{- if .Values.prometheus.evaluationInterval }} - evaluationInterval: {{ .Values.prometheus.evaluationInterval }} - {{- end }} - {{- if .Values.prometheus.resources }} - resources: {{- toYaml .Values.prometheus.resources | nindent 4 }} - {{- end }} - retention: {{ .Values.prometheus.retention }} - {{- if .Values.prometheus.retentionSize }} - retentionSize: {{ .Values.prometheus.retentionSize }} - {{- end }} - {{- if .Values.prometheus.disableCompaction }} - disableCompaction: {{ .Values.prometheus.disableCompaction }} - {{- end }} - {{- if .Values.prometheus.enableRemoteWriteReceiver }} - enableRemoteWriteReceiver: {{ .Values.prometheus.enableRemoteWriteReceiver }} - {{- end }} - {{- if .Values.prometheus.walCompression }} - walCompression: {{ .Values.prometheus.walCompression }} - {{- end }} - portName: "{{ .Values.prometheus.portName }}" - routePrefix: "{{ .Values.prometheus.routePrefix }}" - {{- if .Values.prometheus.secrets }} - secrets: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.secrets "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.configMaps }} - configMaps: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.configMaps "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.serviceMonitorNamespaceSelector }} - serviceMonitorNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceMonitorNamespaceSelector "context" $) | nindent 4 }} - {{- else }} - serviceMonitorNamespaceSelector: {} - {{- end }} - {{- if .Values.prometheus.podMonitorNamespaceSelector }} - podMonitorNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMonitorNamespaceSelector "context" $) | nindent 4 }} - {{- else }} - podMonitorNamespaceSelector: {} - {{- end }} - {{- if .Values.prometheus.probeNamespaceSelector }} - probeNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.probeNamespaceSelector "context" $) | nindent 4 }} - {{- else }} - probeNamespaceSelector: {} - {{- end }} - {{- if .Values.prometheus.scrapeConfigNamespaceSelector }} - scrapeConfigNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.scrapeConfigNamespaceSelector "context" $) | nindent 4 }} - {{- else }} - scrapeConfigNamespaceSelector: {} - {{- end }} - {{- if .Values.prometheus.remoteRead }} - remoteRead: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.remoteRead "context" $) | nindent 4 }} - {{- end }} - {{- with .Values.prometheus.remoteWrite }} - remoteWrite: - {{- tpl (toYaml .) $ | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.podSecurityContext.enabled }} - securityContext: {{- omit .Values.prometheus.podSecurityContext "enabled" | toYaml | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.ruleNamespaceSelector }} - ruleNamespaceSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.ruleNamespaceSelector "context" $) | nindent 4 }} - {{- else }} - ruleNamespaceSelector: {} - {{- end }} - {{- if .Values.prometheus.ruleSelector }} - ruleSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.ruleSelector "context" $) | nindent 4 }} - {{- else }} - ruleSelector: {} - {{- end }} - {{- if .Values.prometheus.storageSpec }} - storage: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.storageSpec "context" $) | nindent 4 }} - {{- else if .Values.prometheus.persistence.enabled }} - storage: - volumeClaimTemplate: - spec: - accessModes: - {{- range .Values.prometheus.persistence.accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ .Values.prometheus.persistence.size | quote }} - {{- with (include "tc.v1.common.lib.storage.storageClassName" ( dict "rootCtx" . "objectData" .Values.prometheus.persistence )) | trim }} - storageClassName: {{ . }} - {{- end }} - {{- end }} - {{- if or .Values.prometheus.podMetadata.labels .Values.prometheus.podMetadata.annotations (eq .Values.prometheus.podAntiAffinityPreset "soft") (eq .Values.prometheus.podAntiAffinityPreset "hard") }} - podMetadata: - labels: - {{- if .Values.prometheus.podMetadata.labels }} - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMetadata.labels "context" $) | nindent 6 }} - {{- end }} - {{- if or (eq .Values.prometheus.podAntiAffinityPreset "soft") (eq .Values.prometheus.podAntiAffinityPreset "hard") }} - {{- include "kube-prometheus.prometheus.matchLabels" . | nindent 6 }} - {{- end }} - {{- if .Values.prometheus.podMetadata.annotations }} - annotations: - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.podMetadata.annotations "context" $) | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.prometheus.querySpec }} - query: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.querySpec "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.affinity }} - affinity: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.affinity "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.nodeSelector }} - nodeSelector: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.nodeSelector "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.tolerations }} - tolerations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.tolerations "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.volumes }} - volumes: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.volumes "context" $) | nindent 4 }} - {{- end }} - {{- if .Values.prometheus.volumeMounts }} - volumeMounts: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.volumeMounts "context" $) | nindent 4 }} - {{- end }} - {{- if or .Values.prometheus.additionalScrapeConfigs.enabled .Values.prometheus.additionalScrapeConfigsExternal.enabled }} - additionalScrapeConfigs: - {{- if and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "external") }} - name: {{ .Values.prometheus.additionalScrapeConfigs.external.name }} - key: {{ .Values.prometheus.additionalScrapeConfigs.external.key }} - {{- else if and .Values.prometheus.additionalScrapeConfigs.enabled (eq .Values.prometheus.additionalScrapeConfigs.type "internal") }} - name: additional-scrape-jobs-{{ template "kube-prometheus.prometheus.fullname" . }} - key: scrape-jobs.yaml - {{- else if and (not .Values.prometheus.additionalScrapeConfigs.enabled) .Values.prometheus.additionalScrapeConfigsExternal.enabled }} - name: {{ .Values.prometheus.additionalScrapeConfigsExternal.name }} - key: {{ .Values.prometheus.additionalScrapeConfigsExternal.key }} - {{- end }} - {{- end }} - {{- if .Values.prometheus.additionalAlertRelabelConfigsExternal.enabled }} - additionalAlertRelabelConfigs: - name: {{ .Values.prometheus.additionalAlertRelabelConfigsExternal.name }} - key: {{ .Values.prometheus.additionalAlertRelabelConfigsExternal.key }} - {{- end }} -{{- include "kube-prometheus.imagePullSecrets" . | indent 2 }} - {{- if or .Values.prometheus.containers .Values.prometheus.thanos.create .Values.prometheus.containerSecurityContext.enabled .Values.prometheus.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} - containers: - {{- if .Values.prometheus.thanos.create }} - - name: thanos-sidecar - image: {{ template "kube-prometheus.prometheus.thanosImage" . }} - imagePullPolicy: {{ .Values.prometheus.thanos.image.pullPolicy }} - args: - - sidecar - - --prometheus.url={{ default "http://localhost:9090" .Values.prometheus.thanos.prometheusUrl }} - - --grpc-address=0.0.0.0:10901 - - --http-address=0.0.0.0:10902 - - --tsdb.path=/prometheus/ - {{- if .Values.prometheus.thanos.objectStorageConfig }} - - --objstore.config=$(OBJSTORE_CONFIG) - {{- end }} - {{- if .Values.prometheus.thanos.extraArgs }} - {{ toYaml .Values.prometheus.thanos.extraArgs | indent 8 | trim }} - {{- end }} - {{- if .Values.prometheus.thanos.objectStorageConfig }} - env: - - name: OBJSTORE_CONFIG - valueFrom: - secretKeyRef: - name: {{ .Values.prometheus.thanos.objectStorageConfig.secretName }} - key: {{ .Values.prometheus.thanos.objectStorageConfig.secretKey | default "thanos.yaml" }} - {{- end }} - {{- if .Values.prometheus.thanos.resources }} - resources: {{- toYaml .Values.prometheus.thanos.resources | nindent 8 }} - {{- end }} - ports: - - name: thanos - containerPort: 10901 - protocol: TCP - - name: http - containerPort: 10902 - protocol: TCP - volumeMounts: - - mountPath: /prometheus - name: prometheus-{{ template "kube-prometheus.prometheus.fullname" . }}-db - {{- if not (.Values.prometheus.storageSpec.disableMountSubPath | default (not .Values.prometheus.persistence.enabled)) }} - subPath: prometheus-db - {{- end }} - {{- if .Values.prometheus.thanos.extraVolumeMounts }} - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.thanos.extraVolumeMounts "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.thanos.containerSecurityContext.enabled }} - # yamllint disable rule:indentation - securityContext: {{- omit .Values.prometheus.thanos.containerSecurityContext "enabled" | toYaml | nindent 8 }} - # yamllint enable rule:indentation - {{- end }} - {{- if .Values.prometheus.thanos.livenessProbe.enabled }} - livenessProbe: - httpGet: - path: {{ .Values.prometheus.thanos.livenessProbe.path }} - port: http - scheme: HTTP - initialDelaySeconds: {{ .Values.prometheus.thanos.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.prometheus.thanos.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.prometheus.thanos.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.prometheus.thanos.livenessProbe.failureThreshold }} - successThreshold: {{ .Values.prometheus.thanos.livenessProbe.successThreshold }} - {{- end }} - {{- if .Values.prometheus.thanos.readinessProbe.enabled }} - readinessProbe: - httpGet: - path: {{ .Values.prometheus.thanos.readinessProbe.path }} - port: http - scheme: HTTP - initialDelaySeconds: {{ .Values.prometheus.thanos.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.prometheus.thanos.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.prometheus.thanos.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.prometheus.thanos.readinessProbe.failureThreshold }} - successThreshold: {{ .Values.prometheus.thanos.readinessProbe.successThreshold }} - {{- end }} - {{- end }} - {{- if or .Values.prometheus.containerSecurityContext.enabled .Values.prometheus.livenessProbe.enabled .Values.prometheus.readinessProbe.enabled }} - ## This monkey patching is needed until the securityContexts are - ## directly patchable via the CRD. - ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 - ## currently implemented with strategic merge - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md - - name: prometheus - {{- if .Values.prometheus.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.prometheus.containerSecurityContext "enabled" | toYaml | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.livenessProbe.enabled }} - livenessProbe: - httpGet: - path: {{ .Values.prometheus.livenessProbe.path }} - port: main - scheme: HTTP - initialDelaySeconds: {{ .Values.prometheus.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.prometheus.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.prometheus.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.prometheus.livenessProbe.failureThreshold }} - successThreshold: {{ .Values.prometheus.livenessProbe.successThreshold }} - {{- end }} - {{- if .Values.prometheus.readinessProbe.enabled }} - readinessProbe: - httpGet: - path: {{ .Values.prometheus.readinessProbe.path }} - port: main - scheme: HTTP - initialDelaySeconds: {{ .Values.prometheus.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.prometheus.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.prometheus.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.prometheus.readinessProbe.failureThreshold }} - successThreshold: {{ .Values.prometheus.readinessProbe.successThreshold }} - {{- end }} - {{- end }} - {{- if or .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled .Values.operator.prometheusConfigReloader.livenessProbe.enabled .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} - ## This monkey patching is needed until the securityContexts are - ## directly patchable via the CRD. - ## ref: https://github.com/prometheus-operator/prometheus-operator/issues/3947 - ## currently implemented with strategic merge - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/strategic-merge-patch.md - - name: config-reloader - {{- if .Values.operator.prometheusConfigReloader.containerSecurityContext.enabled }} - securityContext: {{- omit .Values.operator.prometheusConfigReloader.containerSecurityContext "enabled" | toYaml | nindent 8 }} - {{- end }} - {{- if .Values.operator.prometheusConfigReloader.livenessProbe.enabled }} - livenessProbe: - tcpSocket: - port: reloader-web - initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.livenessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.failureThreshold }} - successThreshold: {{ .Values.operator.prometheusConfigReloader.livenessProbe.successThreshold }} - {{- end }} - {{- if .Values.operator.prometheusConfigReloader.readinessProbe.enabled }} - readinessProbe: - tcpSocket: - port: reloader-web - initialDelaySeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.operator.prometheusConfigReloader.readinessProbe.timeoutSeconds }} - failureThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.failureThreshold }} - successThreshold: {{ .Values.operator.prometheusConfigReloader.readinessProbe.successThreshold }} - {{- end }} - {{- end }} - {{- if .Values.prometheus.containers }} - {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.containers "context" $) | nindent 4 }} - {{- end }} - {{- end }} - {{- if .Values.prometheus.priorityClassName }} - priorityClassName: {{ .Values.prometheus.priorityClassName }} - {{- end }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/prometheus/_servicemonitor.tpl b/archive/charts/premium/prometheus/templates/prometheus/_servicemonitor.tpl deleted file mode 100644 index 20744f2c924..00000000000 --- a/archive/charts/premium/prometheus/templates/prometheus/_servicemonitor.tpl +++ /dev/null @@ -1,29 +0,0 @@ -{{- define "prometheus.prometheus.servicemonitor" -}} -{{- if and .Values.prometheus.enabled .Values.prometheus.serviceMonitor.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus.prometheus.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} -spec: - selector: - matchLabels: {{- include "kube-prometheus.prometheus.matchLabels" . | nindent 6 }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace }} - endpoints: - - port: http - {{- if .Values.prometheus.serviceMonitor.interval }} - interval: {{ .Values.prometheus.serviceMonitor.interval }} - {{- end }} - path: {{ trimSuffix "/" .Values.prometheus.routePrefix }}/metrics - {{- if .Values.prometheus.serviceMonitor.metricRelabelings }} - metricRelabelings: {{- include "tc.v1.common.tplvalues.render" ( dict "value" .Values.prometheus.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.serviceMonitor.relabelings }} - relabelings: {{- toYaml .Values.prometheus.serviceMonitor.relabelings | nindent 8 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/prometheus/clusterrole.yaml b/archive/charts/premium/prometheus/templates/prometheus/clusterrole.yaml deleted file mode 100644 index ae96e2d45f8..00000000000 --- a/archive/charts/premium/prometheus/templates/prometheus/clusterrole.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if .Values.prometheus.enabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "kube-prometheus.prometheus.fullname" . }} - labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} -rules: - - apiGroups: - - "" - resources: - - nodes/metrics - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - nodes - - nodes/proxy - - services - - endpoints - - pods - verbs: - - "get" - - "list" - - "watch" - - apiGroups: - - extensions - - "networking.k8s.io" - resources: - - ingresses - verbs: - - get - - list - - watch - - nonResourceURLs: - - "/metrics" - verbs: - - "get" -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/prometheus/clusterrolebinding.yaml b/archive/charts/premium/prometheus/templates/prometheus/clusterrolebinding.yaml deleted file mode 100644 index 7ca10743f4a..00000000000 --- a/archive/charts/premium/prometheus/templates/prometheus/clusterrolebinding.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.prometheus.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kube-prometheus.prometheus.fullname" . }} - labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus.prometheus.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -{{- end }} diff --git a/archive/charts/premium/prometheus/templates/prometheus/serviceaccount.yaml b/archive/charts/premium/prometheus/templates/prometheus/serviceaccount.yaml deleted file mode 100644 index 39539fc1191..00000000000 --- a/archive/charts/premium/prometheus/templates/prometheus/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus.prometheus.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: {{- include "kube-prometheus.prometheus.labels" . | nindent 4 }} - {{- if index .Values.prometheus.serviceAccount "annotations" }} - annotations: {{- include "tc.v1.common.tplvalues.render" (dict "value" .Values.prometheus.serviceAccount.annotations "context" $) | nindent 4 }} - {{- end }} -{{- include "kube-prometheus.imagePullSecrets" . }} -{{- end }} diff --git a/archive/charts/premium/prometheus/values.yaml b/archive/charts/premium/prometheus/values.yaml deleted file mode 100644 index be682e422c5..00000000000 --- a/archive/charts/premium/prometheus/values.yaml +++ /dev/null @@ -1,1260 +0,0 @@ -image: - repository: public.ecr.aws/bitnami/prometheus - tag: 3.0.1@sha256:a2829564ef854befea439c0eac52323c9f54226bf123ba900dc6565629ec617b -thanosImage: - repository: quay.io/thanos/thanos - tag: v0.37.2@sha256:4ec6df40fdb921de162677b321057caa8fb8324c65f4cfae9568ed55c4469e2c -alertmanagerImage: - repository: public.ecr.aws/bitnami/alertmanager - tag: 0.28.1@sha256:c776d8b65197fe08ec4ba24b401ac56a8ee06d165319046aebc9c524f5cebea3 -global: - labels: {} -workload: - main: - enabled: false - podSpec: - containers: - main: - enabled: false - probes: - liveness: - enabled: false - readiness: - enabled: false - startup: - enabled: false - -configmap: - grafana-datasource: - enabled: "{{ if .Values.grafana.datasource.enabled }}true{{ else }}false{{ end }}" - labels: - grafana_datasources: "1" - data: - datasource.yaml: |- - apiVersion: 1 - datasources: - - name: Prometheus - type: prometheus - uid: {{ .Values.grafana.datasource.uid | default "prometheus" }} - url: http://{{ include "tc.v1.common.lib.chart.names.fullname" $ }}.{{ include "tc.v1.common.lib.metadata.namespace" (dict "rootCtx" $ "objectData" . "caller" "Configmap") }}:{{ .Values.service.main.ports.main.port }} - access: proxy - isDefault: {{ .Values.grafana.datasource.default | default true }} - jsonData: - httpMethod: {{ .Values.grafana.datasource.httpMethod | default "POST" }} - timeInterval: {{ .Values.grafana.datasource.scrapeInterval | default "30s" }} - {{- if .Values.grafana.datasource.timeout }} - timeout: {{ .Values.grafana.datasource.timeout }} - {{- end }} - -grafana: - datasource: - enabled: true - default: true - httpMethod: "POST" - scrapeInterval: "30s" - uid: "prometheus" - -kps: - ## Install Prometheus Operator CRDs - ## - crds: - enabled: false - - ## Manages Prometheus and Alertmanager components - ## - prometheusOperator: - enabled: false - - ## - global: - rbac: - create: true - - ## Create default rules for monitoring the cluster - ## - defaultRules: - create: true - - windowsMonitoring: - ## Deploys the windows-exporter and Windows-specific dashboards and rules (job name must be 'windows-exporter') - enabled: false - - ## Configuration for prometheus-windows-exporter - ## ref: https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-windows-exporter - ## - prometheus-windows-exporter: - ## Enable ServiceMonitor and set Kubernetes label to use as a job label - ## - prometheus: - monitor: - enabled: false - - ## Configuration for alertmanager - ## ref: https://prometheus.io/docs/alerting/alertmanager/ - ## - alertmanager: - ## Deploy alertmanager - ## - enabled: false - - ## Using default values from https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml - ## - grafana: - enabled: false - forceDeployDashboards: true - defaultDashboardsEnabled: true - - ## Flag to disable all the kubernetes component scrapers - ## - kubernetesServiceMonitors: - enabled: true - - ## Component scraping the kube api server - ## - kubeApiServer: - enabled: true - - ## Component scraping the kubelet and kubelet-hosted cAdvisor - ## - kubelet: - enabled: true - - ## Component scraping the kube controller manager - ## - kubeControllerManager: - enabled: true - - ## Component scraping coreDns. Use either this or kubeDns - ## - coreDns: - enabled: true - - ## Component scraping kubeDns. Use either this or coreDns - ## - kubeDns: - enabled: false - - ## Component scraping etcd - ## - kubeEtcd: - enabled: true - - ## Component scraping kube scheduler - ## - kubeScheduler: - enabled: true - - ## Component scraping kube proxy - ## - kubeProxy: - enabled: false - - ## Component scraping kube state metrics - ## - kubeStateMetrics: - enabled: true - - ## dontDeploy node exporter as a daemonset to all nodes - ## - nodeExporter: - enabled: true - - ## dont Deploy a Prometheus instance - ## - prometheus: - enabled: false - - ## Configuration for thanosRuler - ## ref: https://thanos.io/tip/components/rule.md/ - ## - thanosRuler: - ## Dont Deploy thanosRuler - ## - enabled: false - -service: - main: - selectorLabels: - app.kubernetes.io/name: prometheus - prometheus: '{{ template "kube-prometheus.prometheus.fullname" . }}' - ports: - main: - port: 9090 - targetPort: 9090 - protocol: http - alertmanager: - enabled: true - selectorLabels: - app.kubernetes.io/name: alertmanager - alertmanager: '{{ template "kube-prometheus.alertmanager.fullname" . }}' - ports: - alertmanager: - enabled: true - port: 9093 - targetPort: 9093 - protocol: http - thanos: - enabled: true - selectorLabels: - app.kubernetes.io/name: prometheus - prometheus: '{{ template "kube-prometheus.prometheus.fullname" . }}' - ports: - thanos: - enabled: true - port: 10901 - targetPort: 10901 - protocol: http -ingress: - main: - enabled: false - alertmanager: - enabled: false - thanos: - enabled: false -#### -## Operator Config -#### -env: - PROMETHEUS_CONFIG_RELOADER: - configMapKeyRef: - name: prometheus-operator-config - key: prometheus-config-reloader -podOptions: - automountServiceAccountToken: true -rbac: - main: - enabled: true - primary: true - clusterWide: true - rules: - - apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - apiGroups: - - apiextensions.k8s.io - resourceNames: - - alertmanagers.monitoring.coreos.com - - podmonitors.monitoring.coreos.com - - prometheuses.monitoring.coreos.com - - prometheusrules.monitoring.coreos.com - - servicemonitors.monitoring.coreos.com - - thanosrulers.monitoring.coreos.com - - probes.monitoring.coreos.com - resources: - - customresourcedefinitions - verbs: - - get - - update - - apiGroups: - - monitoring.coreos.com - resources: - - alertmanagers - - alertmanagers/finalizers - - alertmanagerconfigs - - prometheuses - - prometheuses/finalizers - - thanosrulers - - thanosrulers/finalizers - - servicemonitors - - podmonitors - - probes - - prometheusrules - verbs: - - "*" - - apiGroups: - - apps - resources: - - statefulsets - verbs: - - "*" - - apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - "*" - - apiGroups: - - "" - resources: - - pods - verbs: - - list - - delete - - apiGroups: - - "" - resources: - - services - - services/finalizers - - endpoints - verbs: - - get - - create - - update - - delete - - apiGroups: - - "" - resources: - - nodes - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - namespaces - verbs: - - get - - list - - watch - - apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - get - - list - - watch -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - main: - enabled: true - primary: true - -securityContext: - readOnlyRootFilesystem: false - -probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - custom: true - spec: - httpGet: - path: "/metrics" - port: promop - scheme: HTTP - # -- Redainess probe configuration - # @default -- See below - readiness: - custom: true - spec: - httpGet: - path: "/metrics" - port: promop - scheme: HTTP - # -- Startup probe configuration - # @default -- See below - startup: - custom: true - spec: - httpGet: - path: "/metrics" - port: promop - scheme: HTTP -operator: - ## Create a servicemonitor for the operator - ## - serviceMonitor: - ## @param operator.serviceMonitor.enabled Creates a ServiceMonitor to monitor Prometheus Operator - ## - enabled: false - ## @param operator.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - interval: "" - ## @param operator.serviceMonitor.metricRelabelings Metric relabeling - ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs - ## - metricRelabelings: [] - ## @param operator.serviceMonitor.relabelings Relabel configs - ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - ## - relabelings: [] - ## Prometheus Configmap-reload image to use for reloading configmaps - ## defaults to Bitnami Prometheus Operator (ref: https://hub.docker.com/r/oci.trueforge.org/truecharts/prometheus-operator/tags/) - ## - prometheusConfigReloader: - containerSecurityContext: - enabled: true - readOnlyRootFilesystem: false - allowPrivilegeEscalation: false - runAsNonRoot: true - capabilities: - drop: - - ALL - livenessProbe: - enabled: true - initialDelaySeconds: 10 - periodSeconds: 10 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 - readinessProbe: - enabled: true - initialDelaySeconds: 15 - periodSeconds: 20 - timeoutSeconds: 5 - failureThreshold: 6 - successThreshold: 1 -#### -## Prometheus Config (Spawned by Operator) -#### - -## Deploy a Prometheus instance -## -prometheus: - ## @param prometheus.enabled Deploy Prometheus to the cluster - ## - enabled: true - ## Bitnami Prometheus image version - ## ref: https://hub.docker.com/r/oci.trueforge.org/truecharts/prometheus/tags/ - ## @param prometheus.image.registry Prometheus image registry - ## @param prometheus.image.repository Prometheus image repository - ## @param prometheus.image.tag Prometheus Image tag (immutable tags are recommended) - ## @param prometheus.image.pullSecrets Specify docker-registry secret names as an array - ## - ## Service account for Prometheus to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - ## @param prometheus.serviceAccount.create Specify whether to create a ServiceAccount for Prometheus - ## - create: true - ## @param prometheus.serviceAccount.name The name of the ServiceAccount to create - ## If not set and create is true, a name is generated using the kube-prometheus.prometheus.fullname template - name: "" - ## @param prometheus.serviceAccount.annotations Additional annotations for created Prometheus ServiceAccount - ## annotations: - ## eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT:role/prometheus - ## - annotations: {} - ## Prometheus pods' Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod - ## @param prometheus.podSecurityContext.enabled Enable security context - ## @param prometheus.podSecurityContext.runAsUser User ID for the container - ## @param prometheus.podSecurityContext.fsGroup Group ID for the container filesystem - ## - podSecurityContext: - enabled: true - runAsUser: 1001 - fsGroup: 1001 - ## Prometheus containers' Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container - ## @param prometheus.containerSecurityContext.enabled Enable container security context - ## @param prometheus.containerSecurityContext.readOnlyRootFilesystem Mount / (root) as a readonly filesystem - ## @param prometheus.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off - ## @param prometheus.containerSecurityContext.runAsNonRoot Force the container to run as a non root user - ## @param prometheus.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped - ## - containerSecurityContext: - enabled: true - readOnlyRootFilesystem: false - allowPrivilegeEscalation: false - runAsNonRoot: true - capabilities: - drop: - - ALL - serviceMonitor: - ## @param prometheus.serviceMonitor.enabled Creates a ServiceMonitor to monitor Prometheus itself - ## - enabled: true - ## @param prometheus.serviceMonitor.interval Scrape interval (use by default, falling back to Prometheus' default) - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - interval: "" - ## @param prometheus.serviceMonitor.metricRelabelings Metric relabeling - ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs - ## - metricRelabelings: [] - ## @param prometheus.serviceMonitor.relabelings Relabel configs - ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - ## - relabelings: [] - ## @param prometheus.externalUrl External URL used to access Prometheus - ## If not creating an ingress but still exposing the service some other way (like a proxy) - ## let Prometheus know what its external URL is so that it can properly create links - ## externalUrl: https://prometheus.example.com - ## - externalUrl: "" - ## @param prometheus.resources CPU/Memory resource requests/limits for node - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: {} - ## @param prometheus.podAffinityPreset Prometheus Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAffinityPreset: "" - ## @param prometheus.podAntiAffinityPreset Prometheus Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAntiAffinityPreset: soft - ## Node affinity preset - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity - ## - nodeAffinityPreset: - ## @param prometheus.nodeAffinityPreset.type Prometheus Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` - ## - type: "" - ## @param prometheus.nodeAffinityPreset.key Prometheus Node label key to match Ignored if `affinity` is set. - ## E.g. - ## key: "kubernetes.io/e2e-az-name" - ## - key: "" - ## @param prometheus.nodeAffinityPreset.values Prometheus Node label values to match. Ignored if `affinity` is set. - ## E.g. - ## values: - ## - e2e-az1 - ## - e2e-az2 - ## - values: [] - ## @param prometheus.affinity Prometheus Affinity for pod assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity - ## Note: prometheus.podAffinityPreset, prometheus.podAntiAffinityPreset, and prometheus.nodeAffinityPreset will be ignored when it's set - ## - affinity: {} - ## @param prometheus.nodeSelector Prometheus Node labels for pod assignment - ## ref: https://kubernetes.io/docs/user-guide/node-selection/ - ## - nodeSelector: {} - ## @param prometheus.tolerations Prometheus Tolerations for pod assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - ## - tolerations: [] - ## @param prometheus.scrapeInterval Interval between consecutive scrapes - ## - scrapeInterval: "15s" - ## @param prometheus.evaluationInterval Interval between consecutive evaluations - ## - evaluationInterval: "30s" - ## @param prometheus.listenLocal ListenLocal makes the Prometheus server listen on loopback - ## - listenLocal: false - ## Configure extra options for liveness probe - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes - ## @param prometheus.livenessProbe.enabled Turn on and off liveness probe - ## @param prometheus.livenessProbe.path Path of the HTTP service for checking the healthy state - ## @param prometheus.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated - ## @param prometheus.livenessProbe.periodSeconds How often to perform the probe - ## @param prometheus.livenessProbe.timeoutSeconds When the probe times out - ## @param prometheus.livenessProbe.failureThreshold Minimum consecutive failures for the probe - ## @param prometheus.livenessProbe.successThreshold Minimum consecutive successes for the probe - ## - livenessProbe: - enabled: true - path: /-/healthy - initialDelaySeconds: 0 - failureThreshold: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - ## Configure extra options for readiness probe - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes - ## @param prometheus.readinessProbe.enabled Turn on and off readiness probe - ## @param prometheus.readinessProbe.path Path of the HTTP service for checking the ready state - ## @param prometheus.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated - ## @param prometheus.readinessProbe.periodSeconds How often to perform the probe - ## @param prometheus.readinessProbe.timeoutSeconds When the probe times out - ## @param prometheus.readinessProbe.failureThreshold Minimum consecutive failures for the probe - ## @param prometheus.readinessProbe.successThreshold Minimum consecutive successes for the probe - ## - readinessProbe: - enabled: true - path: /-/ready - initialDelaySeconds: 0 - failureThreshold: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - ## @param prometheus.enableAdminAPI Enable Prometheus adminitrative API - ## ref: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis - ## - enableAdminAPI: false - ## @param prometheus.enableFeatures Enable access to Prometheus disabled features. - ## ref: https://prometheus.io/docs/prometheus/latest/disabled_features/ - ## - enableFeatures: [] - ## @param prometheus.alertingEndpoints Alertmanagers to which alerts will be sent - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerendpoints - ## - alertingEndpoints: [] - ## @param prometheus.externalLabels External labels to add to any time series or alerts when communicating with external systems - ## - externalLabels: {} - ## @param prometheus.replicaExternalLabelName Name of the external label used to denote replica name - ## - replicaExternalLabelName: "" - ## @param prometheus.replicaExternalLabelNameClear Clear external label used to denote replica name - ## - replicaExternalLabelNameClear: false - ## @param prometheus.routePrefix Prefix used to register routes, overriding externalUrl route - ## Useful for proxies that rewrite URLs. - ## - routePrefix: / - ## @param prometheus.prometheusExternalLabelName Name of the external label used to denote Prometheus instance name - ## - prometheusExternalLabelName: "" - ## @param prometheus.prometheusExternalLabelNameClear Clear external label used to denote Prometheus instance name - ## - prometheusExternalLabelNameClear: false - ## @param prometheus.secrets Secrets that should be mounted into the Prometheus Pods - ## - secrets: [] - ## @param prometheus.configMaps ConfigMaps that should be mounted into the Prometheus Pods - ## - configMaps: [] - ## @param prometheus.querySpec The query command line flags when starting Prometheus - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#queryspec - ## - querySpec: {} - ## @param prometheus.ruleNamespaceSelector Namespaces to be selected for PrometheusRules discovery - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage - ## - ruleNamespaceSelector: {} - ## @param prometheus.ruleSelector PrometheusRules to be selected for target discovery - ## If {}, select all ServiceMonitors - ## - ruleSelector: {} - ## @param prometheus.serviceMonitorSelector ServiceMonitors to be selected for target discovery - ## If {}, select all ServiceMonitors - ## - serviceMonitorSelector: {} - ## @param prometheus.matchLabels Matchlabels - ## - matchLabels: {} - ## @param prometheus.serviceMonitorNamespaceSelector Namespaces to be selected for ServiceMonitor discovery - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage - ## - serviceMonitorNamespaceSelector: {} - ## @param prometheus.podMonitorSelector PodMonitors to be selected for target discovery. - ## If {}, select all PodMonitors - ## - podMonitorSelector: {} - ## @param prometheus.podMonitorNamespaceSelector Namespaces to be selected for PodMonitor discovery - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage - ## - podMonitorNamespaceSelector: {} - ## @param prometheus.probeSelector Probes to be selected for target discovery. - ## If {}, select all Probes - ## - probeSelector: {} - ## @param prometheus.probeNamespaceSelector Namespaces to be selected for Probe discovery - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage - ## - probeNamespaceSelector: {} - ## @param prometheus.scrapeConfigSelector The scrapeConfigs to be selected for target discovery. - ## If {}, select all scrapeConfigs - ## - scrapeConfigSelector: {} - ## @param prometheus.scrapeConfigNamespaceSelector Namespaces to be selected for scrapeConfig discovery. - ## If {}, select all namespaces. - ## If nil, select own namespace. - scrapeConfigNamespaceSelector: {} - ## @param prometheus.retention Metrics retention days - ## - retention: 31d - ## @param prometheus.retentionSize Maximum size of metrics - ## - retentionSize: "" - ## @param prometheus.disableCompaction Disable the compaction of the Prometheus TSDB - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec - ## ref: https://prometheus.io/docs/prometheus/latest/storage/#compaction - ## - disableCompaction: false - ## @param prometheus.walCompression Enable compression of the write-ahead log using Snappy - ## - walCompression: false - ## @param prometheus.enableRemoteWriteReceiver Enable Prometheus to be used as a receiver for the Prometheus remote write protocol - ## - enableRemoteWriteReceiver: false - ## @param prometheus.paused If true, the Operator won't process any Prometheus configuration changes - ## - paused: false - ## @param prometheus.replicaCount Number of Prometheus replicas desired - ## - replicaCount: 1 - ## @param prometheus.logLevel Log level for Prometheus - ## - logLevel: info - ## @param prometheus.logFormat Log format for Prometheus - ## - logFormat: logfmt - ## @param prometheus.podMetadata [object] Standard object's metadata - ## ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata - ## - podMetadata: - ## labels: - ## app: prometheus - ## k8s-app: prometheus - ## - labels: {} - annotations: {} - ## @param prometheus.remoteRead The remote_read spec configuration for Prometheus - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotereadspec - ## remoteRead: - ## - url: http://remote1/read - ## - remoteRead: [] - ## @param prometheus.remoteWrite The remote_write spec configuration for Prometheus - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#remotewritespec - ## remoteWrite: - ## - url: http://remote1/push - ## - remoteWrite: [] - ## @param prometheus.storageSpec Prometheus StorageSpec for persistent data - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md - ## - storageSpec: {} - ## Prometheus persistence parameters - ## - persistence: - ## @param prometheus.persistence.enabled Use PVCs to persist data. If the storageSpec is provided this will not take effect. - ## - enabled: true - ## @param prometheus.persistence.storageClass Persistent Volume Storage Class - ## If defined, storageClassName: - ## If set to "-", storageClassName: "", which disables dynamic provisioning - ## If undefined (the default) or set to null, no storageClassName spec is - ## set, choosing the default provisioner. - ## - storageClass: "" - ## @param prometheus.persistence.accessModes Persistent Volume Access Modes - ## - accessModes: - - ReadWriteOnce - ## @param prometheus.persistence.size Persistent Volume Size - ## - size: 999Gi - ## @param prometheus.priorityClassName Priority class assigned to the Pods - ## - priorityClassName: "" - ## @param prometheus.containers Containers allows injecting additional containers - ## - containers: [] - ## @param prometheus.volumes Volumes allows configuration of additional volumes - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec - ## - volumes: [] - ## @param prometheus.volumeMounts VolumeMounts allows configuration of additional VolumeMounts. Evaluated as a template - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec - ## - volumeMounts: [] - ## @param prometheus.additionalPrometheusRules PrometheusRule defines recording and alerting rules for a Prometheus instance. - additionalPrometheusRules: [] - ## - name: custom-recording-rules - ## groups: - ## - name: sum_node_by_job - ## rules: - ## - record: job:kube_node_labels:sum - ## expr: sum(kube_node_labels) by (job) - ## - name: sum_prometheus_config_reload_by_pod - ## rules: - ## - record: job:prometheus_config_last_reload_successful:sum - ## expr: sum(prometheus_config_last_reload_successful) by (pod) - ## - name: custom-alerting-rules - ## groups: - ## - name: prometheus-config - ## rules: - ## - alert: PrometheusConfigurationReload - ## expr: prometheus_config_last_reload_successful > 0 - ## for: 1m - ## labels: - ## severity: error - ## annotations: - ## summary: "Prometheus configuration reload (instance {{ $labels.instance }})" - ## description: "Prometheus configuration reload error\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" - ## - name: custom-node-exporter-alerting-rules - ## rules: - ## - alert: PhysicalComponentTooHot - ## expr: node_hwmon_temp_celsius > 75 - ## for: 5m - ## labels: - ## severity: warning - ## annotations: - ## summary: "Physical component too hot (instance {{ $labels.instance }})" - ## description: "Physical hardware component too hot\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" - ## - alert: NodeOvertemperatureAlarm - ## expr: node_hwmon_temp_alarm == 1 - ## for: 5m - ## labels: - ## severity: critical - ## annotations: - ## summary: "Node overtemperature alarm (instance {{ $labels.instance }})" - ## description: "Physical node temperature alarm triggered\n VALUE = {{ $value }}\n LABELS: {{ $labels }}" - ## - ## Note that the prometheus will fail to provision if the correct secret does not exist. - ## @param prometheus.additionalScrapeConfigs.enabled Enable additional scrape configs - ## @param prometheus.additionalScrapeConfigs.type Indicates if the cart should use external additional scrape configs or internal configs - ## @param prometheus.additionalScrapeConfigs.external.name Name of the secret that Prometheus should use for the additional external scrape configuration - ## @param prometheus.additionalScrapeConfigs.external.key Name of the key inside the secret to be used for the additional external scrape configuration - ## @param prometheus.additionalScrapeConfigs.internal.jobList A list of Prometheus scrape jobs - ## - additionalScrapeConfigs: - enabled: false - type: external - external: - ## Name of the secret that Prometheus should use for the additional scrape configuration - ## - name: "" - ## Name of the key inside the secret to be used for the additional scrape configuration. - ## - key: "" - internal: - jobList: [] - ## @param prometheus.additionalScrapeConfigsExternal.enabled Deprecated: Enable additional scrape configs that are managed externally to this chart - ## @param prometheus.additionalScrapeConfigsExternal.name Deprecated: Name of the secret that Prometheus should use for the additional scrape configuration - ## @param prometheus.additionalScrapeConfigsExternal.key Deprecated: Name of the key inside the secret to be used for the additional scrape configuration - ## - additionalScrapeConfigsExternal: - enabled: false - name: "" - key: "" - ## Enable additional Prometheus alert relabel configs that are managed externally to this chart - ## Note that the prometheus will fail to provision if the correct secret does not exist. - ## @param prometheus.additionalAlertRelabelConfigsExternal.enabled Enable additional Prometheus alert relabel configs that are managed externally to this chart - ## @param prometheus.additionalAlertRelabelConfigsExternal.name Name of the secret that Prometheus should use for the additional Prometheus alert relabel configuration - ## @param prometheus.additionalAlertRelabelConfigsExternal.key Name of the key inside the secret to be used for the additional Prometheus alert relabel configuration - ## - additionalAlertRelabelConfigsExternal: - enabled: false - name: "" - key: "" - ## Thanos sidecar container configuration - ## - thanos: - ## @param prometheus.thanos.create Create a Thanos sidecar container - ## - create: false - ## Bitnami Thanos image - ## ref: https://hub.docker.com/r/oci.trueforge.org/truecharts/thanos/tags/ - ## @param prometheus.thanos.image.registry Thanos image registry - ## @param prometheus.thanos.image.repository Thanos image name - ## @param prometheus.thanos.image.tag Thanos image tag - ## @param prometheus.thanos.image.pullPolicy Thanos image pull policy - ## @param prometheus.thanos.image.pullSecrets Specify docker-registry secret names as an array - ## - ## Thanos Sidecar container's securityContext - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container - ## @param prometheus.thanos.containerSecurityContext.enabled Enable container security context - ## @param prometheus.thanos.containerSecurityContext.readOnlyRootFilesystem mount / (root) as a readonly filesystem - ## @param prometheus.thanos.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off - ## @param prometheus.thanos.containerSecurityContext.runAsNonRoot Force the container to run as a non root user - ## @param prometheus.thanos.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped - ## - containerSecurityContext: - enabled: true - readOnlyRootFilesystem: false - allowPrivilegeEscalation: false - runAsNonRoot: true - capabilities: - drop: - - ALL - ## @param prometheus.thanos.prometheusUrl Override default prometheus url "http://localhost:9090" - ## - prometheusUrl: "" - ## @param prometheus.thanos.extraArgs Additional arguments passed to the thanos sidecar container - ## extraArgs: - ## - --log.level=debug - ## - --tsdb.path=/data/ - ## - extraArgs: [] - ## @param prometheus.thanos.objectStorageConfig Support mounting a Secret for the objectStorageConfig of the sideCar container. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/thanos.md - ## objectStorageConfig: - ## secretName: thanos-objstore-config - ## secretKey: thanos.yaml - ## - objectStorageConfig: {} - ## ref: https://github.com/thanos-io/thanos/blob/main/docs/components/sidecar.md - ## @param prometheus.thanos.extraVolumeMounts Additional volumeMounts from `prometheus.volumes` for thanos sidecar container - ## extraVolumeMounts: - ## - name: my-secret-volume - ## mountPath: /etc/thanos/secrets/my-secret - ## - extraVolumeMounts: [] - ## Thanos sidecar container resource requests and limits. - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## We usually recommend not to specify default resources and to leave this as a conscious - ## choice for the user. This also increases chances charts run on environments with little - ## resources, such as Minikube. If you do want to specify resources, uncomment the following - ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. - ## @param prometheus.thanos.resources.limits The resources limits for the Thanos sidecar container - ## @param prometheus.thanos.resources.requests The resources requests for the Thanos sidecar container - ## - resources: - ## Example: - ## limits: - ## cpu: 75m - ## memory: 128Mi - limits: {} - ## Examples: - ## requests: - ## cpu: 75m - ## memory: 128Mi - requests: {} - ## Configure extra options for liveness probe - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes - ## @param prometheus.thanos.livenessProbe.enabled Turn on and off liveness probe - ## @param prometheus.thanos.livenessProbe.path Path of the HTTP service for checking the healthy state - ## @param prometheus.thanos.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated - ## @param prometheus.thanos.livenessProbe.periodSeconds How often to perform the probe - ## @param prometheus.thanos.livenessProbe.timeoutSeconds When the probe times out - ## @param prometheus.thanos.livenessProbe.failureThreshold Minimum consecutive failures for the probe - ## @param prometheus.thanos.livenessProbe.successThreshold Minimum consecutive successes for the probe - ## - livenessProbe: - enabled: true - path: /-/healthy - initialDelaySeconds: 0 - periodSeconds: 5 - timeoutSeconds: 3 - failureThreshold: 120 - successThreshold: 1 - ## Configure extra options for readiness probe - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes - ## @param prometheus.thanos.readinessProbe.enabled Turn on and off readiness probe - ## @param prometheus.thanos.readinessProbe.path Path of the HTTP service for checking the ready state - ## @param prometheus.thanos.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated - ## @param prometheus.thanos.readinessProbe.periodSeconds How often to perform the probe - ## @param prometheus.thanos.readinessProbe.timeoutSeconds When the probe times out - ## @param prometheus.thanos.readinessProbe.failureThreshold Minimum consecutive failures for the probe - ## @param prometheus.thanos.readinessProbe.successThreshold Minimum consecutive successes for the probe - ## - readinessProbe: - enabled: true - path: /-/ready - initialDelaySeconds: 0 - periodSeconds: 5 - timeoutSeconds: 3 - failureThreshold: 120 - successThreshold: 1 - ## Thanos Sidecar Service - ## - service: - ## @param prometheus.thanos.service.type Kubernetes service type - ## - type: ClusterIP - ## @param prometheus.thanos.service.port Thanos service port - ## - port: 10901 - ## @param prometheus.thanos.service.clusterIP Specific cluster IP when service type is cluster IP. Use `None` to create headless service by default. - ## Use a "headless" service by default so it returns every pod's IP instead of loadbalancing requests. - ## - clusterIP: None - ## @param prometheus.thanos.service.nodePort Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## e.g: - ## nodePort: 30901 - ## - nodePort: "" - ## @param prometheus.thanos.service.loadBalancerIP `loadBalancerIP` if service type is `LoadBalancer` - ## Set the LoadBalancer service type to internal only - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## - loadBalancerIP: "" - ## @param prometheus.thanos.service.loadBalancerSourceRanges Address that are allowed when svc is `LoadBalancer` - ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service - ## e.g: - ## loadBalancerSourceRanges: - ## - 10.10.10.0/24 - ## - loadBalancerSourceRanges: [] - ## @param prometheus.thanos.service.annotations Additional annotations for Prometheus service - ## - annotations: {} - ## @param prometheus.thanos.service.extraPorts Additional ports to expose from the Thanos sidecar container - ## extraPorts: - ## - name: http - ## port: 10902 - ## targetPort: http - ## protocol: tcp - ## - extraPorts: [] - ## @param prometheus.portName Port name used for the pods and governing service. This defaults to web - ## - portName: main - -#### -## Alert Manager Config -#### - -## @section Alertmanager Parameters - -## Configuration for alertmanager -## ref: https://prometheus.io/docs/alerting/alertmanager/ -## -alertmanager: - ## @param alertmanager.enabled Deploy Alertmanager to the cluster - ## - enabled: true - ## Service account for Alertmanager to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - ## @param alertmanager.serviceAccount.create Specify whether to create a ServiceAccount for Alertmanager - ## - create: true - ## @param alertmanager.serviceAccount.name The name of the ServiceAccount to create - ## If not set and create is true, a name is generated using the kube-prometheus.alertmanager.fullname template - name: "" - ## Prometheus Alertmanager pods' Security Context - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod - ## @param alertmanager.podSecurityContext.enabled Enable security context - ## @param alertmanager.podSecurityContext.runAsUser User ID for the container - ## @param alertmanager.podSecurityContext.fsGroup Group ID for the container filesystem - ## - podSecurityContext: - enabled: true - runAsUser: 1001 - fsGroup: 1001 - ## Prometheus Alertmanager container's securityContext - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container - ## @param alertmanager.containerSecurityContext.enabled Enable container security context - ## @param alertmanager.containerSecurityContext.readOnlyRootFilesystem mount / (root) as a readonly filesystem - ## @param alertmanager.containerSecurityContext.allowPrivilegeEscalation Switch privilegeEscalation possibility on or off - ## @param alertmanager.containerSecurityContext.runAsNonRoot Force the container to run as a non root user - ## @param alertmanager.containerSecurityContext.capabilities.drop [array] Linux Kernel capabilities which should be dropped - ## - containerSecurityContext: - enabled: true - readOnlyRootFilesystem: false - allowPrivilegeEscalation: false - runAsNonRoot: true - capabilities: - drop: - - ALL - ## Configure pod disruption budgets for Alertmanager - ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget - ## @param alertmanager.podDisruptionBudget.enabled Create a pod disruption budget for Alertmanager - ## @param alertmanager.podDisruptionBudget.minAvailable Minimum number / percentage of pods that should remain scheduled - ## @param alertmanager.podDisruptionBudget.maxUnavailable Maximum number / percentage of pods that may be made unavailable - ## - podDisruptionBudget: - enabled: false - minAvailable: 1 - maxUnavailable: "" - ## If true, create a serviceMonitor for alertmanager - ## - serviceMonitor: - ## @param alertmanager.serviceMonitor.enabled Creates a ServiceMonitor to monitor Alertmanager - ## - enabled: true - ## @param alertmanager.serviceMonitor.interval Scrape interval. If not set, the Prometheus default scrape interval is used. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - ## - interval: "" - ## @param alertmanager.serviceMonitor.metricRelabelings Metric relabeling - ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs - ## - metricRelabelings: [] - ## @param alertmanager.serviceMonitor.relabelings Relabel configs - ## ref: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config - ## - relabelings: [] - ## @param alertmanager.externalUrl External URL used to access Alertmanager - ## e.g: - ## externalUrl: https://alertmanager.example.com - ## - externalUrl: "" - ## @param alertmanager.resources CPU/Memory resource requests/limits for node - ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: {} - ## @param alertmanager.podAffinityPreset Alertmanager Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAffinityPreset: "" - ## @param alertmanager.podAntiAffinityPreset Alertmanager Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity - ## - podAntiAffinityPreset: soft - ## Node affinity preset - ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity - ## - nodeAffinityPreset: - ## @param alertmanager.nodeAffinityPreset.type Alertmanager Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` - ## - type: "" - ## @param alertmanager.nodeAffinityPreset.key Alertmanager Node label key to match Ignored if `affinity` is set. - ## E.g. - ## key: "kubernetes.io/e2e-az-name" - ## - key: "" - ## @param alertmanager.nodeAffinityPreset.values Alertmanager Node label values to match. Ignored if `affinity` is set. - ## E.g. - ## values: - ## - e2e-az1 - ## - e2e-az2 - ## - values: [] - ## @param alertmanager.affinity Alertmanager Affinity for pod assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity - ## Note: alertmanager.podAffinityPreset, alertmanager.podAntiAffinityPreset, and alertmanager.nodeAffinityPreset will be ignored when it's set - ## - affinity: {} - ## @param alertmanager.nodeSelector Alertmanager Node labels for pod assignment - ## ref: https://kubernetes.io/docs/user-guide/node-selection/ - ## - nodeSelector: {} - ## @param alertmanager.tolerations Alertmanager Tolerations for pod assignment - ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - ## - tolerations: [] - ## Alertmanager configuration - ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file - ## @param alertmanager.config [object] Alertmanager configuration directive - ## @skip alertmanager.config.route.group_by - ## @skip alertmanager.config.route.routes - ## @skip alertmanager.config.receivers - ## - config: - global: - resolve_timeout: 5m - route: - group_by: - - job - group_wait: 30s - group_interval: 5m - repeat_interval: 12h - receiver: "null" - routes: - - match: - alertname: Watchdog - receiver: "null" - receivers: - - name: "null" - ## @param alertmanager.externalConfig Alertmanager configuration is created externally. If true, `alertmanager.config` is ignored, and a secret will not be created. - ## Alertmanager requires a secret named `alertmanager-{{ template "kube-prometheus.alertmanager.fullname" . }}` - ## It must contain: - ## alertmanager.yaml: - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/alerting.md#alerting - ## - externalConfig: false - ## @param alertmanager.replicaCount Number of Alertmanager replicas desired - ## - replicaCount: 1 - ## Configure extra options for liveness probe - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes - ## @param alertmanager.livenessProbe.enabled Turn on and off liveness probe - ## @param alertmanager.livenessProbe.path Path of the HTTP service for checking the healthy state - ## @param alertmanager.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated - ## @param alertmanager.livenessProbe.periodSeconds How often to perform the probe - ## @param alertmanager.livenessProbe.timeoutSeconds When the probe times out - ## @param alertmanager.livenessProbe.failureThreshold Minimum consecutive failures for the probe - ## @param alertmanager.livenessProbe.successThreshold Minimum consecutive successes for the probe - ## - livenessProbe: - enabled: true - path: /-/healthy - initialDelaySeconds: 0 - periodSeconds: 5 - timeoutSeconds: 3 - failureThreshold: 120 - successThreshold: 1 - ## Configure extra options for readiness probe - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes - ## @param alertmanager.readinessProbe.enabled Turn on and off readiness probe - ## @param alertmanager.readinessProbe.path Path of the HTTP service for checking the ready state - ## @param alertmanager.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated - ## @param alertmanager.readinessProbe.periodSeconds How often to perform the probe - ## @param alertmanager.readinessProbe.timeoutSeconds When the probe times out - ## @param alertmanager.readinessProbe.failureThreshold Minimum consecutive failures for the probe - ## @param alertmanager.readinessProbe.successThreshold Minimum consecutive successes for the probe - ## - readinessProbe: - enabled: true - path: /-/ready - initialDelaySeconds: 0 - periodSeconds: 5 - timeoutSeconds: 3 - failureThreshold: 120 - successThreshold: 1 - ## @param alertmanager.logLevel Log level for Alertmanager - ## - logLevel: info - ## @param alertmanager.logFormat Log format for Alertmanager - ## - logFormat: logfmt - ## @param alertmanager.podMetadata [object] Standard object's metadata. - ## ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata - ## - podMetadata: - labels: {} - annotations: {} - ## @param alertmanager.secrets Secrets that should be mounted into the Alertmanager Pods - ## - secrets: [] - ## @param alertmanager.configMaps ConfigMaps that should be mounted into the Alertmanager Pods - ## - configMaps: [] - ## @param alertmanager.retention Metrics retention days - ## - retention: 240h - ## @param alertmanager.storageSpec Alertmanager StorageSpec for persistent data - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md - ## - storageSpec: {} - ## Alertmanager persistence parameters - ## - persistence: - ## @param alertmanager.persistence.enabled Use PVCs to persist data. If the storageSpec is provided this will not take effect. - ## If you want to use this configuration make sure the storageSpec is not provided. - ## - enabled: true - ## @param alertmanager.persistence.storageClass Persistent Volume Storage Class - ## If defined, storageClassName: - ## If set to "-", storageClassName: "", which disables dynamic provisioning - ## If undefined (the default) or set to null, no storageClassName spec is - ## set, choosing the default provisioner. - ## - storageClass: "" - ## @param alertmanager.persistence.accessModes Persistent Volume Access Modes - ## - accessModes: - - ReadWriteOnce - ## @param alertmanager.persistence.size Persistent Volume Size - ## - size: 999Gi - ## @param alertmanager.paused If true, the Operator won't process any Alertmanager configuration changes - ## - paused: false - ## @param alertmanager.listenLocal ListenLocal makes the Alertmanager server listen on loopback - ## - listenLocal: false - ## @param alertmanager.containers Containers allows injecting additional containers - ## - containers: [] - ## @param alertmanager.volumes Volumes allows configuration of additional volumes. Evaluated as a template - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec - ## - volumes: [] - ## @param alertmanager.volumeMounts VolumeMounts allows configuration of additional VolumeMounts. Evaluated as a template - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/pi.md#alertmanagerspec - ## - volumeMounts: [] - ## @param alertmanager.priorityClassName Priority class assigned to the Pods - ## - priorityClassName: "" - ## @param alertmanager.additionalPeers AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster - ## - additionalPeers: [] - ## @param alertmanager.routePrefix Prefix used to register routes, overriding externalUrl route - ## Useful for proxies that rewrite URLs. - ## - routePrefix: / - ## @param alertmanager.portName Port name used for the pods and governing service. This defaults to web - ## - portName: alertmanager - ## @param alertmanager.configNamespaceSelector AlertmanagerConfigs to be selected for to merge and configure Alertmanager with. This defaults to {} - ## - configNamespaceSelector: {} - ## @param alertmanager.configSelector Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. This defaults to {} - ## - configSelector: {} - -portal: - open: - enabled: true diff --git a/archive/charts/premium/traefik/.helmignore b/archive/charts/premium/traefik/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/premium/traefik/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/premium/traefik/CHANGELOG.md b/archive/charts/premium/traefik/CHANGELOG.md deleted file mode 100644 index 950139bca2c..00000000000 --- a/archive/charts/premium/traefik/CHANGELOG.md +++ /dev/null @@ -1,1537 +0,0 @@ ---- -title: Changelog -pagefind: false ---- - -## [traefik-13.5.5](https://github.com/truecharts/charts/compare/traefik-13.5.2...traefik-13.5.5) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [traefik-13.5.4](https://github.com/truecharts/charts/compare/traefik-13.5.2...traefik-13.5.4) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [traefik-13.5.4](https://github.com/truecharts/charts/compare/traefik-13.5.2...traefik-13.5.4) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [traefik-13.5.4](https://github.com/truecharts/charts/compare/traefik-13.5.2...traefik-13.5.4) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [traefik-13.5.3](https://github.com/truecharts/charts/compare/traefik-13.5.2...traefik-13.5.3) (2022-11-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [traefik-13.5.3](https://github.com/truecharts/charts/compare/traefik-13.5.2...traefik-13.5.3) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [traefik-13.5.2](https://github.com/truecharts/charts/compare/traefik-13.5.1...traefik-13.5.2) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) - -## [traefik-13.5.1](https://github.com/truecharts/charts/compare/traefik-13.5.0...traefik-13.5.1) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308)) - -## [traefik-13.5.0](https://github.com/truecharts/charts/compare/traefik-13.4.16...traefik-13.5.0) (2022-11-02) - -### Chore - -- Auto-update chart README [skip ci] - -### Feat - -- add support for insecureForwardAuth ([#4247](https://github.com/truecharts/charts/issues/4247)) - -## [traefik-13.4.16](https://github.com/truecharts/charts/compare/traefik-13.4.15...traefik-13.4.16) (2022-11-02) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)) - -## [traefik-13.4.15](https://github.com/truecharts/charts/compare/traefik-13.4.14...traefik-13.4.15) (2022-10-29) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4230](https://github.com/truecharts/charts/issues/4230)) - -## [traefik-13.4.14](https://github.com/truecharts/charts/compare/traefik-13.4.13...traefik-13.4.14) (2022-10-28) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4218](https://github.com/truecharts/charts/issues/4218)) - -## [traefik-13.4.13](https://github.com/truecharts/charts/compare/traefik-13.4.12...traefik-13.4.13) (2022-10-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) - -## [traefik-13.4.12](https://github.com/truecharts/charts/compare/traefik-13.4.11...traefik-13.4.12) (2022-10-21) - -### Chore - -- Auto-update chart README [skip ci] - -### Fix - -- fix CRD update and common update ([#4149](https://github.com/truecharts/charts/issues/4149)) - -## [traefik-13.4.11](https://github.com/truecharts/charts/compare/traefik-13.4.10...traefik-13.4.11) (2022-10-19) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) - -### Fix - -- enable crd updating ([#4068](https://github.com/truecharts/charts/issues/4068)) - -## [traefik-13.4.10](https://github.com/truecharts/charts/compare/traefik-13.4.9...traefik-13.4.10) (2022-10-12) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) - -## [traefik-13.4.9](https://github.com/truecharts/charts/compare/traefik-13.4.8...traefik-13.4.9) (2022-10-10) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major - -### Docs - -- Add basicAuth examples to docs ([#4056](https://github.com/truecharts/charts/issues/4056)) - -## [traefik-13.4.8](https://github.com/truecharts/charts/compare/traefik-13.4.7...traefik-13.4.8) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major - -## [traefik-13.4.8](https://github.com/truecharts/charts/compare/traefik-13.4.7...traefik-13.4.8) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [traefik-13.4.7](https://github.com/truecharts/charts/compare/traefik-13.4.6...traefik-13.4.7) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major - -## [traefik-13.4.6](https://github.com/truecharts/charts/compare/traefik-13.4.5...traefik-13.4.6) (2022-10-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [traefik-13.4.5](https://github.com/truecharts/charts/compare/traefik-13.4.4...traefik-13.4.5) (2022-10-04) - -### Chore - -- Auto-update chart README [skip ci] -- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) -- update docker general non-major ([#4001](https://github.com/truecharts/charts/issues/4001)) - -## [traefik-13.4.4](https://github.com/truecharts/charts/compare/traefik-13.4.3...traefik-13.4.4) (2022-10-01) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3975](https://github.com/truecharts/charts/issues/3975)) - -## [traefik-13.4.3](https://github.com/truecharts/charts/compare/traefik-13.4.2...traefik-13.4.3) (2022-09-27) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)) - -## [traefik-13.4.2](https://github.com/truecharts/charts/compare/traefik-13.4.1...traefik-13.4.2) (2022-09-26) - -### Chore - -- Auto-update chart README [skip ci] - -### Feat - -- make include replace simpler ([#3904](https://github.com/truecharts/charts/issues/3904)) - -## [traefik-13.4.1](https://github.com/truecharts/charts/compare/traefik-13.4.0...traefik-13.4.1) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) - -## [traefik-13.4.0](https://github.com/truecharts/charts/compare/traefik-13.3.11...traefik-13.4.0) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] - -### Feat - -- add RealIP and addPrefix middleware ([#3884](https://github.com/truecharts/charts/issues/3884)) - -## [traefik-13.3.11](https://github.com/truecharts/charts/compare/traefik-14.0.0...traefik-13.3.11) (2022-09-24) - -### Chore - -- regex redirect docs ([#3880](https://github.com/truecharts/charts/issues/3880)) - -## [traefik-13.3.10](https://github.com/truecharts/charts/compare/traefik-13.3.9...traefik-13.3.10) (2022-09-24) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3860](https://github.com/truecharts/charts/issues/3860)) - -## [traefik-13.3.9](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.9) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- fix prometheus annotations ([#3841](https://github.com/truecharts/charts/issues/3841)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-17) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-18) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-15) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-15) - -### Chore - -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [traefik-13.3.7](https://github.com/truecharts/charts/compare/traefik-13.3.6...traefik-13.3.7) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [traefik-13.3.7](https://github.com/truecharts/charts/compare/traefik-13.3.6...traefik-13.3.7) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [traefik-13.3.7](https://github.com/truecharts/charts/compare/traefik-13.3.6...traefik-13.3.7) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [traefik-13.3.7](https://github.com/truecharts/charts/compare/traefik-13.3.6...traefik-13.3.7) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [traefik-13.3.7](https://github.com/truecharts/charts/compare/traefik-13.3.6...traefik-13.3.7) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [traefik-13.3.7](https://github.com/truecharts/charts/compare/traefik-13.3.6...traefik-13.3.7) (2022-09-11) - -### Chore - -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [traefik-13.3.6](https://github.com/truecharts/charts/compare/traefik-13.3.5...traefik-13.3.6) (2022-09-09) - -### Chore - -- move docs from website repo ([#3722](https://github.com/truecharts/charts/issues/3722)) - -## [traefik-13.3.5](https://github.com/truecharts/charts/compare/traefik-13.3.4...traefik-13.3.5) (2022-09-04) - -### Chore - -- update docker general non-major ([#3681](https://github.com/truecharts/charts/issues/3681)) - -## [traefik-13.3.4](https://github.com/truecharts/charts/compare/traefik-13.3.3...traefik-13.3.4) (2022-09-03) - -### Fix - -- fix serviceaccount creation on few apps ([#3665](https://github.com/truecharts/charts/issues/3665)) - -## [traefik-13.3.3](https://github.com/truecharts/charts/compare/traefik-13.3.1...traefik-13.3.3) (2022-08-30) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [traefik-13.3.2](https://github.com/truecharts/charts/compare/traefik-13.3.1...traefik-13.3.2) (2022-08-30) - -### Chore - -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [traefik-13.3.1](https://github.com/truecharts/charts/compare/traefik-13.3.0...traefik-13.3.1) (2022-08-29) - -### Chore - -- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) - -## [traefik-13.3.0](https://github.com/truecharts/charts/compare/traefik-13.2.3...traefik-13.3.0) (2022-08-27) - -### Feat - -- add support for proxyProtocol ([#3593](https://github.com/truecharts/charts/issues/3593)) - -## [traefik-13.2.3](https://github.com/truecharts/charts/compare/traefik-13.2.2...traefik-13.2.3) (2022-08-25) - -## [traefik-13.2.2](https://github.com/truecharts/charts/compare/traefik-13.2.1...traefik-13.2.2) (2022-08-23) - -### Chore - -- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) - -## [traefik-13.2.1](https://github.com/truecharts/charts/compare/traefik-13.1.10...traefik-13.2.1) (2022-08-22) - -### Chore - -- Auto-update chart README [skip ci] - -## [traefik-13.2.0](https://github.com/truecharts/charts/compare/traefik-13.1.10...traefik-13.2.0) (2022-08-21) - -## [traefik-13.1.10](https://github.com/truecharts/charts/compare/traefik-13.1.9...traefik-13.1.10) (2022-08-14) - -### Chore - -- update docker general non-major docker tags ([#3465](https://github.com/truecharts/charts/issues/3465)) - -## [traefik-13.1.9](https://github.com/truecharts/charts/compare/traefik-13.1.8...traefik-13.1.9) (2022-08-12) - -### Chore - -- add documentation checkbox/section to all SCALE Apps -- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456)) - -### Fix - -- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447)) -- make trustedIPs vars to string ([#3391](https://github.com/truecharts/charts/issues/3391)) - -## [traefik-13.1.8](https://github.com/truecharts/charts/compare/traefik-13.1.7...traefik-13.1.8) (2022-08-08) - -### Chore - -- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376)) -- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402)) - -## [traefik-13.1.7](https://github.com/truecharts/apps/compare/traefik-13.1.6...traefik-13.1.7) (2022-07-27) - -### Feat - -- add theme-park middleware docs ([#3320](https://github.com/truecharts/apps/issues/3320)) - -## [traefik-13.1.6](https://github.com/truecharts/apps/compare/traefik-13.1.5...traefik-13.1.6) (2022-07-26) - -### Chore - -- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302)) - -## [traefik-13.1.5](https://github.com/truecharts/apps/compare/traefik-13.1.4...traefik-13.1.5) (2022-07-25) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [traefik-13.1.5](https://github.com/truecharts/apps/compare/traefik-13.1.4...traefik-13.1.5) (2022-07-25) - -### Chore - -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [traefik-13.1.4](https://github.com/truecharts/apps/compare/traefik-13.1.3...traefik-13.1.4) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [traefik-13.1.4](https://github.com/truecharts/apps/compare/traefik-13.1.3...traefik-13.1.4) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [traefik-13.1.4](https://github.com/truecharts/apps/compare/traefik-13.1.3...traefik-13.1.4) (2022-07-23) - -### Chore - -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [traefik-13.1.3](https://github.com/truecharts/apps/compare/traefik-13.1.2...traefik-13.1.3) (2022-07-23) - -### Chore - -- update docker general non-major ([#3276](https://github.com/truecharts/apps/issues/3276)) - -## [traefik-13.1.2](https://github.com/truecharts/apps/compare/traefik-13.1.0...traefik-13.1.2) (2022-07-22) - -### Chore - -- Bump all charts to generate config and container references due to huge increase of repository -- update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) -- update docker general non-major ([#3266](https://github.com/truecharts/apps/issues/3266)) - -## [traefik-13.1.0](https://github.com/truecharts/apps/compare/traefik-13.0.0...traefik-13.1.0) (2022-07-22) - -## [traefik-13.0.0](https://github.com/truecharts/apps/compare/traefik-12.0.24...traefik-13.0.0) (2022-07-21) - -### Feat - -- Adds theme.park middleware and remove Traefik pilot ([#3245](https://github.com/truecharts/apps/issues/3245)) - -## [traefik-12.0.24](https://github.com/truecharts/apps/compare/traefik-12.0.23...traefik-12.0.24) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - -## [traefik-12.0.23](https://github.com/truecharts/apps/compare/traefik-12.0.22...traefik-12.0.23) (2022-07-18) - -### Fix - -- don't set xrobots header on default middleware ([#3211](https://github.com/truecharts/apps/issues/3211)) - -## [traefik-12.0.22](https://github.com/truecharts/apps/compare/traefik-12.0.20...traefik-12.0.22) (2022-07-14) - -### Fix - -- regenerate catalog and update template -- don't set xrobots header by default ([#3183](https://github.com/truecharts/apps/issues/3183)) - -## [traefik-12.0.20](https://github.com/truecharts/apps/compare/traefik-12.0.18...traefik-12.0.20) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts -- disable HTTP probes temporarily ([#3173](https://github.com/truecharts/apps/issues/3173)) - -## [traefik-12.0.18](https://github.com/truecharts/apps/compare/traefik-12.0.17...traefik-12.0.18) (2022-07-13) - -## [traefik-12.0.17](https://github.com/truecharts/apps/compare/traefik-12.0.15...traefik-12.0.17) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - -## [traefik-12.0.15](https://github.com/truecharts/apps/compare/traefik-12.0.14...traefik-12.0.15) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - -### [traccar-7.0.13](https://github.com/truecharts/apps/compare/traccar-7.0.12...traccar-7.0.13) (2022-07-12) - -#### Chore - -- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) - - - -### [traccar-7.0.12](https://github.com/truecharts/apps/compare/traccar-7.0.11...traccar-7.0.12) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [traccar-7.0.11](https://github.com/truecharts/apps/compare/traccar-7.0.10...traccar-7.0.11) (2022-07-11) - -#### Chore - -- update docker general non-major ([#3128](https://github.com/truecharts/apps/issues/3128)) - - - -### [traccar-7.0.10](https://github.com/truecharts/apps/compare/traccar-7.0.9...traccar-7.0.10) (2022-07-09) - -#### Chore - -- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - -### [traccar-7.0.9](https://github.com/truecharts/apps/compare/traccar-7.0.8...traccar-7.0.9) (2022-07-05) - -#### Chore - -- update helm general non-major helm releases ([#3075](https://github.com/truecharts/apps/issues/3075)) - - - -### [traccar-7.0.8](https://github.com/truecharts/apps/compare/traccar-7.0.7...traccar-7.0.8) (2022-07-04) - -#### Chore - -- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - -### [traccar-7.0.7](https://github.com/truecharts/apps/compare/traccar-7.0.6...traccar-7.0.7) (2022-06-25) - -#### Chore - -- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977)) - - - -### [traccar-7.0.6](https://github.com/truecharts/apps/compare/traccar-7.0.5...traccar-7.0.6) (2022-06-22) - -#### Chore - -- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948)) - - - -### [traccar-7.0.5](https://github.com/truecharts/apps/compare/traccar-7.0.4...traccar-7.0.5) (2022-06-21) - -#### Chore - -- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943)) - - - -### [traccar-7.0.4](https://github.com/truecharts/apps/compare/traccar-7.0.3...traccar-7.0.4) (2022-06-17) - -#### Chore - -- Sync questions and values env's ([#2916](https://github.com/truecharts/apps/issues/2916)) - - - -### [traccar-7.0.3](https://github.com/truecharts/apps/compare/traccar-7.0.2...traccar-7.0.3) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2887](https://github.com/truecharts/apps/issues/2887)) - - - -### [traccar-7.0.2](https://github.com/truecharts/apps/compare/traccar-7.0.1...traccar-7.0.2) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886)) - - - -### [traccar-7.0.1](https://github.com/truecharts/apps/compare/traccar-7.0.0...traccar-7.0.1) (2022-06-11) - -#### Chore - -- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854)) - - - -### [traccar-7.0.0](https://github.com/truecharts/apps/compare/traccar-6.0.1...traccar-7.0.0) (2022-06-07) - -#### Chore - -- update helm general major helm releases ([#2804](https://github.com/truecharts/apps/issues/2804)) - -#### Fix - -- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format. - - - -### [traccar-6.0.1](https://github.com/truecharts/apps/compare/traccar-5.0.24...traccar-6.0.1) (2022-06-07) - -#### Chore - -- Auto-update chart README [skip ci] -- sync all apps persistence configuration and always default to PVC -- update helm general non-major helm releases ([#2838](https://github.com/truecharts/apps/issues/2838)) - -#### Fix - -- remove malfunctioning SCALE migration script - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [traccar-6.0.0](https://github.com/truecharts/apps/compare/traccar-5.0.24...traccar-6.0.0) (2022-06-07) - -#### Chore - -- sync all apps persistence configuration and always default to PVC - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [traccar-5.0.24](https://github.com/truecharts/apps/compare/traccar-5.0.23...traccar-5.0.24) (2022-05-31) - -#### Chore - -- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803)) - - - -### [traccar-5.0.23](https://github.com/truecharts/apps/compare/traccar-5.0.22...traccar-5.0.23) (2022-05-26) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [traccar-5.0.23](https://github.com/truecharts/apps/compare/traccar-5.0.22...traccar-5.0.23) (2022-05-26) - -#### Chore - -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [traccar-5.0.22](https://github.com/truecharts/apps/compare/traccar-5.0.21...traccar-5.0.22) (2022-05-25) - -#### Chore - -- update container image oci.trueforge.org/truecharts/traccar to v5.0 ([#2749](https://github.com/truecharts/apps/issues/2749)) - - - -### [traccar-5.0.21](https://github.com/truecharts/apps/compare/traccar-5.0.20...traccar-5.0.21) (2022-05-24) - -#### Chore - -- update helm general non-major helm releases - - - -### [traccar-5.0.20](https://github.com/truecharts/apps/compare/traccar-5.0.19...traccar-5.0.20) (2022-05-17) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases - - - -### [traccar-5.0.20](https://github.com/truecharts/apps/compare/traccar-5.0.19...traccar-5.0.20) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [traccar-5.0.19](https://github.com/truecharts/apps/compare/traccar-5.0.18...traccar-5.0.19) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [traccar-5.0.18](https://github.com/truecharts/apps/compare/traccar-5.0.17...traccar-5.0.18) (2022-05-10) - -#### Chore - -- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649)) - - - -### [traccar-5.0.17](https://github.com/truecharts/apps/compare/traccar-5.0.16...traccar-5.0.17) (2022-05-05) - -#### Chore - -- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612)) - - - -### [traccar-5.0.16](https://github.com/truecharts/apps/compare/traccar-5.0.15...traccar-5.0.16) (2022-05-04) - -#### Chore - -- update helm general non-major helm releases ([#2605](https://github.com/truecharts/apps/issues/2605)) - - - -### [traccar-5.0.15](https://github.com/truecharts/apps/compare/traccar-5.0.14...traccar-5.0.15) (2022-04-26) - -#### Chore - -- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573)) - - - -### [traccar-5.0.14](https://github.com/truecharts/apps/compare/traccar-5.0.13...traccar-5.0.14) (2022-04-20) - -#### Chore - -- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515)) -- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524)) - - - -### [traccar-5.0.13](https://github.com/truecharts/apps/compare/traccar-5.0.12...traccar-5.0.13) (2022-04-12) - -#### Chore - -- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480)) - - - -### [traccar-5.0.12](https://github.com/truecharts/apps/compare/traccar-5.0.11...traccar-5.0.12) (2022-04-03) - -#### Chore - -- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410)) - - - -### [traccar-5.0.11](https://github.com/truecharts/apps/compare/traccar-5.0.10...traccar-5.0.11) (2022-03-31) - -#### Chore - -- update helm general non-major helm releases ([#2362](https://github.com/truecharts/apps/issues/2362)) - - - -### [traccar-5.0.10](https://github.com/truecharts/apps/compare/traccar-5.0.9...traccar-5.0.10) (2022-03-31) - -#### Chore - -- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361)) - - - -### [traccar-5.0.9](https://github.com/truecharts/apps/compare/traccar-5.0.8...traccar-5.0.9) (2022-03-30) - -#### Chore - -- Use new repo ([#2337](https://github.com/truecharts/apps/issues/2337)) -- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354)) - - - -### [traccar-5.0.8](https://github.com/truecharts/apps/compare/traccar-5.0.7...traccar-5.0.8) (2022-03-26) - -#### Chore - -- update helm general non-major helm releases ([#2290](https://github.com/truecharts/apps/issues/2290)) - - - -### [traccar-5.0.7](https://github.com/truecharts/apps/compare/traccar-5.0.6...traccar-5.0.7) (2022-03-26) - -#### Chore - -- bump all apps to trigger ci - - - -### [traccar-5.0.2](https://github.com/truecharts/apps/compare/traccar-5.0.1...traccar-5.0.2) (2022-03-08) - -#### Chore - -- update helm general non-major helm releases ([#2116](https://github.com/truecharts/apps/issues/2116)) - - - -### [traccar-5.0.1](https://github.com/truecharts/apps/compare/traccar-5.0.0...traccar-5.0.1) (2022-03-07) - -#### Chore - -- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111)) -- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040)) - - - -### [traccar-5.0.0](https://github.com/truecharts/apps/compare/traccar-4.0.35...traccar-5.0.0) (2022-03-03) - -#### Chore - -- remove fixed env from questions.yaml -- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021)) - -#### Fix - -- BREAKING CHANGE Move some env-vars outside of env section ([#2010](https://github.com/truecharts/apps/issues/2010)) - - - -### [traccar-4.0.35](https://github.com/truecharts/apps/compare/traccar-4.0.34...traccar-4.0.35) (2022-03-02) - -#### Chore - -- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957)) -- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999)) - - - -### [traccar-4.0.34](https://github.com/truecharts/apps/compare/traccar-4.0.33...traccar-4.0.34) (2022-02-21) - -#### Chore - -- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927)) - - - -### [traccar-4.0.33](https://github.com/truecharts/apps/compare/traccar-4.0.32...traccar-4.0.33) (2022-02-15) - -#### Chore - -- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901)) - - - -### [traccar-4.0.32](https://github.com/truecharts/apps/compare/traccar-4.0.31...traccar-4.0.32) (2022-02-08) - -#### Chore - -- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871)) - - - -### [traccar-4.0.31](https://github.com/truecharts/apps/compare/traccar-4.0.30...traccar-4.0.31) (2022-02-06) - -#### Chore - -- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859)) - - - -### [traccar-4.0.30](https://github.com/truecharts/apps/compare/traccar-4.0.29...traccar-4.0.30) (2022-02-05) - -#### Chore - -- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852)) - - - -### [traccar-4.0.29](https://github.com/truecharts/apps/compare/traccar-4.0.28...traccar-4.0.29) (2022-02-03) - -#### Chore - -- update docker general non-major ([#1836](https://github.com/truecharts/apps/issues/1836)) - - - -### [traccar-4.0.28](https://github.com/truecharts/apps/compare/traccar-4.0.27...traccar-4.0.28) (2022-02-02) - -#### Chore - -- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828)) - - - -### [traccar-4.0.27](https://github.com/truecharts/apps/compare/traccar-4.0.26...traccar-4.0.27) (2022-01-25) - -#### Chore - -- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791)) - - - -### [traccar-4.0.26](https://github.com/truecharts/apps/compare/traccar-4.0.25...traccar-4.0.26) (2022-01-22) - -#### Chore - -- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766)) - - - -### [traccar-4.0.25](https://github.com/truecharts/apps/compare/traccar-4.0.24...traccar-4.0.25) (2022-01-22) - -#### Chore - -- update helm general non-major helm releases ([#1763](https://github.com/truecharts/apps/issues/1763)) - - - -### [traccar-4.0.24](https://github.com/truecharts/apps/compare/traccar-4.0.23...traccar-4.0.24) (2022-01-21) - -#### Chore - -- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759)) - -#### Fix - -- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750)) - - - -### [traccar-4.0.23](https://github.com/truecharts/apps/compare/traccar-4.0.22...traccar-4.0.23) (2022-01-18) - -#### Chore - -- update helm general non-major helm releases ([#1732](https://github.com/truecharts/apps/issues/1732)) - - - -### [traccar-4.0.22](https://github.com/truecharts/apps/compare/traccar-4.0.21...traccar-4.0.22) (2022-01-13) - -#### Chore - -- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712)) - -#### Feat - -- expose capabilities in GUI ([#1709](https://github.com/truecharts/apps/issues/1709)) - - - -### [traccar-4.0.21](https://github.com/truecharts/apps/compare/traccar-4.0.20...traccar-4.0.21) (2022-01-12) - -#### Chore - -- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704)) - - - -### [traccar-4.0.20](https://github.com/truecharts/apps/compare/traccar-4.0.19...traccar-4.0.20) (2022-01-11) - -#### Chore - -- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693)) - - - -### [traccar-4.0.19](https://github.com/truecharts/apps/compare/traccar-4.0.18...traccar-4.0.19) (2022-01-04) - -#### Chore - -- update helm general non-major helm releases - - - -### [traccar-4.0.18](https://github.com/truecharts/apps/compare/traccar-4.0.17...traccar-4.0.18) (2021-12-28) - -#### Chore - -- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623)) - - - -### [traccar-4.0.17](https://github.com/truecharts/apps/compare/traccar-4.0.16...traccar-4.0.17) (2021-12-21) - -#### Chore - -- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596)) - - - -### [traccar-4.0.16](https://github.com/truecharts/apps/compare/traccar-4.0.15...traccar-4.0.16) (2021-12-19) - -#### Chore - -- Last patch bump before RC2 branch-off -- move `envTpl` to `env` ([#1578](https://github.com/truecharts/apps/issues/1578)) -- remove `editable: true` as this is the default ([#1576](https://github.com/truecharts/apps/issues/1576)) - - - -### [traccar-4.0.15](https://github.com/truecharts/apps/compare/traccar-4.0.14...traccar-4.0.15) (2021-12-19) - -#### Chore - -- completely remove mountPath reference from GUI ([#1572](https://github.com/truecharts/apps/issues/1572)) -- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571)) - - - -### [traccar-4.0.14](https://github.com/truecharts/apps/compare/traccar-4.0.13...traccar-4.0.14) (2021-12-18) - -#### Chore - -- cleanup questions by removing hidden dicts ([#1558](https://github.com/truecharts/apps/issues/1558)) -- App-Icon Organization ([#1539](https://github.com/truecharts/apps/issues/1539)) - - - -### [traccar-4.0.13](https://github.com/truecharts/apps/compare/traccar-4.0.12...traccar-4.0.13) (2021-12-14) - -#### Chore - -- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535)) - - - -### [traccar-4.0.12](https://github.com/truecharts/apps/compare/traccar-4.0.11...traccar-4.0.12) (2021-12-13) - -#### Chore - -- move incubator apps to stable and bump everything - - - -### [traccar-4.0.11](https://github.com/truecharts/apps/compare/traccar-4.0.10...traccar-4.0.11) (2021-12-11) - -#### Chore - -- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509)) - - - -### [traccar-4.0.10](https://github.com/truecharts/apps/compare/traccar-4.0.9...traccar-4.0.10) (2021-12-07) - -#### Chore - -- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481)) - - - -### traccar-4.0.9 (2021-12-05) - -#### Chore - -- bump apps to generate security page -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- ensure container references are prefixed with v -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) -- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471)) -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - -#### Fix - -- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428)) - - - -### [traccar-4.0.8](https://github.com/truecharts/apps/compare/traccar-4.0.7...traccar-4.0.8) (2021-12-05) - -#### Chore - -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) - - - -### [traccar-4.0.7](https://github.com/truecharts/apps/compare/traccar-4.0.6...traccar-4.0.7) (2021-12-04) - -#### Chore - -- bump apps to generate security page - - - -### [traccar-4.0.6](https://github.com/truecharts/apps/compare/traccar-4.0.5...traccar-4.0.6) (2021-12-04) - -#### Chore - -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) - - - -### [traccar-4.0.5](https://github.com/truecharts/apps/compare/traccar-4.0.4...traccar-4.0.5) (2021-12-03) - -#### Chore - -- ensure container references are prefixed with v -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) - - - -### [traccar-4.0.4](https://github.com/truecharts/apps/compare/traccar-4.0.3...traccar-4.0.4) (2021-11-30) - -#### Chore - -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - - - -### [traccar-4.0.3](https://github.com/truecharts/apps/compare/traccar-4.0.2...traccar-4.0.3) (2021-11-23) - -#### Chore - -- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386)) - - - -### [traccar-4.0.2](https://github.com/truecharts/apps/compare/traccar-4.0.1...traccar-4.0.2) (2021-11-22) - -#### Chore - -- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383)) - -#### Fix - -- Default enable all services ([#1361](https://github.com/truecharts/apps/issues/1361)) - - - -### [traccar-4.0.1](https://github.com/truecharts/apps/compare/traccar-4.0.0...traccar-4.0.1) (2021-11-16) - -#### Chore - -- update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345)) - - - -### [traccar-4.0.0](https://github.com/truecharts/apps/compare/traccar-3.0.10...traccar-4.0.0) (2021-11-16) - -#### Chore - -- update helm chart postgresql to v6 ([#1343](https://github.com/truecharts/apps/issues/1343)) - - - -### [traccar-3.0.10](https://github.com/truecharts/apps/compare/traccar-3.0.9...traccar-3.0.10) (2021-11-15) - -#### Chore - -- persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329)) -- update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338)) - - - -### [traccar-3.0.9](https://github.com/truecharts/apps/compare/traccar-3.0.8...traccar-3.0.9) (2021-11-14) - -#### Chore - -- fixes around the GUI refactor ([#1316](https://github.com/truecharts/apps/issues/1316)) -- move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326)) -- clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322)) -- update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328)) - -#### Fix - -- split udp and tcp ports ([#1321](https://github.com/truecharts/apps/issues/1321)) -- sync securityContext from values to questions ([#1323](https://github.com/truecharts/apps/issues/1323)) - - - -### [traccar-3.0.8](https://github.com/truecharts/apps/compare/traccar-3.0.7...traccar-3.0.8) (2021-11-09) - -#### Chore - -- update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297)) - - - -### [traccar-3.0.7](https://github.com/truecharts/apps/compare/traccar-3.0.6...traccar-3.0.7) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295)) - - - -### [traccar-3.0.6](https://github.com/truecharts/apps/compare/traccar-3.0.5...traccar-3.0.6) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291)) - -#### Chore - -- Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289)) - -#### Feat - -- Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290)) - - - -### [traccar-3.0.5](https://github.com/truecharts/apps/compare/traccar-3.0.4...traccar-3.0.5) (2021-11-02) - -#### Chore - -- update non-major deps helm releases ([#1267](https://github.com/truecharts/apps/issues/1267)) - - - -### [traccar-3.0.4](https://github.com/truecharts/apps/compare/traccar-3.0.3...traccar-3.0.4) (2021-11-01) - -#### Chore - -- update non-major deps helm releases ([#1264](https://github.com/truecharts/apps/issues/1264)) - - - -### [traccar-3.0.3](https://github.com/truecharts/apps/compare/traccar-3.0.2...traccar-3.0.3) (2021-10-26) - -#### Chore - -- update helm chart postgresql to v5.1.4 ([#1249](https://github.com/truecharts/apps/issues/1249)) - - - -### [traccar-3.0.2](https://github.com/truecharts/apps/compare/traccar-3.0.1...traccar-3.0.2) (2021-10-26) - -#### Chore - -- update non-major deps helm releases ([#1245](https://github.com/truecharts/apps/issues/1245)) - - - -### [traccar-3.0.1](https://github.com/truecharts/apps/compare/traccar-3.0.0...traccar-3.0.1) (2021-10-26) - -#### Chore - -- update helm chart common to v8.3.15 ([#1240](https://github.com/truecharts/apps/issues/1240)) - - - -### [traccar-3.0.0](https://github.com/truecharts/apps/compare/traccar-2.0.0...traccar-3.0.0) (2021-10-26) - -#### Chore - -- update helm chart postgresql to v5 ([#1234](https://github.com/truecharts/apps/issues/1234)) -- update helm chart postgresql to v4.1.0 ([#1237](https://github.com/truecharts/apps/issues/1237)) - - - -### [traccar-2.0.0](https://github.com/truecharts/apps/compare/traccar-1.0.3...traccar-2.0.0) (2021-10-25) - -#### Chore - -- Adapt for TrueNAS SCALE RC1 - - - -### [traccar-1.0.3](https://github.com/truecharts/apps/compare/traccar-1.0.0...traccar-1.0.3) (2021-10-20) - -#### Chore - -- bump apps, remove duplicates and move incubator to stable for RC1 - - - -### [traccar-1.0.0](https://github.com/truecharts/apps/compare/traccar-0.0.4...traccar-1.0.0) (2021-10-20) - -#### Chore - -- update helm chart postgresql to v4 ([#1214](https://github.com/truecharts/apps/issues/1214)) - -#### Fix - -- use correct PVC storageClass when using postgresql as a dependency on SCALE ([#1212](https://github.com/truecharts/apps/issues/1212)) - - - -### [traccar-0.0.4](https://github.com/truecharts/apps/compare/traccar-0.0.3...traccar-0.0.4) (2021-10-20) - -#### Chore - -- bump versions to rerelease and fix icons - - - -### [traccar-0.0.3](https://github.com/truecharts/apps/compare/traccar-0.0.2...traccar-0.0.3) (2021-10-19) - -#### Change - -- Project-Eclipse 3, Automatically generate item.yaml ([#1178](https://github.com/truecharts/apps/issues/1178)) - -#### Chore - -- Project-Eclipse 5, move app-readme to automatic generation script ([#1181](https://github.com/truecharts/apps/issues/1181)) -- update helm chart common to v8.3.13 ([#1184](https://github.com/truecharts/apps/issues/1184)) - -#### Feat - -- Project-Eclipse 4, Add App grading annotations to Chart.yaml ([#1180](https://github.com/truecharts/apps/issues/1180)) - -#### Refactor - -- Project Eclipse Part 6, move questions.yaml to root App folder ([#1182](https://github.com/truecharts/apps/issues/1182)) - - - -### [traccar-0.0.2](https://github.com/truecharts/apps/compare/traccar-0.0.1...traccar-0.0.2) (2021-10-19) - -#### Chore - -- Project-Eclipse part 2, adapting and cleaning changelog ([#1173](https://github.com/truecharts/apps/issues/1173)) -- update helm chart postgresql to v3.0.20 ([#1177](https://github.com/truecharts/apps/issues/1177)) - - - -### traccar-0.0.1 (2021-10-19) - -#### Feat - -- Add more Apps using postgresql ([#1136](https://github.com/truecharts/apps/issues/1136)) - - - -### traccar-0.0.1 (2021-10-16) - -#### Feat - -- Add more Apps using postgresql diff --git a/archive/charts/premium/traefik/Chart.yaml b/archive/charts/premium/traefik/Chart.yaml deleted file mode 100644 index 48e203ac4be..00000000000 --- a/archive/charts/premium/traefik/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: network - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: premium -apiVersion: v2 -appVersion: 3.3.3 -dependencies: - - name: common - version: 25.3.1 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: Traefik is a flexible reverse proxy and Ingress Provider. -home: https://truecharts.org/charts/premium/traefik -icon: https://truecharts.org/img/hotlink-ok/chart-icons/traefik.webp -keywords: - - traefik - - ingress -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: traefik -sources: - - https://github.com/traefik/traefik - - https://github.com/traefik/traefik-helm-chart - - https://github.com/truecharts/charts/tree/master/charts/premium/traefik - - https://github.com/truecharts/containers/tree/master/apps/traefik - - https://traefik.io/ -type: application -version: 30.4.4 diff --git a/archive/charts/premium/traefik/README.md b/archive/charts/premium/traefik/README.md deleted file mode 100644 index 7a2de478ef4..00000000000 --- a/archive/charts/premium/traefik/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/premium/traefik) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/traefik` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/premium/traefik - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/premium/traefik/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/premium/traefik/ci/ci-values.yaml b/archive/charts/premium/traefik/ci/ci-values.yaml deleted file mode 100644 index 0d308ac36e1..00000000000 --- a/archive/charts/premium/traefik/ci/ci-values.yaml +++ /dev/null @@ -1,9 +0,0 @@ -# -- Options for the main traefik service, where the entrypoints traffic comes from -# from. -service: - tcp: - ports: - web: - port: 9080 - websecure: - port: 9443 diff --git a/archive/charts/premium/traefik/dashboard.json b/archive/charts/premium/traefik/dashboard.json deleted file mode 100644 index 1cde34c812b..00000000000 --- a/archive/charts/premium/traefik/dashboard.json +++ /dev/null @@ -1,1577 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__elements": {}, - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "9.3.1" - }, - { - "type": "panel", - "id": "piechart", - "name": "Pie chart", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, - { - "type": "panel", - "id": "stat", - "name": "Stat", - "version": "" - }, - { - "type": "panel", - "id": "timeseries", - "name": "Time series", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "description": "Official dashboard for Traefik on Kubernetes", - "editable": false, - "fiscalYearStartMonth": 0, - "gnetId": 17347, - "graphTooltip": 0, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 9, - "panels": [], - "title": "General", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 5, - "x": 0, - "y": 1 - }, - "id": 13, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.3.1", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "count(traefik_config_reloads_total)", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Traefik Instances", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 7, - "x": 5, - "y": 1 - }, - "id": 7, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "sum(rate(traefik_entrypoint_requests_total{entrypoint=~\"$entrypoint\"}[$interval])) by (entrypoint)", - "legendFormat": "{{entrypoint}}", - "range": true, - "refId": "A" - } - ], - "title": "Requests per Entrypoint", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "https://medium.com/@tristan_96324/prometheus-apdex-alerting-d17a065e39d0", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 6, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "(sum(rate(traefik_entrypoint_request_duration_seconds_bucket{le=\"0.3\",code=\"200\",entrypoint=~\"$entrypoint\"}[$interval])) by (method) + \n sum(rate(traefik_entrypoint_request_duration_seconds_bucket{le=\"1.2\",code=\"200\",entrypoint=~\"$entrypoint\"}[$interval])) by (method)) / 2 / \n sum(rate(traefik_entrypoint_request_duration_seconds_count{code=\"200\",entrypoint=~\"$entrypoint\"}[$interval])) by (method)\n", - "legendFormat": "{{method}}", - "range": true, - "refId": "A" - } - ], - "title": "Apdex score", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "Mean Distribution", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [], - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 5, - "x": 0, - "y": 3 - }, - "id": 14, - "options": { - "legend": { - "displayMode": "list", - "placement": "right", - "showLegend": true, - "values": [ - "percent" - ] - }, - "pieType": "pie", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "multi", - "sort": "asc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "sum(rate(traefik_service_requests_total{service=~\"$service.*\",protocol=\"http\"}[$interval])) by (method, code)", - "legendFormat": "{{method}}[{{code}}]", - "range": true, - "refId": "A" - } - ], - "title": "Http Code ", - "type": "piechart" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 23, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n traefik_service_request_duration_seconds_sum{service=~\"$service.*\",protocol=\"http\"} / \n traefik_service_request_duration_seconds_count{service=~\"$service.*\",protocol=\"http\"},\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\")\n)\n\n", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Top slow services", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 5, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",protocol=\"http\"}[$interval])) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\")\n)", - "legendFormat": "[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Most requested services", - "type": "timeseries" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 17 - }, - "id": 11, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 18 - }, - "id": 3, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "label_replace(\n 1 - (sum by (service)\n (rate(traefik_service_request_duration_seconds_bucket{le=\"1.2\",service=~\"$service.*\"}[$interval])) / sum by (service) \n (rate(traefik_service_request_duration_seconds_count{service=~\"$service.*\"}[$interval]))\n ) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\"\n)", - "legendFormat": "{{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Services failing SLO of 1200ms", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 18 - }, - "id": 4, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "label_replace(\n 1 - (sum by (service)\n (rate(traefik_service_request_duration_seconds_bucket{le=\"0.3\",service=~\"$service.*\"}[$interval])) / sum by (service) \n (rate(traefik_service_request_duration_seconds_count{service=~\"$service.*\"}[$interval]))\n ) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\"\n)", - "legendFormat": "{{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Services failing SLO of 300ms", - "type": "timeseries" - } - ], - "title": "SLO", - "type": "row" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 18 - }, - "id": 16, - "panels": [], - "title": "HTTP Details", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 12, - "w": 8, - "x": 0, - "y": 19 - }, - "id": 17, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code=~\"2..\",protocol=\"http\"}[$interval])) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\")\n)", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "2xx over $interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 12, - "w": 8, - "x": 8, - "y": 19 - }, - "id": 18, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code=~\"5..\",protocol=\"http\"}[$interval])) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\")\n)", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "5xx over $interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 12, - "w": 8, - "x": 16, - "y": 19 - }, - "id": 19, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code!~\"2..|5..\",protocol=\"http\"}[$interval])) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\")\n)", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Other codes over $interval", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "binBps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 31 - }, - "id": 20, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method) \n (rate(traefik_service_requests_bytes_total{service=~\"$service.*\",protocol=\"http\"}[$interval])) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\")\n)", - "legendFormat": "{{method}} on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Requests Size", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "binBps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 31 - }, - "id": 24, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method) \n (rate(traefik_service_responses_bytes_total{service=~\"$service.*\",protocol=\"http\"}[$interval])) > 0,\n \"service\", \"$1\", \"service\", \"([^@]+)@.*\")\n)", - "legendFormat": "{{method}} on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Responses Size", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 39 - }, - "id": 21, - "options": { - "legend": { - "calcs": [ - "mean", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "sum(traefik_open_connections{entrypoint=~\"$entrypoint\"}) by (entrypoint)\n", - "legendFormat": "{{entrypoint}}", - "range": true, - "refId": "A" - } - ], - "title": "Connections per Entrypoint", - "type": "timeseries" - } - ], - "refresh": false, - "schemaVersion": 37, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "includeAll": false, - "multi": false, - "name": "DS_PROMETHEUS", - "label": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "definition": "label_values(traefik_open_connections, entrypoint)", - "hide": 0, - "includeAll": true, - "multi": false, - "name": "entrypoint", - "options": [], - "query": { - "query": "label_values(traefik_open_connections, entrypoint)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "auto": true, - "auto_count": 30, - "auto_min": "1m", - "current": { - "selected": false, - "text": "auto", - "value": "$__auto_interval_interval" - }, - "hide": 0, - "name": "interval", - "options": [ - { - "selected": true, - "text": "auto", - "value": "$__auto_interval_interval" - }, - { - "selected": false, - "text": "1m", - "value": "1m" - }, - { - "selected": false, - "text": "5m", - "value": "5m" - }, - { - "selected": false, - "text": "10m", - "value": "10m" - }, - { - "selected": false, - "text": "30m", - "value": "30m" - }, - { - "selected": false, - "text": "1h", - "value": "1h" - }, - { - "selected": false, - "text": "2h", - "value": "2h" - }, - { - "selected": false, - "text": "4h", - "value": "4h" - }, - { - "selected": false, - "text": "8h", - "value": "8h" - } - ], - "query": "1m,5m,10m,30m,1h,2h,4h,8h", - "refresh": 2, - "skipUrlSync": false, - "type": "interval" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "definition": "label_values(traefik_service_requests_total, service)", - "hide": 0, - "includeAll": true, - "multi": false, - "name": "service", - "options": [], - "query": { - "query": "label_values(traefik_service_requests_total, service)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "/([^@]+)@.*/", - "skipUrlSync": false, - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Traefik Official Kubernetes Dashboard", - "uid": "n5bu_kv4k", - "version": 7, - "weekStart": "" -} diff --git a/archive/charts/premium/traefik/docs/Authelia-LLDAP-forwardauth.md b/archive/charts/premium/traefik/docs/Authelia-LLDAP-forwardauth.md deleted file mode 100644 index 304185f1eea..00000000000 --- a/archive/charts/premium/traefik/docs/Authelia-LLDAP-forwardauth.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Authelia + LLDAP + Traefik ForwardAuth Setup guide ---- - -Please refer to the full [Authelia + LLDAP + Traefik ForwardAuth Setup guide](/charts/premium/authelia/setup-guide) for a quick guide should take you through the steps necessary to setup `Authelia` as your `forwardAuth` for `Traefik`. diff --git a/archive/charts/premium/traefik/docs/custom-header-middlewares.md b/archive/charts/premium/traefik/docs/custom-header-middlewares.md deleted file mode 100644 index 5d9a90b88c1..00000000000 --- a/archive/charts/premium/traefik/docs/custom-header-middlewares.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Adding or Removing Headers ---- - -The `customRequestHeaders` and `customResponseHeaders` middlewares will allow you to add or remove headers from the request or response. - -## `customRequestHeaders` - -You can specify a list of headers to add to requests. When removing a header, you only need to specify the header name (an empty value removes the header with that name from requests, if it exists). - -## `customResponseHeaders` - -You can specify a list of headers to add to responses. When removing a header, you only need to specify the header name (an empty value removes the header with that name from responses, if it exists). diff --git a/archive/charts/premium/traefik/docs/img/BasicAuth.png b/archive/charts/premium/traefik/docs/img/BasicAuth.png deleted file mode 100644 index a69c2a6d44336f0dcaa7dc92ca3e1d6c89c2a692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47546 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 d%?@B)Dx-pn58{$l!`d{sLUf=)# diff --git a/archive/charts/premium/traefik/docs/img/IngressEnabled.png b/archive/charts/premium/traefik/docs/img/IngressEnabled.png deleted file mode 100644 index a1032cd37bac5a0c83e5f0793e3e8e54245d6d7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8476 zcmeHs`8%86*KSI6prsS7Ayj=(Vkl}JOSP&?*RbiaZG!b3`f`J-Lzny z000~Rzn@c&^#54_0B)8)x_{5`rTG%UJs`=OaJVWf7AqFp$JW5tB?-pILIt}u~xuImexx~}#dhm8ofGW~8E+Zr3JKYgF06?wQ zCwBMxaT7qe!F%br6>|0x-Kpc&OTho{`rqIQwc`jZ`=ngrl7~pO&j|5#EB8(0KyfO5 zam%I<3inAsLM#RTJ0Q8#r7@a0qVe$?knU=Y?UMa?=`WUGt)TSF*Ic259f#&Js%*5= zTf5$g@UCz9QIvszK+o1%uffjJg(3^A(bgY&6cJzWaaZ}+^4F1)pGo0)))#K$l@V-0 z)8NInPbL!nui0E2bc05szT&J=YqU15&2v9mCbJUae(pnps6qv%lw&7fv{5NV^a^@SQ`^3iZHZDxmQ7 z&PU1cQzPcu#Vt?}w?zTAd#N>PBb(8My|mxrJg6_I48;A`{_xw!O=no)S(Lwn)5y!2 zP2GUYMMg`rA9o@(usti)WZmDzeJiURinlDLf(p+G2~Avk+P$D@QYPSc_rd}YI@Pw? zFqM|QDEaUQuAvC(m}OFo)$Q7)&Rj5fF6^^7QK?bC)~p3tSEmuYEd# zY~C}^6x{8FgCHe$B7UjhFligx{7V-#x&W!PPS&Pmr7zbyiJ(&|cHkhX@>Ja6=LMpoud(iBNNJ&dm1xP% zMUY{$JWjQ;m?#qB=EF5b0V@FstU@}N_ zv<`fr5|l~NTZ>vc$U|k7Jl)9SfT$Rk>~fB2_Hjzxm-y|<1Qze-nzq9ICR+w4}-cDn>n!#%^&A(~LKu*6TsA~*HaXxCpx1&BY4 zji~CCP)3OS6y#a?kd@zeWx`<;T?|tHQ~6LtCcAb_ujs(|SrB9>Veh1(e0}+uYw?Eb z?Vyz{{%I?JPTYcz-6r*-u$ShY`azmUgvNf{8HMid(V^MJ4C7KAo6Sf3nkqIdx1aQ1 z)O@JQ7b&C)=}Fo;*qdNisOA6EpcT$3v(0*rR5XW|?1t6o6{RSD@ugh@5tmj6w_c!c zmDYJ%w1lV+F%QmBdVVK(ldJZkeA86iKVIcNDXO_I@0?zEMt+OIi`O=SBJ$uxlZ~EL z0V7vLgI_j8XF%Go9I=NMa6hK2`Re2KuAxEnkOIsVU$pR^QFQbY#4$3D6xdA9Xl{_( zb*KXS?r~+v8HH=zW`eNVt0-u6%}_WEmsegSCB;HN-aL0qxVm$p`poyMYdrECI1I|8 z!3PuUYxx3;#`LpTO_QB~M*bP_w3^N?QO8X1OJ{;d%nb!Y4e(06uSwn~w!JFNDi5DR zmli5>w_lY$gzU&Vf-C-Lnl{_`kI^=gsmSPsVoRk7>rAcv?^pIH;|g^gCttKo!^Qlo zH14h6YBOf6Zkxv_07oeNA|YGBPF*k4zg>M?vPMlnZ?HaHN@Ga#ffw4MqdU;;w#?5tB~m6Z(mHO5)LU7@R~+68`2B9|I<556^A{Te8Y+~7eO zBZaT77a9?DY=kwY-v1D;=eL0QlMShD>fQT6_1csmHHe~t&5KmV4ds3X+haIi9nXb6 zYYs!=;Tm13Qme^+n&#sEhuhzV&xS`^?x0j_GY|KK7BImzwu77B1 z0Dt5C!J#T_@$GRd$0k}xn0wDX!u9rGFhL&ry@aPoC{a7Z<}Yxb9oxA9JRi->-7|1q zknp*&oz;FghQEPq8u4)FaLW%aTxsMmZ5j=9qvt)wGwEw4cA7CZ1I6z+WZ%`S$(W~I zy~oQ+XuMCxi}nA0@1j96@LE}_z2*t33xHX&zH=JtlwW0cj7c#P?{D&N7cLF<7*`!= zDtw?yT;(DMC(_P_G|P%s{^{O zh*~Ha{5@M|V^;oPX={nH;rHS>*tAQeyL2*sHEq2v#;hdY7VHC;e6;$d;8s6k(fsr= zVx_QDwURBzr#M+I*mSdJ%LRr~A;VSC2*xZDx8i&Hr|5uy94H>>Jh8aGo7AtE^z0E@ zv8dW@>IH6zP}*4$d6yQ&fy;+-ACVkssT?(KJ@=&O)*+%0T0+c4J>(wvZ?POW!rAruF*AZQpIKF;%Q_!Eesi zNs2Rf9&QFzw~S^ly}w>%0~R)$=M9Dio4GBIIXK!6WMz7fHc9LH)*hy}U$}5v*InAx z7b-1&zbX)J_>^Q&noK|6FxjfImYFCJOsS=sZ16A9GE1xW(GCv7=+0za6fs@f=9%kV zA^r8@TfvVK#nF)yLA&vPoJAdq;}#;2hI0pJjU0F1drlbsj5Seiw2%7}MVxbA$^H}R zKlgP)8FfftgQ)JPrZox(=YJ)moBezZsvRs`3{1etiP#SBxs_8({^+OTu4CExv-@$v zFA$a7Wq0!-KhTYyu~4kw{4`4tpG+FM?vNgxgJhVXh1l1AZwS)c%l?H0<&g zScq!j~lCH zm*^P87C--@Cc6pSowdhOV3&>bynO0%|FOQIPny~%qZnT zC?i~KsNra_ahc(Y@rm`;rx?P!QT4kr-J=UZ^Nd95M_Xpbf7Yg#l^3yW)E6!UA9Z?Z$B*1L^$SAae)6sC% zQmyf!e4}=EPgLfkOjC5u)mepy3BB=kdxN-vY6eC)zw19)b#bUo z+WUA#moM5SETH(T;YWMs>zfWZIGd0--zSF8SQ`Xl+K=-Swn0EvLdIu0l|DRLdK>S9 z>Bnb}{x~dz^;R|h4cZpYy8D0ud9D+gJPh8`BZIt66g-nrX$cw$6m&76vV+x8yQ%hJ zKF||$?1;(5!3a3rkLulRyFZvyfqvGZ{v!OvmN_9_H&GV&4uX}?Db}8h!h~=4sN<&j zX&0qYg^uwRt-`{Yg$O75%%uE3j)4y2ALLxE?suQv!*VME{~kC%GF7rbFD+O}Y$ zg(bFeMZVREiaY^Yv$K8j4hc24>?^!XVm=Yx@H{atIve3jMbKOb_S_5)=fnk}ff<-S zdD8(%?9YEfuR3ec)M7$RmD8=X?Hwq#uXVIE`=j2h!SV8~;^M0`$ol@6;m&@WFHwBR z*-_-p8t5hU4sF-qYMhvy2hX4Yp|l~n?b`wGj3V*1w5^?-JJl9fbJ$IR3j2L!cgrxg z4t2rI_z+ae4LxOFN&7wvtr)yQQ`(hD8r!bSpWhs*jsn@r-}@MIgA6y5?syEVUBfKk#77c=`r>D9-rxDB3KOFzpOU{UnegxN3j8Jcy%aE^ICG z?usqVxOI-#(xw2W2!%Kr6Ln~I+7a4J5AE83o^e7%luIDrss+-Is=JJQ^4QRGEJelH z4zIGCjvpLRmX^S|nv5)~+#2oY@~qWu36uH$Maa*o9x`}KdeOT!u7ApJe~q<*UBll& zx@dnp-2pe8wv|qODy!s(4`NF4gOeS@^?}K0)ouglE&>&_XB?d{_jVWY1C?IeE7?G| z-`#cc61D{{!F~Tp)E;fK774HEs5czb26Jf%*5Px88gpL?P&L}hXpHVd{GshmfT)G@ z&yGeU@5pjWet}R)ECW2hyE8 z^n6^WJ2+rLk*0sbR7zpV5davgOZZ%0A6-nn!bhib`zzA^nG0)K5sj0-D7rFcNX>k*^~t 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 H^RWK{%?$DL diff --git a/archive/charts/premium/traefik/docs/img/traefik-regex-redirect-app.png b/archive/charts/premium/traefik/docs/img/traefik-regex-redirect-app.png deleted file mode 100644 index edd38fdf593bc0eca926409f2191fda8f018ef53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10847 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�q`LdYP6G%pbq66^Mtj4 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 diff --git a/archive/charts/premium/traefik/docs/img/traefik-regex-redirect-fields.png b/archive/charts/premium/traefik/docs/img/traefik-regex-redirect-fields.png deleted file mode 100644 index 8cf642d04c498ef7b0acaeb9b13e72006c6fa59f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28423 zcmeFZcT`hd*Dq>AR0J#(>CYq51*CVd0n%FlrA0()=)Fg!2?&Vv-b*Nn)IdT}s#2wd zKp<49fzSz^8^Gs1XN+_2cgH>Bd%y4garPJ)>>aY#nrp4O)|&J8n{$O~sw9S-9*LBd@JBm^$CtRD z+|mSHD!KCVch;>e?#U>QgaW=d$MQkt*E+RJ%tMtKqD9}?JvK}?`b+!S+w0${FH>LB zy{31E`<`v|%UDjUTeIMvG%3?NO+wej*1QNJJ@xbBwHhuV`n_WFsfIH{h7L09M6rlh z6r#zG^z3f!K@-{8&7`#}!^P9P$p;3NR#WOzZ-yKEkelkA|NJ|U_Uw1x2Cfl%fq1 z3#xXQz}M+3cZN3%B-o((7ng8d*t{t@u!$VYU`J9hcaK1cf$mOR0{{|pP#lV+IIAt4 z7NvKYUAh2xvXAZo?Z;3S>gFPs1+_@93I>ajdT@|1FS`D$J#S}!cc^+1m zyIcdv?8ITL#+;rz*qXJ%$BVVsyv+8=DQZ9lzAks-H{$0j_arCdD5oFm*1sYt!yq1x zr%x%`(p~iS*K{{-n`+v}%H5)!maqd= zF~1WVOBD`}_yf<^h&DOL6kp_+UtNQWK77Bd?Iar(ujZ+VMK)$db$PRt;-Pp-^ z@Vml&ekaFuc+h>nS8I`am~5yVy7Gw!WM^mZJCqI9z&~LpH}n#27%BtL*b!#ACIy!= zsC^Qc^FCPP5aLa;vlt=q9m+K#AFX^(LaDit-!9pD&O-&heGIwlJ|?ztu?k_6QQnP6 z`M_{C?320KDZ)B4KVEOFwc@)w4ip`Kb$u*svvJ=f?{Td$h>*1U7BeGUr11eWJ_Jxp z5!D}!q+FO_w$iQMR(OH6Slap_9^v;uiwXY~C#Ji};*NT!=v}lZf|q30eB$Z!e6?}^ zBl~cNFNUH2hY13Q@xut?ta+Ugz%Dd6zY)d{t5>^TpLe_thwNCU2s

mI`<3A6tAd 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�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

T== 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 Lv8_CF<-z{}XN~=R diff --git a/archive/charts/premium/traefik/docs/img/traefik-theme-app.png b/archive/charts/premium/traefik/docs/img/traefik-theme-app.png deleted file mode 100644 index a04abe92fe23368af3ed9f0f6db817a8d7af0eb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14618 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 E0WKbFNB{r; diff --git a/archive/charts/premium/traefik/docs/img/traefik-theme-before.png b/archive/charts/premium/traefik/docs/img/traefik-theme-before.png deleted file mode 100644 index efe42de1945f3b26ab7df754a1259d254f351d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52201 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

B?Zl+jRX^~ciQ)3Z2jElx$2f!yY;b81tFV%a3Av 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%0AU@ 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 poV6aSjk5Mfjd*N1hW0 Keep in mind that if you decide to use a self hosted theme provider, it will need to have enabled ingress. -> Also use the external URL, not the internal, as the client will need to access that theme provider to fetch the -> stylesheets. - -## Applying the theme to the app - -Edit your app `values.yaml`. - -```yaml -// values.yaml -ingress: - main: - enabled: true - integrations: - traefik: - enabled: true - middlewares: - - name: guactheme - namespace: traefik - certManager: - enabled: true - certificateIssuer: domain-0-le-prod - hosts: - - host: remote.domain.com -``` - -| Before | After | -| :-----------------------------------------------------: | :---------------------------------------------------: | -| ![traefik-theme-before](./img/traefik-theme-before.png) | ![traefik-theme-after](./img/traefik-theme-after.png) | diff --git a/archive/charts/premium/traefik/docs/traefik-basicAuth-middleware.md b/archive/charts/premium/traefik/docs/traefik-basicAuth-middleware.md deleted file mode 100644 index 8b3bb447c2c..00000000000 --- a/archive/charts/premium/traefik/docs/traefik-basicAuth-middleware.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Add Traefik Basic Auth to Apps ---- - -Our `traefik` chart has the ability to add various `middlewares` to the chart that can add extra functionality to your setup. In this guide we'll go over setting up the `Basic Auth` traefik middleware. - -## Installation - -Edit your traefik `values.yaml`. - -```yaml -// values.yaml -middlewares: - basicAuth: - - name: basic - users: - - username: someuser - password: somepassword - - username: seconduser - password: secondpassword -``` - -- Add as name users as necessary, choosing a specific `Username` and `Password` for each user. - -## Adding it to Apps using Ingress - -Edit your app `values.yaml`. - -```yaml -// values.yaml -ingress: - main: - enabled: true - integrations: - traefik: - enabled: true - middlewares: - - name: basic - namespace: traefik - certManager: - enabled: true - certificateIssuer: domain-0-le-prod - hosts: - - host: app.domain.tld -``` - -## Verify Authentication - -Once the `basicAuth` is setup, please visit the `URL` that you configured the `Ingress` for. If everything is setup correctly you should see the Pop-Up below. - -![BasicAuthWorking](./img/BasicAuthWorking.png) - -## Support - -- If you need more help you can also reach us using [Discord](https://discord.gg/tVsPTHWTtr) for real-time feedback and support. diff --git a/archive/charts/premium/traefik/icon-small.webp b/archive/charts/premium/traefik/icon-small.webp deleted file mode 100644 index ef3f00d1dda30cf504e4f2ff44d8072732da6a7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gO*Nk&Fm0ssJ4MM6+kP&il$0000G0000V0018V06|PpNdEu;00DryZQJqZ z`C+zg+h($D+qSJ_uPIu6|H0Cly*2wy-}^mdj))0>|D~{op}w*Jo~OTut(m2}PpAcw zXPd89VpC(XQBH>}ioyx`d?SRAPeSHUTnOy}ipCSoHij~!Qk*G(61y3WAH^x~X4%F0 z^ivSWL?3nnlPxq}Qyg}XJ@Co&KIRIDx|bAWkBXKiNx_Hws&JqJfxL7f8}K2JU)$XyI2InTk@B_%2}E7KuE+Y!Uvxk)Ip zrnJ@Du_|*!48yvpMzFg++rrDCA}uHs1Jp!7TttS?=L-vSgi-!#09H^qAT$900B{8W zodGH!03ZMY05m1A0Za`*4tsB6587fi!u0)_s|m60W=<~=YGA>7bhY00h(;%D0092} zpd+?Kx)X1n3>7_( z#(=!YPJ`K$b6eIe&2RB{he^4A)}i*L%u!q3KR%#M6mZdnx3=df-IT_6-Fyr)xT~@~ z=vA`Rm-@4swZJG-odJ8x?Z0Qk^630?91!mmnrL3u&Lww zk}I_B-G1+wIcq?4ZHTK4o)za|B({c`2zRuv5C`Le`RXvZU#;2k-CumRr0Pj*DApigX diff --git a/archive/charts/premium/traefik/icon.webp b/archive/charts/premium/traefik/icon.webp deleted file mode 100644 index cc0dd77b0bbb48e91f08f4496cb3d65f8b2e7ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3696 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 OZHz@g000000001dCN#/ to match the name of the -service generated. -Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` -*/}} -{{- define "providers.kubernetesIngress.publishedServicePath" -}} -{{- $fullName := include "tc.v1.common.lib.chart.names.fullname" . -}} -{{- $defServiceName := printf "%s/%s-tcp" .Release.Namespace $fullName -}} -{{- $servicePath := default $defServiceName .Values.providers.kubernetesIngress.publishedService.pathOverride }} -{{- print $servicePath | trimSuffix "-" -}} -{{- end -}} - -{{/* -Construct a comma-separated list of whitelisted namespaces -*/}} -{{- define "providers.kubernetesIngress.namespaces" -}} -{{- default .Release.Namespace (join "," .Values.providers.kubernetesIngress.namespaces) }} -{{- end -}} -{{- define "providers.kubernetesCRD.namespaces" -}} -{{- default .Release.Namespace (join "," .Values.providers.kubernetesCRD.namespaces) }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/_ingressclass.tpl b/archive/charts/premium/traefik/templates/_ingressclass.tpl deleted file mode 100644 index 4213783865c..00000000000 --- a/archive/charts/premium/traefik/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 "tc.v1.common.lib.metadata.allLabels" . | nindent 4 }} - name: {{ .Release.Name }} -spec: - controller: traefik.io/ingress-controller -{{- end }} -{{- end }} diff --git a/archive/charts/premium/traefik/templates/_ingressroute.tpl b/archive/charts/premium/traefik/templates/_ingressroute.tpl deleted file mode 100644 index 8e1d0f4e3f9..00000000000 --- a/archive/charts/premium/traefik/templates/_ingressroute.tpl +++ /dev/null @@ -1,34 +0,0 @@ -{{/* Define the ingressRoute */}} -{{- define "traefik.ingressRoute" -}} -{{ if .Values.ingressRoute.dashboard.enabled }} - -{{- $ingressRouteLabels := .Values.ingressRoute.dashboard.labels }} -{{- $ingressRouteAnnotations := .Values.ingressRoute.dashboard.annotations }} - ---- -apiVersion: traefik.io/v1alpha1 -kind: IngressRoute -metadata: - name: {{ include "tc.v1.common.lib.chart.names.fullname" . }}-dashboard - {{- $labels := (mustMerge ($ingressRouteLabels | default dict) (include "tc.v1.common.lib.metadata.allLabels" $ | fromYaml)) -}} - {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "labels" $labels) | trim) }} - labels: - {{- . | nindent 4 }} - {{- end }} - {{- $annotations := (mustMerge ($ingressRouteAnnotations | default dict) (include "tc.v1.common.lib.metadata.allAnnotations" $ | fromYaml)) -}} - {{- with (include "tc.v1.common.lib.metadata.render" (dict "rootCtx" $ "annotations" $annotations) | trim) }} - annotations: - {{- . | nindent 4 }} - {{- end }} - -spec: - entryPoints: - - main - routes: - - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) - kind: Rule - services: - - name: api@internal - kind: TraefikService -{{ end }} -{{- end }} diff --git a/archive/charts/premium/traefik/templates/_portalhook.tpl b/archive/charts/premium/traefik/templates/_portalhook.tpl deleted file mode 100644 index ec69a695ca6..00000000000 --- a/archive/charts/premium/traefik/templates/_portalhook.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{{/* Define the portalHook */}} -{{- define "traefik.portalhook" -}} -{{- if .Values.portalhook.enabled -}} - {{- $name := "portalhook" -}} - {{- if $.Values.ingressClass.enabled -}} - {{- $name = printf "portalhook-%v" .Release.Name -}} - {{- end }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ $name }} -data: - {{- $ports := dict }} - {{- range $.Values.service }} - {{- range $name, $value := .ports }} - {{- $_ := set $ports $name $value }} - {{- end }} - {{- end }} - {{- range $name, $value := $ports }} - {{ $name }}: {{ $value.port | quote }} - {{- end }} -{{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/_tlsoptions.tpl b/archive/charts/premium/traefik/templates/_tlsoptions.tpl deleted file mode 100644 index 163b5364421..00000000000 --- a/archive/charts/premium/traefik/templates/_tlsoptions.tpl +++ /dev/null @@ -1,13 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsOptions" -}} -{{- range $name, $config := .Values.tlsOptions }} - ---- -apiVersion: traefik.io/v1alpha1 -kind: TLSOption -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/traefik/templates/_tlsstore.tpl b/archive/charts/premium/traefik/templates/_tlsstore.tpl deleted file mode 100644 index bfd28a1fb70..00000000000 --- a/archive/charts/premium/traefik/templates/_tlsstore.tpl +++ /dev/null @@ -1,26 +0,0 @@ -{{/* Define the tlsOptions */}} -{{- define "traefik.tlsstore" -}} -{{- if .Values.defaultCertificate }} ---- -apiVersion: traefik.io/v1alpha1 -kind: TLSStore -metadata: - name: default -spec: - certificates: - - secretName: certificate-issuer-{{ tpl .Values.defaultCertificate $ }} - defaultCertificate: - secretName: certificate-issuer-{{ tpl .Values.defaultCertificate $ }} -{{- end }} - -{{- range $name, $config := .Values.tlsStore }} - ---- -apiVersion: traefik.io/v1alpha1 -kind: TLSStore -metadata: - name: {{ $name }} -spec: - {{- toYaml $config | nindent 2 }} -{{- end }} -{{- end }} diff --git a/archive/charts/premium/traefik/templates/common.yaml b/archive/charts/premium/traefik/templates/common.yaml deleted file mode 100644 index 381dbb9affa..00000000000 --- a/archive/charts/premium/traefik/templates/common.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{- $newArgs := (include "traefik.args" . | fromYaml) }} -{{- $_ := set .Values "newArgs" $newArgs -}} -{{- $mergedargs := concat $.Values.workload.main.podSpec.containers.main.args .Values.newArgs.args }} -{{- $_ := set $.Values.workload.main.podSpec.containers.main "args" $mergedargs -}} - -{{- include "traefik.portalhook" . }} -{{- include "traefik.tlsstore" . }} -{{- include "traefik.tlsOptions" . }} -{{- include "traefik.ingressRoute" . }} -{{- include "traefik.ingressClass" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/premium/traefik/templates/middlewares/addPrefix.yaml b/archive/charts/premium/traefik/templates/middlewares/addPrefix.yaml deleted file mode 100644 index 47138233643..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/addPrefix.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.addPrefix }} - ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - addPrefix: - prefix: {{ $middlewareData.prefix }} -{{- end }} diff --git a/archive/charts/premium/traefik/templates/middlewares/basic-middleware.yaml b/archive/charts/premium/traefik/templates/middlewares/basic-middleware.yaml deleted file mode 100644 index ef4671254ef..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/basic-middleware.yaml +++ /dev/null @@ -1,57 +0,0 @@ ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-compress" $.Release.Name) "compress" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - compress: {} ---- -# Here, an average of 300 requests per second is allowed. -# In addition, a burst of 200 requests is allowed. -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-basic-ratelimit" $.Release.Name) "basic-ratelimit" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - rateLimit: - average: 600 - burst: 400 ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-basic-secure-headers" $.Release.Name) "basic-secure-headers" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - referrerPolicy: same-origin - customRequestHeaders: - X-Forwarded-Proto: "https" - customResponseHeaders: - server: '' ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-chain-basic" $.Release.Name) "chain-basic" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - chain: - middlewares: - - name: {{ ternary (printf "%v-basic-ratelimit" $.Release.Name) "basic-ratelimit" $.Values.ingressClass.enabled }} - - name: {{ ternary (printf "%v-basic-secure-headers" $.Release.Name) "basic-secure-headers" $.Values.ingressClass.enabled }} - - name: {{ ternary (printf "%v-compress" $.Release.Name) "compress" $.Values.ingressClass.enabled }} diff --git a/archive/charts/premium/traefik/templates/middlewares/basicauth.yaml b/archive/charts/premium/traefik/templates/middlewares/basicauth.yaml deleted file mode 100644 index 1bbdc462b34..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/basicauth.yaml +++ /dev/null @@ -1,30 +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: {{ $.Release.Namespace }} -type: Opaque -stringData: - users: | - {{- range $index, $user := $users }} - {{ printf "%s" $user }} - {{- end }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - basicAuth: - secret: {{ printf "%v-%v" $middlewareData.name "secret" }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/bouncer.yaml b/archive/charts/premium/traefik/templates/middlewares/bouncer.yaml deleted file mode 100644 index 2e3015297b9..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/bouncer.yaml +++ /dev/null @@ -1,112 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.bouncer }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - plugin: - bouncer: - {{- with $middlewareData.enabled }} - enabled: {{ . }} - {{- end }} - {{- with $middlewareData.logLevel }} - logLevel: {{ . }} - {{- end }} - {{- with $middlewareData.updateIntervalSeconds }} - updateIntervalSeconds: {{ . }} - {{- end }} - {{- with $middlewareData.defaultDecisionSeconds }} - defaultDecisionSeconds: {{ . }} - {{- end }} - {{- with $middlewareData.httpTimeoutSeconds }} - httpTimeoutSeconds: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecMode }} - crowdsecMode: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecAppsecEnabled }} - crowdsecAppsecEnabled: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecAppsecHost }} - crowdsecAppsecHost: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecAppsecFailureBlock }} - crowdsecAppsecFailureBlock: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiKey }} - crowdsecLapiKey: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiKeyFile }} - crowdsecLapiKeyFile: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiHost }} - crowdsecLapiHost: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiScheme }} - crowdsecLapiScheme: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiTLSInsecureVerify }} - crowdsecLapiTLSInsecureVerify: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecCapiMachineId }} - crowdsecCapiMachineId: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecCapiPassword }} - crowdsecCapiPassword: {{ . }} - {{- end }} - {{- if $middlewareData.crowdsecCapiScenarios }} - crowdsecCapiScenarios: - {{- range $middlewareData.crowdsecCapiScenarios }} - - {{ . }} - {{- end }} - {{- end }} - {{- if $middlewareData.forwardedHeadersTrustedIPs }} - forwardedHeadersTrustedIPs: - {{- range $middlewareData.forwardedHeadersTrustedIPs }} - - {{ . }} - {{- end }} - {{- end }} - {{- if $middlewareData.clientTrustedIPs }} - clientTrustedIPs: - {{- range $middlewareData.clientTrustedIPs }} - - {{ . }} - {{- end }} - {{- end }} - {{- with $middlewareData.forwardedHeadersCustomName }} - forwardedHeadersCustomName: {{ . }} - {{- end }} - {{- with $middlewareData.redisCacheEnabled }} - redisCacheEnabled: {{ . }} - {{- end }} - {{- with $middlewareData.redisCacheHost }} - redisCacheHost: {{ . }} - {{- end }} - {{- with $middlewareData.redisCachePassword }} - redisCachePassword: {{ . }} - {{- end }} - {{- with $middlewareData.redisCacheDatabase }} - redisCacheDatabase: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiTLSCertificateAuthority }} - crowdsecLapiTLSCertificateAuthority: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiTLSCertificateAuthorityFile }} - crowdsecLapiTLSCertificateAuthorityFile: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiTLSCertificateBouncer }} - crowdsecLapiTLSCertificateBouncer: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiTLSCertificateBouncerFile }} - crowdsecLapiTLSCertificateBouncerFile: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiTLSCertificateBouncerKey }} - crowdsecLapiTLSCertificateBouncerKey: {{ . }} - {{- end }} - {{- with $middlewareData.crowdsecLapiTLSCertificateBouncerKeyFile }} - crowdsecLapiTLSCertificateBouncerKeyFile: {{ . }} - {{- end }} - - -{{- end }} diff --git a/archive/charts/premium/traefik/templates/middlewares/buffering.yaml b/archive/charts/premium/traefik/templates/middlewares/buffering.yaml deleted file mode 100644 index eade09784e4..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/buffering.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.buffering }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - buffering: {{/* Only render if its not and has a value of 0 or greater */}} - {{- if and (not (kindIs "invalid" $middlewareData.maxRequestBodyBytes)) (ge ($middlewareData.maxRequestBodyBytes | int) 0) }} - maxRequestBodyBytes: {{ $middlewareData.maxRequestBodyBytes }} - {{- end -}} - {{- if and (not (kindIs "invalid" $middlewareData.memRequestBodyBytes)) (ge ($middlewareData.memRequestBodyBytes | int) 0) }} - memRequestBodyBytes: {{ $middlewareData.memRequestBodyBytes }} - {{- end -}} - {{- if and (not (kindIs "invalid" $middlewareData.maxResponseBodyBytes)) (ge ($middlewareData.maxResponseBodyBytes | int) 0) }} - maxResponseBodyBytes: {{ $middlewareData.maxResponseBodyBytes }} - {{- end -}} - {{- if and (not (kindIs "invalid" $middlewareData.memResponseBodyBytes)) (ge ($middlewareData.memResponseBodyBytes | int) 0) }} - memResponseBodyBytes: {{ $middlewareData.memResponseBodyBytes }} - {{- end -}} - {{- if $middlewareData.retryExpression }} - retryExpression: {{ $middlewareData.retryExpression | quote }} - {{- end -}} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/chain.yaml b/archive/charts/premium/traefik/templates/middlewares/chain.yaml deleted file mode 100644 index 17d8853fb05..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/chain.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- $values := .Values -}} -{{- $namespace := $.Release.Namespace -}} -{{- if $.Values.ingressClass.enabled -}} - {{- $namespace := (printf "%v-%v" $namespace .Release.Name) -}} -{{- end -}} - -{{- range $index, $middlewareData := .Values.middlewares.chain }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - chain: - middlewares: - {{- range $index, $middleware := .middlewares }} - - name: {{ printf "%v-%v@%v" $namespace $middleware "kubernetescrd" }} - {{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/customFrameOptionsValue.yaml b/archive/charts/premium/traefik/templates/middlewares/customFrameOptionsValue.yaml deleted file mode 100644 index 9b9f2b6606c..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/customFrameOptionsValue.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.customFrameOptionsValue }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - headers: - customFrameOptionsValue: {{ $middlewareData.value }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/customRequestHeaders.yaml b/archive/charts/premium/traefik/templates/middlewares/customRequestHeaders.yaml deleted file mode 100644 index 3c43a131a1d..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/customRequestHeaders.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.customRequestHeaders }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - headers: - customRequestHeaders: - {{- range $index, $customRequestHeader := $middlewareData.headers }} - {{ $customRequestHeader.name }}: {{ $customRequestHeader.value | quote }} - {{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/customResponseHeaders.yaml b/archive/charts/premium/traefik/templates/middlewares/customResponseHeaders.yaml deleted file mode 100644 index a75db8a3382..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/customResponseHeaders.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.customResponseHeaders }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - headers: - customResponseHeaders: - {{- range $index, $customResponseHeader := $middlewareData.headers }} - {{ $customResponseHeader.name }}: {{ $customResponseHeader.value | quote }} - {{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/forwardauth.yaml b/archive/charts/premium/traefik/templates/middlewares/forwardauth.yaml deleted file mode 100644 index 787fa796823..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/forwardauth.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.forwardAuth }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - forwardAuth: - address: {{ $middlewareData.address }} - {{- with $middlewareData.authResponseHeaders }} - authResponseHeaders: - {{- toYaml . | nindent 4 }} - {{- end -}} - {{- with $middlewareData.authRequestHeaders }} - authRequestHeaders: - {{- toYaml . | nindent 4 }} - {{- end -}} - {{- if $middlewareData.authResponseHeadersRegex }} - authResponseHeadersRegex: {{ $middlewareData.authResponseHeadersRegex }} - {{- end -}} - {{- if $middlewareData.trustForwardHeader }} - trustForwardHeader: true - {{- end -}} - {{- with $middlewareData.tls }} - tls: - insecureSkipVerify: {{ .insecureSkipVerify | default false }} - {{- end -}} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/geoblock.yaml b/archive/charts/premium/traefik/templates/middlewares/geoblock.yaml deleted file mode 100644 index 2a647778e56..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/geoblock.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.geoBlock }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - plugin: - GeoBlock: - allowLocalRequests: {{ $middlewareData.allowLocalRequests }} - logLocalRequests: {{ $middlewareData.logLocalRequests }} - logAllowedRequests: {{ $middlewareData.logAllowedRequests }} - logApiRequests: {{ $middlewareData.logApiRequests }} - api: {{ $middlewareData.api }} - apiTimeoutMs: {{ $middlewareData.apiTimeoutMs }} - cacheSize: {{ $middlewareData.cacheSize }} - forceMonthlyUpdate: {{ $middlewareData.forceMonthlyUpdate }} - allowUnknownCountries: {{ $middlewareData.allowUnknownCountries }} - unknownCountryApiResponse: {{ $middlewareData.unknownCountryApiResponse }} - blackListMode: {{ $middlewareData.blackListMode }} - {{- if not $middlewareData.countries -}} - {{- fail "You have to define at least one country..." -}} - {{- end }} - countries: - {{- range $middlewareData.countries }} - - {{ . }} - {{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/ipwhitelist.yaml b/archive/charts/premium/traefik/templates/middlewares/ipwhitelist.yaml deleted file mode 100644 index 3aa813d0a15..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/ipwhitelist.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.ipWhiteList }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - ipAllowList: - sourceRange: - {{- range $middlewareData.sourceRange }} - - {{ . }} - {{- end }} - {{- if $middlewareData.ipStrategy }} - ipStrategy: - {{- if $middlewareData.ipStrategy.depth }} - depth: {{ $middlewareData.ipStrategy.depth }} - {{- end -}} - {{- if $middlewareData.ipStrategy.excludedIPs }} - excludedIPs: - {{- range $middlewareData.ipStrategy.excludedIPs }} - - {{ . }} - {{- end }} - {{- end -}} - {{- end -}} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/modsecurity.yaml b/archive/charts/premium/traefik/templates/middlewares/modsecurity.yaml deleted file mode 100644 index 07a8d5d358f..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/modsecurity.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.modsecurity }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - plugin: - traefik-modsecurity-plugin: - modSecurityUrl: {{ $middlewareData.modSecurityUrl }} - timeoutMillis: {{ $middlewareData.timeoutMillis }} - maxBodySize: {{ $middlewareData.maxBodySize }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/ratelimit.yaml b/archive/charts/premium/traefik/templates/middlewares/ratelimit.yaml deleted file mode 100644 index cd9117633f6..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/ratelimit.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.rateLimit }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - rateLimit: - average: {{ $middlewareData.average }} - burst: {{ $middlewareData.burst }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/real-ip.yaml b/archive/charts/premium/traefik/templates/middlewares/real-ip.yaml deleted file mode 100644 index 2877d9ce7f7..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/real-ip.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.realIP }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - plugin: - traefik-real-ip: - excludednets: - {{- range $middlewareData.excludedNetworks }} - - {{ . | quote }} - {{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/redirectScheme.yaml b/archive/charts/premium/traefik/templates/middlewares/redirectScheme.yaml deleted file mode 100644 index 09f3093998a..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/redirectScheme.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.redirectScheme }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - redirectScheme: - scheme: {{ $middlewareData.scheme }} - permanent: {{ $middlewareData.permanent }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/redirectregex.yaml b/archive/charts/premium/traefik/templates/middlewares/redirectregex.yaml deleted file mode 100644 index 30f44f9081b..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/redirectregex.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.redirectRegex }} ---- -# Declaring the user list -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - redirectRegex: - regex: {{ $middlewareData.regex | quote }} - replacement: {{ $middlewareData.replacement | quote }} - permanent: {{ $middlewareData.permanent }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/rewriteResponseHeaders.yaml b/archive/charts/premium/traefik/templates/middlewares/rewriteResponseHeaders.yaml deleted file mode 100644 index d7bfdcdbe07..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/rewriteResponseHeaders.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.rewriteResponseHeaders }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - plugin: - rewriteResponseHeaders: - rewrites: - {{- range $index, $rewriteResponseHeader := $middlewareData.headers }} - - header: {{ $rewriteResponseHeader.name }} - regex: {{ $rewriteResponseHeader.regex | quote }} - replacement: {{ $rewriteResponseHeader.replacement | quote }} - {{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/stripPrefixRegex.yaml b/archive/charts/premium/traefik/templates/middlewares/stripPrefixRegex.yaml deleted file mode 100644 index 6fd4c8c9970..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/stripPrefixRegex.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.stripPrefixRegex }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - stripPrefixRegex: - regex: - {{- range $middlewareData.regex }} - - {{ . | quote }} - {{- end }} -{{- end -}} diff --git a/archive/charts/premium/traefik/templates/middlewares/tc-chains.yaml b/archive/charts/premium/traefik/templates/middlewares/tc-chains.yaml deleted file mode 100644 index 5566d77c146..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/tc-chains.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-opencors-chain") "tc-opencors-chain" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - chain: - middlewares: - - name: {{ ternary (printf "%v-%v" $.Release.Name "basic-ratelimit") "basic-ratelimit" $.Values.ingressClass.enabled }} - - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-opencors-headers") "tc-opencors-headers" $.Values.ingressClass.enabled }} - - name: {{ ternary (printf "%v-%v" $.Release.Name "compress") "compress" $.Values.ingressClass.enabled }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-closedcors-chain") "tc-closedcors-chain" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - chain: - middlewares: - - name: {{ ternary (printf "%v-%v" $.Release.Name "basic-ratelimit") "basic-ratelimit" $.Values.ingressClass.enabled }} - - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-closedcors-headers") "tc-closedcors-headers" $.Values.ingressClass.enabled }} - - name: {{ ternary (printf "%v-%v" $.Release.Name "compress") "compress" $.Values.ingressClass.enabled }} diff --git a/archive/charts/premium/traefik/templates/middlewares/tc-headers.yaml b/archive/charts/premium/traefik/templates/middlewares/tc-headers.yaml deleted file mode 100644 index 6a8ead8ddf7..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/tc-headers.yaml +++ /dev/null @@ -1,55 +0,0 @@ ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-opencors-headers") "tc-opencors-headers" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - headers: - accessControlAllowHeaders: - - '*' - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - - POST - accessControlAllowOriginList: - - '*' - accessControlMaxAge: 100 - browserXssFilter: true - contentTypeNosniff: true - frameDeny: true - customRequestHeaders: - X-Forwarded-Proto: https - customResponseHeaders: - server: "" - forceSTSHeader: true - referrerPolicy: same-origin - stsSeconds: 63072000 ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-closedcors-headers") "tc-closedcors-headers" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - headers: - accessControlAllowMethods: - - GET - - OPTIONS - - HEAD - - PUT - accessControlMaxAge: 100 - stsSeconds: 63072000 - # stsIncludeSubdomains: false - # stsPreload: false - forceSTSHeader: true - contentTypeNosniff: true - browserXssFilter: true - referrerPolicy: same-origin - contentSecurityPolicy: frame-ancestors 'self'; form-action 'self'; upgrade-insecure-requests​ - customRequestHeaders: - X-Forwarded-Proto: "https" - customResponseHeaders: - server: '' diff --git a/archive/charts/premium/traefik/templates/middlewares/tc-nextcloud.yaml b/archive/charts/premium/traefik/templates/middlewares/tc-nextcloud.yaml deleted file mode 100644 index fcb09becb98..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/tc-nextcloud.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-nextcloud-redirectregex-dav") "tc-nextcloud-redirectregex-dav" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - redirectRegex: - regex: "https://(.*)/.well-known/(card|cal)dav" - replacement: "https://${1}/remote.php/dav/" ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-nextcloud-chain") "tc-nextcloud-chain" $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - chain: - middlewares: - - name: {{ ternary (printf "%v-%v" $.Release.Name "tc-nextcloud-redirectregex-dav") "tc-nextcloud-redirectregex-dav" $.Values.ingressClass.enabled }} diff --git a/archive/charts/premium/traefik/templates/middlewares/theme-park.yaml b/archive/charts/premium/traefik/templates/middlewares/theme-park.yaml deleted file mode 100644 index 16abf2e2f34..00000000000 --- a/archive/charts/premium/traefik/templates/middlewares/theme-park.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- range $index, $middlewareData := .Values.middlewares.themePark }} ---- -apiVersion: traefik.io/v1alpha1 -kind: Middleware -metadata: - name: {{ ternary (printf "%v-%v" $.Release.Name $middlewareData.name) $middlewareData.name $.Values.ingressClass.enabled }} - namespace: {{ $.Release.Namespace }} -spec: - plugin: - traefik-themepark: - app: {{ $middlewareData.appName }} - theme: {{ $middlewareData.themeName }} - baseUrl: {{ $middlewareData.baseUrl }} - {{- if $middlewareData.addons }} - addons: - {{- range $middlewareData.addons }} - - {{ . | quote }} - {{- end }} - {{- end -}} -{{- end -}} diff --git a/archive/charts/premium/traefik/values.yaml b/archive/charts/premium/traefik/values.yaml deleted file mode 100644 index 97c0794cc8c..00000000000 --- a/archive/charts/premium/traefik/values.yaml +++ /dev/null @@ -1,776 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/traefik - tag: v3.3.3@sha256:bfea9053dcccd6b2208e2eceb5b04c99d9d1ba4804eca5908734cd6dee4f4732 - pullPolicy: IfNotPresent - -workload: - main: - replicas: 2 - strategy: RollingUpdate - podSpec: - containers: - main: - args: [] - probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: tcp - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - # path: "/ping" - # -- Readiness probe configuration - # @default -- See below - readiness: - # -- sets the probe type when not using a custom probe - # @default -- "TCP" - type: tcp - # -- 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: tcp - # -- If a HTTP probe is used (default for HTTP/HTTPS services) this path is used - # @default -- "/" - # path: "/ping" -# -- Options for all pods -# Can be overruled per pod -podOptions: - automountServiceAccountToken: true -operator: - register: true -# -- 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: "" -# -- 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 level is set to ERROR. Alternative logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO. - level: ERROR - # -- Set the format of General Logs to be either Common Log Format or JSON. For more information: https://doc.traefik.io/traefik/observability/logs/#format - format: common - access: - # To enable access logs - enabled: false - # To write the logs in an asynchronous fashion, specify a bufferingSize option. - # This option represents the number of log lines Traefik will keep in memory before writing - # them to the selected output. In some cases, this option can greatly help performances. - # bufferingSize: 100 - # Filtering https://docs.traefik.io/observability/access-logs/#filtering - filters: {} - # statuscodes: "200,300-302" - # retryattempts: true - # minduration: 10ms - # Fields - # https://docs.traefik.io/observability/access-logs/#limiting-the-fieldsincluding-headers - fields: - general: - defaultmode: keep - names: {} - # Examples: - # ClientUsername: drop - headers: - defaultmode: drop - names: {} - # Examples: - # User-Agent: redact - # Authorization: drop - # Content-Type: keep - # -- Set the format of Access Logs to be either Common Log Format or JSON. For more information: https://doc.traefik.io/traefik/observability/access-logs/#format - format: common -metrics: - main: - enabled: true - type: servicemonitor - endpoints: - - port: metrics - path: /metrics - targetSelector: metrics - -globalArguments: - - "--global.checknewversion" - -configmap: - dashboard: - enabled: true - labels: - grafana_dashboard: "1" - data: - traefik.json: >- - {{ .Files.Get "dashboard.json" | indent 8 }} - -## -# -- 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: - - "--serverstransport.insecureskipverify=true" - - "--providers.kubernetesingress.allowexternalnameservices=true" - -# -- Default clusterCertificate generated by clusterissuer -defaultCertificate: "" - -# -- Add custom DNSStore objects -tlsStore: {} - -# -- TLS Options to be created as TLSOption CRDs -# https://doc.traefik.io/oci.trueforge.org/truecharts/https/tls/#tls-options -# Example: -tlsOptions: - default: - sniStrict: false - minVersion: VersionTLS12 - curvePreferences: - - CurveP521 - - CurveP384 - - X25519 - cipherSuites: - - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 - - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 - - 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: - ports: - main: - port: 9000 - targetPort: 9000 - protocol: http - # -- Forwarded Headers should never be enabled on Main entrypoint - forwardedHeaders: - enabled: false - # -- Proxy Protocol should never be enabled on Main entrypoint - proxyProtocol: - enabled: false - tcp: - enabled: true - type: LoadBalancer - externalTrafficPolicy: Local - ports: - web: - enabled: true - port: 80 - protocol: http - redirectTo: websecure - # Options: Empty, 0 (ingore), or positive int - # redirectPort: - # -- Configure (Forwarded Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers] Support - forwardedHeaders: - enabled: false - # -- List of trusted IP and CIDR references - trustedIPs: [] - # -- Trust all forwarded headers - insecureMode: false - # -- Configure (Proxy Protocol Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#proxyprotocol] Support - proxyProtocol: - enabled: false - # -- Only IPs in trustedIPs will lead to remote client address replacement - trustedIPs: [] - # -- Trust every incoming connection - insecureMode: false - websecure: - enabled: true - port: 443 - protocol: https - # -- Configure (Forwarded Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers] Support - forwardedHeaders: - enabled: false - # -- List of trusted IP and CIDR references - trustedIPs: [] - # -- Trust all forwarded headers - insecureMode: false - # -- Configure (Proxy Protocol Headers)[https://doc.traefik.io/traefik/routing/entrypoints/#proxyprotocol] Support - proxyProtocol: - enabled: false - # -- Only IPs in trustedIPs will lead to remote client address replacement - trustedIPs: [] - # -- Trust every incoming connection - insecureMode: false - # tcpexample: - # enabled: true - # targetPort: 9443 - # protocol: tcp - # tls: - # enabled: false - # # this is the name of a TLSOption definition - # options: "" - # certResolver: "" - # domains: [] - # # - main: example.com - # # sans: - # # - foo.example.com - # # - bar.example.com - metrics: - enabled: true - type: ClusterIP - ports: - metrics: - enabled: true - port: 9180 - targetPort: 9180 - protocol: http - # -- Forwarded Headers should never be enabled on Metrics entrypoint - forwardedHeaders: - enabled: false - # -- Proxy Protocol should never be enabled on Metrics entrypoint - proxyProtocol: - enabled: false - # udp: - # enabled: false -# -- Whether Role Based Access Control objects like roles and rolebindings should be created -rbac: - main: - enabled: true - primary: true - clusterWide: true - rules: - - apiGroups: - - "" - resources: - - nodes - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - endpoints - - services - verbs: - - get - - list - - watch - - apiGroups: - - discovery.k8s.io - resources: - - endpointslices - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch - - apiGroups: - - discovery.k8s.io - resources: - - endpointslices - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - list - - watch - - update - - create - - delete - - deletecollection - - apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingressclasses - - ingresses - verbs: - - get - - list - - watch - - apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses/status - verbs: - - update - - apiGroups: - - traefik.io - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - serverstransports - - serverstransporttcps - - tlsoptions - - tlsstores - - traefikservices - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - namespaces - - endpoints - - secrets - - services - - configmaps - verbs: - - get - - list - - watch - - apiGroups: - - discovery.k8s.io - resources: - - endpointslices - verbs: - - list - - watch - - apiGroups: - - gateway.networking.k8s.io - resources: - - backendtlspolicies - - gatewayclasses - - gateways - - grpcroutes - - httproutes - - referencegrants - - tcproutes - - tlsroutes - verbs: - - get - - list - - watch - - apiGroups: - - gateway.networking.k8s.io - resources: - - backendtlspolicies/status - - gatewayclasses/status - - gateways/status - - grpcroutes/status - - httproutes/status - - tcproutes/status - - tlsroutes/status - verbs: - - update - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - "" - resources: - - endpoints - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - namespaces - - pods - verbs: - - get - - list - - watch - - apiGroups: - - hub.traefik.io - resources: - - accesscontrolpolicies - - apiaccesses - - apiportals - - apiratelimits - - apis - - apiversions - - apibundles - - apiplans - verbs: - - list - - watch - - create - - update - - patch - - delete - - get - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - - apiGroups: - - apps - resources: - - replicasets - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - nodes - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - endpoints - - services - verbs: - - get - - list - - watch - - apiGroups: - - "" - resources: - - services - verbs: - - get - - list - - watch - - apiGroups: - - discovery.k8s.io - resources: - - endpointslices - verbs: - - list - - watch - - apiGroups: - - "" - resources: - - secrets - verbs: - - list - - apiGroups: - - "" - resources: - - 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.io - resources: - - ingressroutes - - ingressroutetcps - - ingressrouteudps - - middlewares - - middlewaretcps - - tlsoptions - - tlsstores - - traefikservices - - serverstransports - - serverstransporttcps - verbs: - - get - - list - - watch - - apiGroups: - - extensions - resources: - - podsecuritypolicies - verbs: - - use - - apiGroups: - - "" - resources: - - services - - endpoints - - namespaces - - pods - verbs: - - get - - list - - watch - - apiGroups: - - discovery.k8s.io - resources: - - endpointslices - verbs: - - get - - list - - watch - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - -# -- The service account the pods will use to interact with the Kubernetes API -serviceAccount: - main: - enabled: true - primary: true -# -- SCALE Middleware Handlers -middlewares: - basicAuth: [] - # - name: basicauthexample - # users: - # - username: testuser - # password: testpassword - forwardAuth: [] - # - name: forwardAuthexample - # address: https://auth.example.com/ - # authResponseHeaders: - # - X-Secret - # - X-Auth-User - # authRequestHeaders: - # - "Accept" - # - "X-CustomHeader" - # authResponseHeadersRegex: "^X-" - # trustForwardHeader: true - customRequestHeaders: [] - # - name: customRequestHeaderExample - # headers: - # - name: X-Custom-Header - # value: "foobar" - # - name: X-Header-To-Remove - # value: "" - customResponseHeaders: [] - # - name: customResponseHeaderExample - # headers: - # - name: X-Custom-Header - # value: "foobar" - # - name: X-Header-To-Remove - # value: "" - rewriteResponseHeaders: [] - # - name: rewriteResponseHeadersName - # headers: - # - name: "Location" - # regex: "^http://(.+)$" - # replacement: "https://$1" - # - name: "Date" - # regex: "^[^,]+,\\s*(.+)$" - # replacement: "$1" - customFrameOptionsValue: [] - # - name: customFrameOptionsValueExample - # value: "SAMEORIGIN" - buffering: [] - # - name: bufferingExample - # maxRequestBodyBytes: 1000000 - # memRequestBodyBytes: 1000000 - # maxResponseBodyBytes: 1000000 - # memResponseBodyBytes: 1000000 - # retryExpression: "IsNetworkError() && Attempts() < 2" - chain: [] - # - name: chainname - # middlewares: - # - name: compress - redirectScheme: [] - # - name: redirectSchemeName - # scheme: https - # permanent: true - rateLimit: [] - # - name: rateLimitName - # average: 300 - # burst: 200 - redirectRegex: [] - # - name: redirectRegexName - # regex: putregexhere - # replacement: replacementurlhere - # permanent: false - stripPrefixRegex: [] - # - name: stripPrefixRegexName - # regex: [] - ipWhiteList: [] - # - name: ipWhiteListName - # sourceRange: [] - # ipStrategy: - # depth: 2 - # excludedIPs: [] - themePark: [] - # - name: themeParkName - # -- Supported apps, lower case name - # -- https://docs.theme-park.dev/themes - # app: appnamehere - # -- Supported themes, lower case name - # -- https://docs.theme-park.dev/themes/APPNAMEHERE - # -- https://docs.theme-park.dev/community-themes - # theme: themenamehere - # -- https://theme-park.dev or a self hosted url - # baseUrl: https://theme-park.dev - # Sets X-Real-Ip with an IP from the X-Forwarded-For or - # Cf-Connecting-Ip (If from Cloudflare) - # Evaluation of those headers will go from last to first - realIP: [] - # - name: realIPName - # -- The real IP will be the first one that is - # -- not included in any of the CIDRs passed here - # excludedNetworks: - # - 1.1.1.1/24 - addPrefix: [] - # - name: addPrefixName - # prefix: "/foo" - geoBlock: [] - # -- https://github.com/PascalMinder/geoblock - # - name: geoBlockName - # allowLocalRequests: true - # logLocalRequests: false - # logAllowedRequests: false - # logApiRequests: false - # api: https://get.geojs.io/v1/ip/country/{ip} - # apiTimeoutMs: 500 - # cacheSize: 25 - # forceMonthlyUpdate: true - # allowUnknownCountries: false - # unknownCountryApiResponse: nil - # blackListMode: false - # countries: - # - RU - modsecurity: [] - # - name: modsecurityName - # modSecurityUrl: modSecurity container URL - # timeoutMillis: Configurated timeout - # maxBodySize: maxBodySize - bouncer: [] - # - name: bouncer - # enabled: false - # logLevel: DEBUG - # updateIntervalSeconds: 60 - # defaultDecisionSeconds: 60 - # httpTimeoutSeconds: 10 - # crowdsecMode: live - # crowdsecAppsecEnabled: false - # crowdsecAppsecHost: crowdsec:7422 - # crowdsecAppsecFailureBlock: true - # crowdsecLapiKey: privateKey-foo - # crowdsecLapiKeyFile: /etc/traefik/cs-privateKey-foo - # crowdsecLapiHost: crowdsec:8080 - # crowdsecLapiScheme: http - # crowdsecLapiTLSInsecureVerify: false - # crowdsecCapiMachineId: login - # crowdsecCapiPassword: password - # crowdsecCapiScenarios: - # - crowdsecurity/http-path-traversal-probing - # - crowdsecurity/http-xss-probing - # - crowdsecurity/http-generic-bf - # forwardedHeadersTrustedIPs: - # - 10.0.10.23/32 - # - 10.0.20.0/24 - # clientTrustedIPs: - # - 192.168.1.0/24 - # forwardedHeadersCustomName: X-Custom-Header - # redisCacheEnabled: false - # redisCacheHost: "redis:6379" - # redisCachePassword: password - # redisCacheDatabase: "5" - # crowdsecLapiTLSCertificateAuthority: |- - # crowdsecLapiTLSCertificateAuthorityFile: /etc/traefik/crowdsec-certs/ca.pem - # crowdsecLapiTLSCertificateBouncer: |- - # crowdsecLapiTLSCertificateBouncerFile: /etc/traefik/crowdsec-certs/bouncer.pem - # crowdsecLapiTLSCertificateBouncerKey: |- - # crowdsecLapiTLSCertificateBouncerKeyFile: /etc/traefik/crowdsec-certs/bouncer-key.pem - ## Note: body of every request will be buffered in memory while the request is in-flight - ## (i.e.: during the security check and during the request processing by traefik and the backend), - ## so you may want to tune maxBodySize depending on how much RAM you have. -portalhook: - enabled: true -persistence: - plugins: - enabled: true - mountPath: "/plugins-storage" - type: emptyDir - crowdsec-bouncer-tls: - enabled: "{{ if .Values.middlewares.bouncer }}true{{ else }}false{{ end }}" - mountPath: "/etc/traefik/crowdsec-certs" - type: secret - expandObjectName: false - objectName: crowdsec-bouncer-tls -portal: - open: - enabled: true - path: /dashboard/ -ingress: - main: - integrations: - homepage: - href: https://{{ ( index .Values.ingress.main.hosts 0 ).host }}/dashboard/ diff --git a/archive/charts/stable/automatic-music-downloader/.helmignore b/archive/charts/stable/automatic-music-downloader/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/stable/automatic-music-downloader/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/stable/automatic-music-downloader/CHANGELOG.md b/archive/charts/stable/automatic-music-downloader/CHANGELOG.md deleted file mode 100644 index 492e8028129..00000000000 --- a/archive/charts/stable/automatic-music-downloader/CHANGELOG.md +++ /dev/null @@ -1,547 +0,0 @@ ---- -title: Changelog -pagefind: false ---- - -## [automatic-music-downloader-3.0.0](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.41...automatic-music-downloader-3.0.0) (2022-11-10) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Major Change to GUI -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -### Fix - -- change container config label - -## [automatic-music-downloader-2.0.44](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.41...automatic-music-downloader-2.0.44) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [automatic-music-downloader-2.0.43](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.41...automatic-music-downloader-2.0.43) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [automatic-music-downloader-2.0.43](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.41...automatic-music-downloader-2.0.43) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [automatic-music-downloader-2.0.43](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.41...automatic-music-downloader-2.0.43) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [automatic-music-downloader-2.0.42](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.41...automatic-music-downloader-2.0.42) (2022-11-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [automatic-music-downloader-2.0.42](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.41...automatic-music-downloader-2.0.42) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [automatic-music-downloader-2.0.41](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.40...automatic-music-downloader-2.0.41) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) - -## [automatic-music-downloader-2.0.40](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.39...automatic-music-downloader-2.0.40) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308)) - -## [automatic-music-downloader-2.0.39](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.38...automatic-music-downloader-2.0.39) (2022-11-02) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)) - -## [automatic-music-downloader-2.0.38](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.37...automatic-music-downloader-2.0.38) (2022-10-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) - -## [automatic-music-downloader-2.0.37](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.36...automatic-music-downloader-2.0.37) (2022-10-19) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) - -## [automatic-music-downloader-2.0.36](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.35...automatic-music-downloader-2.0.36) (2022-10-12) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) - -## [automatic-music-downloader-2.0.35](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.34...automatic-music-downloader-2.0.35) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major - -## [automatic-music-downloader-2.0.35](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.34...automatic-music-downloader-2.0.35) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [automatic-music-downloader-2.0.34](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.33...automatic-music-downloader-2.0.34) (2022-10-05) - -### Chore - -- Auto-update chart README [skip ci] -- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) -- update helm general non-major - -## [automatic-music-downloader-2.0.33](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.32...automatic-music-downloader-2.0.33) (2022-09-27) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)) - -## [automatic-music-downloader-2.0.32](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.31...automatic-music-downloader-2.0.32) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-18) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-18) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-15) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.31](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.30...automatic-music-downloader-2.0.31) (2022-09-15) - -### Chore - -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [automatic-music-downloader-2.0.30](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.29...automatic-music-downloader-2.0.30) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [automatic-music-downloader-2.0.30](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.29...automatic-music-downloader-2.0.30) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [automatic-music-downloader-2.0.30](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.29...automatic-music-downloader-2.0.30) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [automatic-music-downloader-2.0.30](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.29...automatic-music-downloader-2.0.30) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [automatic-music-downloader-2.0.30](https://github.com/truecharts/charts/compare/automatic-music-downloader-2.0.29...automatic-music-downloader-2.0.30) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [avidemux-1.0.9](https://github.com/truecharts/charts/compare/avidemux-1.0.8...avidemux-1.0.9) (2022-09-11) - -### Chore - -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [avidemux-1.0.8](https://github.com/truecharts/charts/compare/avidemux-1.0.7...avidemux-1.0.8) (2022-08-30) - -### Chore - -- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) - -## [avidemux-1.0.7](https://github.com/truecharts/charts/compare/avidemux-1.0.6...avidemux-1.0.7) (2022-08-30) - -### Chore - -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [avidemux-1.0.6](https://github.com/truecharts/charts/compare/avidemux-1.0.5...avidemux-1.0.6) (2022-08-29) - -### Chore - -- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) - -## [avidemux-1.0.5](https://github.com/truecharts/charts/compare/avidemux-1.0.4...avidemux-1.0.5) (2022-08-23) - -### Chore - -- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) - -## [avidemux-1.0.4](https://github.com/truecharts/charts/compare/avidemux-1.0.3...avidemux-1.0.4) (2022-08-12) - -### Chore - -- add documentation checkbox/section to all SCALE Apps -- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456)) - -### Fix - -- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447)) - -## [avidemux-1.0.3](https://github.com/truecharts/charts/compare/avidemux-1.0.2...avidemux-1.0.3) (2022-08-08) - -### Chore - -- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376)) -- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402)) - -## [avidemux-1.0.2](https://github.com/truecharts/apps/compare/avidemux-1.0.1...avidemux-1.0.2) (2022-07-26) - -### Chore - -- update home links ([#3291](https://github.com/truecharts/apps/issues/3291)) -- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302)) - -## [avidemux-1.0.1](https://github.com/truecharts/apps/compare/avidemux-1.0.0...avidemux-1.0.1) (2022-07-25) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [avidemux-1.0.1](https://github.com/truecharts/apps/compare/avidemux-1.0.0...avidemux-1.0.1) (2022-07-25) - -### Chore - -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [avidemux-1.0.0](https://github.com/truecharts/apps/compare/avidemux-0.0.14...avidemux-1.0.0) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] - -### Feat - -- move some apps to stable ([#3281](https://github.com/truecharts/apps/issues/3281)) - -## [avidemux-1.0.0](https://github.com/truecharts/apps/compare/avidemux-0.0.14...avidemux-1.0.0) (2022-07-23) - -### Feat - -- move some apps to stable ([#3281](https://github.com/truecharts/apps/issues/3281)) - -## [avidemux-0.0.15](https://github.com/truecharts/apps/compare/avidemux-0.0.14...avidemux-0.0.15) (2022-07-23) - -### Chore - -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [avidemux-0.0.14](https://github.com/truecharts/apps/compare/avidemux-0.0.12...avidemux-0.0.14) (2022-07-22) - -### Chore - -- Bump all charts to generate config and container references due to huge increase of repository -- update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) - -## [avidemux-0.0.12](https://github.com/truecharts/apps/compare/avidemux-0.0.11...avidemux-0.0.12) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - -## [avidemux-0.0.11](https://github.com/truecharts/apps/compare/avidemux-0.0.10...avidemux-0.0.11) (2022-07-14) - -### Fix - -- regenerate catalog and update template - -## [avidemux-0.0.10](https://github.com/truecharts/apps/compare/avidemux-0.0.8...avidemux-0.0.10) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - -## [avidemux-0.0.8](https://github.com/truecharts/apps/compare/avidemux-0.0.6...avidemux-0.0.8) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - -## [avidemux-0.0.6](https://github.com/truecharts/apps/compare/avidemux-0.0.5...avidemux-0.0.6) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - -### [avidemux-0.0.5](https://github.com/truecharts/apps/compare/avidemux-0.0.4...avidemux-0.0.5) (2022-07-12) - -#### Chore - -- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) - - - -### [avidemux-0.0.4](https://github.com/truecharts/apps/compare/avidemux-0.0.3...avidemux-0.0.4) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) -- add markdownlint and cpell config files (and apply some linting) ([#3140](https://github.com/truecharts/apps/issues/3140)) - - - -### [avidemux-0.0.2](https://github.com/truecharts/apps/compare/avidemux-0.0.1...avidemux-0.0.2) (2022-07-09) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - -### avidemux-0.0.1 (2022-07-05) - -#### Feat - -- add 8 apps (jlesage apps) ([#3070](https://github.com/truecharts/apps/issues/3070)) diff --git a/archive/charts/stable/automatic-music-downloader/Chart.yaml b/archive/charts/stable/automatic-music-downloader/Chart.yaml deleted file mode 100644 index 77156f4d5aa..00000000000 --- a/archive/charts/stable/automatic-music-downloader/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: media - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: stable -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.1.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: A Lidarr companion script to automatically download music for Lidarr. -home: https://truecharts.org/charts/stable/automatic-music-downloader -icon: https://truecharts.org/img/hotlink-ok/chart-icons/automatic-music-downloader.webp -keywords: - - automatic - - music - - downloader - - deemix -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: automatic-music-downloader -sources: - - https://github.com/RandomNinjaAtk/docker-amd - - https://github.com/truecharts/charts/tree/master/charts/stable/automatic-music-downloader - - https://hub.docker.com/r/randomninjaatk/amd -type: application -version: 12.0.0 diff --git a/archive/charts/stable/automatic-music-downloader/README.md b/archive/charts/stable/automatic-music-downloader/README.md deleted file mode 100644 index 9f3e6670fff..00000000000 --- a/archive/charts/stable/automatic-music-downloader/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/automatic-music-downloader) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/automatic-music-downloader` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/automatic-music-downloader - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/automatic-music-downloader/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/automatic-music-downloader/icon-small.webp b/archive/charts/stable/automatic-music-downloader/icon-small.webp deleted file mode 100644 index ce88f959f00d7e547d1e8253d5054e4251a518e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 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 cA4T=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: ethercalc -sources: - - https://github.com/audreyt/ethercalc - - https://github.com/truecharts/charts/tree/master/charts/stable/ethercalc - - https://hub.docker.com/r/audreyt/ethercalc -type: application -version: 8.0.4 diff --git a/archive/charts/stable/ethercalc/README.md b/archive/charts/stable/ethercalc/README.md deleted file mode 100644 index 754236114e2..00000000000 --- a/archive/charts/stable/ethercalc/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/ethercalc) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/ethercalc` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/ethercalc - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/ethercalc/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/ethercalc/icon-small.webp b/archive/charts/stable/ethercalc/icon-small.webp deleted file mode 100644 index d17dd822d82987b30308ca0b7a9066ec476083a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmV-^0fGKfNk&F?0RRA3MM6+kP&il$0000G0000V0018V06|PpNPYkS00D4Z+qTl2 zA)j6x8ijaLi5B5jguA=kVP+Ab$Zgw3%IrOT1VE4*EVkR-?(_R%kn?!aE}gGGdd^$V zY+ePc1}ay{Eb&?6RtJiHS+3R*9>5ng@3{D zVpte1wwvwt^ZUG?^#A}?P&gpc0001x0|1=?Dj)zL00ICsB>-A{Kka_jYC_pwc9%k6;MYQcgZ3VO?ZOY#W_uc#wP4`$0q|#e!AC<4gw<*)m!40kBrQ7m{(h9BsJDs z79d0Of2^o%6g{lv$k@!E?F`rWx)K>IKULc>yv{%Jk;%F5S{gzy)*V^R+4a+(WTOlj zp144$r&6m`$n>ZL$Ihm^@gg-o8je`<6Piut6Gf zZ)<7AyIVj6%sHr4pDZL}dIK$L*dZa`l+hsGAg4s~be_6~_DD(Ybyam+I8tEFbTwrn zkeGIACLlHQS_6RO13B<4AD~kpJ)CO*tWeS;ehieogY+yoAZ+AF5PVs=yNn{f&F3OT zbNlWl2~NF9lZ|FHx#UEXC!RF<96%F?5SsW9#lOgZMgIGLtRR~BdeOwyjwY7BX!7M1 zO`e>j$>B9LSvH;~BRa-YB&uB`8YpN5i&ZI=z0)aZHVo8aw6+m-06&++PLED@8 zRLDIIS~oGH!pAz=K{sz2IJN;@C(9_1IuvvkZq8y~=5oGnAYGTry7&bm&}XT&Dz;@T zCS)AQKKIos<#jJo$x$jznVVmC0Vv+1*Z7?*ix1EAD89&;B zG1lH_&9Nl!`?5-4oZ|Y+y$V>7XFI!=5R6yc>w%xl^rd-TX~zd67qwn|%{s-D#r`}u ztC0W-W2yR`CvQ0W=7){Dze#ns{{H;<>MzoMccF^F665s77P)n0s4eCM<0-F#~neXe;8Fb(C8^%*PWisu2pSq%Quui9dn zlR8uFX8$mfJ|)^CIbZJmQhPIbDFe@soC={B?E1+4k>k6ca{rh%LA^vLD| zP2=80sCHYr&iTAFx?-dMs(pAx$!(aR_@4iIkQa<-6OV~94$3`Gjjph#% z!b}m@^$Y###g-*H3rI*Kdf)N|V>6t+sD&pQIQ+kM-(B&q|LXm)ODb~Y?EJwR5GI2J zl(+(sV-s?+^Xu2R+1t#D^4f}Q8|B3tM<}+}jQG*VEqJ{D`~ve)K82H0JWq07>=%m) ze_)|V*I!q#%K$k?KZg&$huEheL1v)8i0kr~u)z{M*Ez_4_PxM - -### [fossil-4.0.11](https://github.com/truecharts/apps/compare/fossil-4.0.10...fossil-4.0.11) (2022-07-12) - -#### Chore - -- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) - - - -### [fossil-4.0.10](https://github.com/truecharts/apps/compare/fossil-4.0.9...fossil-4.0.10) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [fossil-4.0.9](https://github.com/truecharts/apps/compare/fossil-4.0.8...fossil-4.0.9) (2022-07-09) - -#### Chore - -- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - -### [fossil-4.0.8](https://github.com/truecharts/apps/compare/fossil-4.0.7...fossil-4.0.8) (2022-07-04) - -#### Chore - -- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - -### [fossil-4.0.7](https://github.com/truecharts/apps/compare/fossil-4.0.6...fossil-4.0.7) (2022-06-25) - -#### Chore - -- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977)) - - - -### [fossil-4.0.6](https://github.com/truecharts/apps/compare/fossil-4.0.5...fossil-4.0.6) (2022-06-22) - -#### Chore - -- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948)) - - - -### [fossil-4.0.5](https://github.com/truecharts/apps/compare/fossil-4.0.4...fossil-4.0.5) (2022-06-21) - -#### Chore - -- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943)) - - - -### [fossil-4.0.4](https://github.com/truecharts/apps/compare/fossil-4.0.3...fossil-4.0.4) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886)) - - - -### [fossil-4.0.3](https://github.com/truecharts/apps/compare/fossil-4.0.2...fossil-4.0.3) (2022-06-11) - -#### Chore - -- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854)) - - - -### [fossil-4.0.2](https://github.com/truecharts/apps/compare/fossil-4.0.1...fossil-4.0.2) (2022-06-07) - -#### Fix - -- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format. - - - -### [fossil-4.0.1](https://github.com/truecharts/apps/compare/fossil-3.0.19...fossil-4.0.1) (2022-06-07) - -#### Chore - -- Auto-update chart README [skip ci] - -#### Fix - -- remove malfunctioning SCALE migration script - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [fossil-4.0.0](https://github.com/truecharts/apps/compare/fossil-3.0.19...fossil-4.0.0) (2022-06-07) - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [fossil-3.0.19](https://github.com/truecharts/apps/compare/fossil-3.0.18...fossil-3.0.19) (2022-05-31) - -#### Chore - -- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803)) - - - -### [fossil-3.0.18](https://github.com/truecharts/apps/compare/fossil-3.0.17...fossil-3.0.18) (2022-05-26) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [fossil-3.0.18](https://github.com/truecharts/apps/compare/fossil-3.0.17...fossil-3.0.18) (2022-05-26) - -#### Chore - -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [fossil-3.0.17](https://github.com/truecharts/apps/compare/fossil-3.0.16...fossil-3.0.17) (2022-05-24) - -#### Chore - -- update helm general non-major helm releases - - - -### [fossil-3.0.16](https://github.com/truecharts/apps/compare/fossil-3.0.15...fossil-3.0.16) (2022-05-17) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases - - - -### [fossil-3.0.16](https://github.com/truecharts/apps/compare/fossil-3.0.15...fossil-3.0.16) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [fossil-3.0.15](https://github.com/truecharts/apps/compare/fossil-3.0.14...fossil-3.0.15) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [fossil-3.0.14](https://github.com/truecharts/apps/compare/fossil-3.0.13...fossil-3.0.14) (2022-05-10) - -#### Chore - -- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649)) - - - -### [fossil-3.0.13](https://github.com/truecharts/apps/compare/fossil-3.0.12...fossil-3.0.13) (2022-05-05) - -#### Chore - -- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612)) - - - -### [fossil-3.0.12](https://github.com/truecharts/apps/compare/fossil-3.0.11...fossil-3.0.12) (2022-04-26) - -#### Chore - -- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573)) - - - -### [fossil-3.0.11](https://github.com/truecharts/apps/compare/fossil-3.0.10...fossil-3.0.11) (2022-04-20) - -#### Chore - -- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515)) -- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524)) - - - -### [fossil-3.0.10](https://github.com/truecharts/apps/compare/fossil-3.0.9...fossil-3.0.10) (2022-04-12) - -#### Chore - -- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480)) - - - -### [fossil-3.0.9](https://github.com/truecharts/apps/compare/fossil-3.0.8...fossil-3.0.9) (2022-04-03) - -#### Chore - -- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410)) - - - -### [fossil-3.0.8](https://github.com/truecharts/apps/compare/fossil-3.0.7...fossil-3.0.8) (2022-03-31) - -#### Chore - -- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361)) - - - -### [fossil-3.0.7](https://github.com/truecharts/apps/compare/fossil-3.0.6...fossil-3.0.7) (2022-03-30) - -#### Chore - -- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354)) - - - -### [fossil-3.0.6](https://github.com/truecharts/apps/compare/fossil-3.0.5...fossil-3.0.6) (2022-03-26) - -#### Chore - -- bump all apps to trigger ci - - - -### [fossil-3.0.1](https://github.com/truecharts/apps/compare/fossil-3.0.0...fossil-3.0.1) (2022-03-07) - -#### Chore - -- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111)) -- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040)) - - - -### [fossil-3.0.0](https://github.com/truecharts/apps/compare/fossil-2.0.42...fossil-3.0.0) (2022-03-03) - -#### Chore - -- remove fixed env from questions.yaml -- remove empty env var declaration from questions.yaml -- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021)) - -#### Fix - -- BREAKING CHANGE Move some env-vars outside of env section ([#2010](https://github.com/truecharts/apps/issues/2010)) - - - -### [fossil-2.0.42](https://github.com/truecharts/apps/compare/fossil-2.0.41...fossil-2.0.42) (2022-03-02) - -#### Chore - -- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957)) -- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999)) - - - -### [fossil-2.0.41](https://github.com/truecharts/apps/compare/fossil-2.0.40...fossil-2.0.41) (2022-02-21) - -#### Chore - -- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927)) - - - -### [fossil-2.0.40](https://github.com/truecharts/apps/compare/fossil-2.0.39...fossil-2.0.40) (2022-02-15) - -#### Chore - -- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901)) - - - -### [fossil-2.0.39](https://github.com/truecharts/apps/compare/fossil-2.0.38...fossil-2.0.39) (2022-02-08) - -#### Chore - -- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871)) - - - -### [fossil-2.0.38](https://github.com/truecharts/apps/compare/fossil-2.0.37...fossil-2.0.38) (2022-02-06) - -#### Chore - -- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859)) - - - -### [fossil-2.0.37](https://github.com/truecharts/apps/compare/fossil-2.0.36...fossil-2.0.37) (2022-02-05) - -#### Chore - -- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852)) - - - -### [fossil-2.0.36](https://github.com/truecharts/apps/compare/fossil-2.0.35...fossil-2.0.36) (2022-02-02) - -#### Chore - -- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828)) - - - -### [fossil-2.0.35](https://github.com/truecharts/apps/compare/fossil-2.0.34...fossil-2.0.35) (2022-01-25) - -#### Chore - -- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791)) - - - -### [fossil-2.0.34](https://github.com/truecharts/apps/compare/fossil-2.0.33...fossil-2.0.34) (2022-01-22) - -#### Chore - -- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766)) - - - -### [fossil-2.0.33](https://github.com/truecharts/apps/compare/fossil-2.0.32...fossil-2.0.33) (2022-01-21) - -#### Chore - -- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759)) - -#### Fix - -- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750)) - - - -### [fossil-2.0.32](https://github.com/truecharts/apps/compare/fossil-2.0.31...fossil-2.0.32) (2022-01-18) - -#### Chore - -- update helm general non-major helm releases ([#1732](https://github.com/truecharts/apps/issues/1732)) - - - -### [fossil-2.0.31](https://github.com/truecharts/apps/compare/fossil-2.0.30...fossil-2.0.31) (2022-01-13) - -#### Chore - -- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712)) - -#### Feat - -- expose capabilities in GUI ([#1709](https://github.com/truecharts/apps/issues/1709)) - - - -### [fossil-2.0.30](https://github.com/truecharts/apps/compare/fossil-2.0.29...fossil-2.0.30) (2022-01-12) - -#### Chore - -- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704)) - - - -### [fossil-2.0.29](https://github.com/truecharts/apps/compare/fossil-2.0.28...fossil-2.0.29) (2022-01-11) - -#### Chore - -- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693)) - - - -### [fossil-2.0.28](https://github.com/truecharts/apps/compare/fossil-2.0.27...fossil-2.0.28) (2022-01-04) - -#### Chore - -- update helm general non-major helm releases - - - -### [fossil-2.0.27](https://github.com/truecharts/apps/compare/fossil-2.0.26...fossil-2.0.27) (2021-12-28) - -#### Chore - -- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623)) - - - -### [fossil-2.0.26](https://github.com/truecharts/apps/compare/fossil-2.0.25...fossil-2.0.26) (2021-12-21) - -#### Chore - -- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596)) - - - -### [fossil-2.0.25](https://github.com/truecharts/apps/compare/fossil-2.0.24...fossil-2.0.25) (2021-12-19) - -#### Chore - -- Last patch bump before RC2 branch-off -- remove `editable: true` as this is the default ([#1576](https://github.com/truecharts/apps/issues/1576)) - - - -### [fossil-2.0.24](https://github.com/truecharts/apps/compare/fossil-2.0.23...fossil-2.0.24) (2021-12-19) - -#### Chore - -- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571)) - - - -### [fossil-2.0.23](https://github.com/truecharts/apps/compare/fossil-2.0.22...fossil-2.0.23) (2021-12-18) - -#### Chore - -- cleanup questions by removing hidden dicts ([#1558](https://github.com/truecharts/apps/issues/1558)) -- App-Icon Organization ([#1539](https://github.com/truecharts/apps/issues/1539)) - - - -### [fossil-2.0.22](https://github.com/truecharts/apps/compare/fossil-2.0.21...fossil-2.0.22) (2021-12-14) - -#### Chore - -- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535)) - - - -### [fossil-2.0.21](https://github.com/truecharts/apps/compare/fossil-2.0.20...fossil-2.0.21) (2021-12-13) - -#### Chore - -- move incubator apps to stable and bump everything - - - -### [fossil-2.0.20](https://github.com/truecharts/apps/compare/fossil-2.0.19...fossil-2.0.20) (2021-12-11) - -#### Chore - -- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509)) - - - -### [fossil-2.0.19](https://github.com/truecharts/apps/compare/fossil-2.0.18...fossil-2.0.19) (2021-12-07) - -#### Chore - -- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481)) - - - -### fossil-2.0.18 (2021-12-05) - -#### Chore - -- bump apps to generate security page -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- ensure container references are prefixed with v -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) -- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471)) -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - -#### Fix - -- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428)) - - - -### [fossil-2.0.17](https://github.com/truecharts/apps/compare/fossil-2.0.16...fossil-2.0.17) (2021-12-05) - -#### Chore - -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) - - - -### [fossil-2.0.16](https://github.com/truecharts/apps/compare/fossil-2.0.15...fossil-2.0.16) (2021-12-04) - -#### Chore - -- bump apps to generate security page - - - -### [fossil-2.0.15](https://github.com/truecharts/apps/compare/fossil-2.0.14...fossil-2.0.15) (2021-12-04) - -#### Chore - -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) - - - -### [fossil-2.0.14](https://github.com/truecharts/apps/compare/fossil-2.0.13...fossil-2.0.14) (2021-12-03) - -#### Chore - -- ensure container references are prefixed with v -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) - - - -### [fossil-2.0.13](https://github.com/truecharts/apps/compare/fossil-2.0.12...fossil-2.0.13) (2021-11-30) - -#### Chore - -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - -#### Fix - -- move conflicting ports to 10xxx range ([#1415](https://github.com/truecharts/apps/issues/1415)) - - - -### [fossil-2.0.12](https://github.com/truecharts/apps/compare/fossil-2.0.11...fossil-2.0.12) (2021-11-23) - -#### Chore - -- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386)) - - - -### [fossil-2.0.11](https://github.com/truecharts/apps/compare/fossil-2.0.10...fossil-2.0.11) (2021-11-22) - -#### Chore - -- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383)) - - - -### [fossil-2.0.10](https://github.com/truecharts/apps/compare/fossil-2.0.9...fossil-2.0.10) (2021-11-16) - -#### Chore - -- update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345)) - - - -### [fossil-2.0.9](https://github.com/truecharts/apps/compare/fossil-2.0.8...fossil-2.0.9) (2021-11-15) - -#### Chore - -- persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329)) -- update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338)) - - - -### [fossil-2.0.8](https://github.com/truecharts/apps/compare/fossil-2.0.7...fossil-2.0.8) (2021-11-14) - -#### Chore - -- fixes around the GUI refactor ([#1316](https://github.com/truecharts/apps/issues/1316)) -- move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326)) -- clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322)) -- update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328)) - -#### Fix - -- split udp and tcp ports ([#1321](https://github.com/truecharts/apps/issues/1321)) - - - -### [fossil-2.0.7](https://github.com/truecharts/apps/compare/fossil-2.0.6...fossil-2.0.7) (2021-11-09) - -#### Chore - -- update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297)) - - - -### [fossil-2.0.6](https://github.com/truecharts/apps/compare/fossil-2.0.5...fossil-2.0.6) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295)) - - - -### [fossil-2.0.5](https://github.com/truecharts/apps/compare/fossil-2.0.4...fossil-2.0.5) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291)) - -#### Chore - -- Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289)) - -#### Feat - -- Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290)) - -#### Fix - -- prevent duplicate port use and fix some questions.yaml mistakes - - - -### [fossil-2.0.4](https://github.com/truecharts/apps/compare/fossil-2.0.3...fossil-2.0.4) (2021-11-02) - -#### Chore - -- update non-major deps helm releases ([#1267](https://github.com/truecharts/apps/issues/1267)) - - - -### [fossil-2.0.3](https://github.com/truecharts/apps/compare/fossil-2.0.2...fossil-2.0.3) (2021-11-01) - -#### Chore - -- update non-major deps helm releases ([#1264](https://github.com/truecharts/apps/issues/1264)) - - - -### [fossil-2.0.2](https://github.com/truecharts/apps/compare/fossil-2.0.1...fossil-2.0.2) (2021-10-26) - -#### Chore - -- update non-major deps helm releases ([#1245](https://github.com/truecharts/apps/issues/1245)) - - - -### [fossil-2.0.1](https://github.com/truecharts/apps/compare/fossil-2.0.0...fossil-2.0.1) (2021-10-26) - -#### Chore - -- update helm chart common to v8.3.15 ([#1240](https://github.com/truecharts/apps/issues/1240)) - - - -### [fossil-2.0.0](https://github.com/truecharts/apps/compare/fossil-1.0.1...fossil-2.0.0) (2021-10-25) - -#### Chore - -- Adapt for TrueNAS SCALE RC1 - - - -### [fossil-1.0.1](https://github.com/truecharts/apps/compare/fossil-0.0.11...fossil-1.0.1) (2021-10-20) - -#### Chore - -- bump apps, remove duplicates and move incubator to stable for RC1 - - - -### [fossil-0.0.9](https://github.com/truecharts/apps/compare/fossil-0.0.8...fossil-0.0.9) (2021-10-20) - -#### Chore - -- bump versions to rerelease and fix icons - - - -### [fossil-0.0.8](https://github.com/truecharts/apps/compare/fossil-0.0.7...fossil-0.0.8) (2021-10-19) - -#### Change - -- Project-Eclipse 3, Automatically generate item.yaml ([#1178](https://github.com/truecharts/apps/issues/1178)) - -#### Chore - -- Project-Eclipse 5, move app-readme to automatic generation script ([#1181](https://github.com/truecharts/apps/issues/1181)) -- Project-Eclipse part 2, adapting and cleaning changelog ([#1173](https://github.com/truecharts/apps/issues/1173)) -- update helm chart common to v8.3.13 ([#1184](https://github.com/truecharts/apps/issues/1184)) - -#### Feat - -- Project-Eclipse 4, Add App grading annotations to Chart.yaml ([#1180](https://github.com/truecharts/apps/issues/1180)) - -#### Refactor - -- Project Eclipse Part 6, move questions.yaml to root App folder ([#1182](https://github.com/truecharts/apps/issues/1182)) - - - -### [fossil-0.0.7](https://github.com/truecharts/apps/compare/fossil-0.0.6...fossil-0.0.7) (2021-10-19) - -#### Fix - -- fix previous SCALE bugfix not correctly being applied - - - -### [fossil-0.0.6](https://github.com/truecharts/apps/compare/fossil-0.0.5...fossil-0.0.6) (2021-10-19) - -#### Fix - -- Solve issues regarding ix_values.yaml not containing the image and tag definitions. ([#1176](https://github.com/truecharts/apps/issues/1176)) - - - -### [fossil-0.0.5](https://github.com/truecharts/apps/compare/fossil-0.0.4...fossil-0.0.5) (2021-10-18) - -#### Refactor - -- Project Eclipse - part 1 - remove ix_values.yaml ([#1168](https://github.com/truecharts/apps/issues/1168)) - - - -### [fossil-0.0.4](https://github.com/truecharts/apps/compare/fossil-0.0.3...fossil-0.0.4) (2021-10-17) - -#### Chore - -- update helm chart common to v8.3.10 ([#1160](https://github.com/truecharts/apps/issues/1160)) - - - -### [fossil-0.0.3](https://github.com/truecharts/apps/compare/fossil-0.0.2...fossil-0.0.3) (2021-10-13) - -#### Chore - -- update non-major deps helm releases ([#1133](https://github.com/truecharts/apps/issues/1133)) - - - -### [fossil-0.0.2](https://github.com/truecharts/apps/compare/fossil-0.0.1...fossil-0.0.2) (2021-10-13) - -#### Chore - -- update non-major docker tags ([#1134](https://github.com/truecharts/apps/issues/1134)) - - - -### fossil-0.0.1 (2021-10-04) diff --git a/archive/charts/stable/freeradius/Chart.yaml b/archive/charts/stable/freeradius/Chart.yaml deleted file mode 100644 index d891ce39920..00000000000 --- a/archive/charts/stable/freeradius/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: auth - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 3.2.0 -dependencies: - - name: common - version: 25.1.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: OpenSource Radius implementation -home: https://truecharts.org/charts/stable/freeradius -icon: https://truecharts.org/img/hotlink-ok/chart-icons/freeradius.webp -keywords: - - radius - - auth -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: freeradius -sources: - - https://freeradius.org/ - - https://github.com/truecharts/charts/tree/master/charts/stable/freeradius - - https://github.com/truecharts/containers/tree/master/apps/freeradius -type: application -version: 17.0.0 diff --git a/archive/charts/stable/freeradius/README.md b/archive/charts/stable/freeradius/README.md deleted file mode 100644 index 4bf0fa89556..00000000000 --- a/archive/charts/stable/freeradius/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/freeradius) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/freeradius` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/freeradius - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/freeradius/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/freeradius/icon-small.webp b/archive/charts/stable/freeradius/icon-small.webp deleted file mode 100644 index 4e79f7e9127b92a21d20375d2d4c5bf534dd0d19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776 zcmV+j1NZz=Nk&Eh0{{S5MM6+kP&il$0000G0000V0018V06|PpNLB#=00EE#*|uq0 z``NZ_``fl{+qP}nwr$(C{iA1{@o^NrI3gxM6rnx)tX$F4T|dJ?835@$4fL9d;wYUe zOG^2r^tlLJ>(u%fa9kJP0ytpe*t^*>$amJGHsl8z-G%w-P+pH#@J=KGAI?JqQRdRa z%Gy2~21@Yo8q~Mj0oOJ31Sv(#lQO#I<&12-x@9K&#*Oq>GW34}+;I`!-p3ew4IVci z*(r~lMsk6VbNK(;!Z~lCR~C@*st}kVHv#qc${tJyke-h)lWU=2#-h5e(G{x}^A4Y0 zRnDMJ+Y4%X6p;Dwb9Sz4uH1HKGYTZ+pL&xE{fh(P&goj0RRAS2LPP`Dj)zL00ICsC9nd-l>{g- ztKb2c&HDk^19)rDm!!`80M7}|lAs1(8R5oJ!)>YU46+WC-tf;gMpVE5b-KI&{_hPl zsOsDETC>Uey1lIv>s)O8#%mudW|~{g91_P><$!+g?Dw9_9PfCVDY~91d$&mc#o2`R zLmsM~YVoHwizp8zAcQoh>+dS}=R0~w=xNWT ziDHpw;_;Vr9#8D@qR#cTqx1hi@i5tL*#UHM>0)B&;kw`zZ$C)KuvHMe1wDeWd*q(# zy@pjr1W!5A3xgQv0~VV6&HwZ`TzFl9p!S0<|32Hd3C&{I;Ck&(@Z&4OEk{$=_VXm} z*a8avssry~ZJj_0_|N5T<)}Mje+n;Fx1YvB)c&Y10kBO4)F}#=Yrk+@zLz1IkrLdr GYybc*nT6N@ diff --git a/archive/charts/stable/freeradius/icon.webp b/archive/charts/stable/freeradius/icon.webp deleted file mode 100644 index 647d7803c0941961c4daa1eb6140a9bfcdb0fb4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4534 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.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: libremdb -sources: - - https://github.com/PussTheCat-org/docker-libremdb-quay - - https://github.com/truecharts/charts/tree/master/charts/stable/libremdb - - https://github.com/zyachel/libremdb - - https://quay.io/pussthecatorg/libremdb -type: application -version: 11.0.0 diff --git a/archive/charts/stable/libremdb/README.md b/archive/charts/stable/libremdb/README.md deleted file mode 100644 index ed71ccc1699..00000000000 --- a/archive/charts/stable/libremdb/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/libremdb) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/libremdb` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/libremdb - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/libremdb/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/libremdb/icon-small.webp b/archive/charts/stable/libremdb/icon-small.webp deleted file mode 100644 index 5b69b0449b10594be2f24d53048b65b2dc7f0e64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 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 diff --git a/archive/charts/stable/libremdb/templates/NOTES.txt b/archive/charts/stable/libremdb/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/stable/libremdb/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/stable/libremdb/templates/common.yaml b/archive/charts/stable/libremdb/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/archive/charts/stable/libremdb/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/archive/charts/stable/libremdb/values.yaml b/archive/charts/stable/libremdb/values.yaml deleted file mode 100644 index b0ece010656..00000000000 --- a/archive/charts/stable/libremdb/values.yaml +++ /dev/null @@ -1,38 +0,0 @@ -image: - repository: quay.io/pussthecatorg/libremdb - pullPolicy: IfNotPresent - tag: latest@sha256:91bbc0880ea5e0cdba213435f887a2e731e7bd93e5d4ef66534c308f7ef712c3 -service: - main: - ports: - main: - protocol: http - targetPort: 3000 - port: 10593 -persistence: - config: - enabled: true - mountPath: /opt/app -redis: - enabled: true - redisUsername: default -portal: - open: - enabled: true -workload: - main: - podSpec: - containers: - main: - env: - NEXT_PUBLIC_URL: http://localhost:3000 - NEXT_TELEMETRY_DISABLED: 1 - AXIOS_USERAGENT: "Mozilla/5.0 (X11; Linux x86_64; rv:104.0) Gecko/20100101 Firefox/104.0" - AXIOS_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" - AXIOS_LANGUAGE: "en-US,en;q=0.5" - USE_REDIS: true - REDIS_URL: - secretKeyRef: - expandObjectName: false - name: '{{ printf "%s-%s" .Release.Name "rediscreds" }}' - key: url diff --git a/archive/charts/stable/logitech-media-server/.helmignore b/archive/charts/stable/logitech-media-server/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/stable/logitech-media-server/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/stable/logitech-media-server/CHANGELOG.md b/archive/charts/stable/logitech-media-server/CHANGELOG.md deleted file mode 100644 index 85c018b5871..00000000000 --- a/archive/charts/stable/logitech-media-server/CHANGELOG.md +++ /dev/null @@ -1,1717 +0,0 @@ ---- -title: Changelog -pagefind: false ---- - -## [logitech-media-server-5.0.0](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.56...logitech-media-server-5.0.0) (2022-11-10) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Major Change to GUI -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update docker general non-major ([#4355](https://github.com/truecharts/charts/issues/4355)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [logitech-media-server-4.0.60](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.56...logitech-media-server-4.0.60) (2022-11-09) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4355](https://github.com/truecharts/charts/issues/4355)) -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [logitech-media-server-4.0.59](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.56...logitech-media-server-4.0.59) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [logitech-media-server-4.0.58](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.56...logitech-media-server-4.0.58) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [logitech-media-server-4.0.58](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.56...logitech-media-server-4.0.58) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [logitech-media-server-4.0.57](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.56...logitech-media-server-4.0.57) (2022-11-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [logitech-media-server-4.0.57](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.56...logitech-media-server-4.0.57) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [logitech-media-server-4.0.56](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.54...logitech-media-server-4.0.56) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) - -## [logitech-media-server-4.0.55](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.54...logitech-media-server-4.0.55) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) - -## [logitech-media-server-4.0.54](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.53...logitech-media-server-4.0.54) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308)) - -## [logitech-media-server-4.0.53](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.52...logitech-media-server-4.0.53) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4301](https://github.com/truecharts/charts/issues/4301)) - -## [logitech-media-server-4.0.52](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.51...logitech-media-server-4.0.52) (2022-11-02) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)) - -## [logitech-media-server-4.0.51](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.50...logitech-media-server-4.0.51) (2022-11-01) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4260](https://github.com/truecharts/charts/issues/4260)) - -## [logitech-media-server-4.0.50](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.49...logitech-media-server-4.0.50) (2022-10-27) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4201](https://github.com/truecharts/charts/issues/4201)) - -## [logitech-media-server-4.0.50](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.49...logitech-media-server-4.0.50) (2022-10-27) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4201](https://github.com/truecharts/charts/issues/4201)) - -## [logitech-media-server-4.0.49](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.48...logitech-media-server-4.0.49) (2022-10-26) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4189](https://github.com/truecharts/charts/issues/4189)) - -## [logitech-media-server-4.0.48](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.47...logitech-media-server-4.0.48) (2022-10-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) - -## [logitech-media-server-4.0.47](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.46...logitech-media-server-4.0.47) (2022-10-19) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) - -## [logitech-media-server-4.0.46](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.45...logitech-media-server-4.0.46) (2022-10-12) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) - -## [logitech-media-server-4.0.45](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.44...logitech-media-server-4.0.45) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major - -## [logitech-media-server-4.0.45](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.44...logitech-media-server-4.0.45) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [logitech-media-server-4.0.44](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.43...logitech-media-server-4.0.44) (2022-10-05) - -### Chore - -- Auto-update chart README [skip ci] -- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) -- update helm general non-major - -## [logitech-media-server-4.0.43](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.42...logitech-media-server-4.0.43) (2022-09-28) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3938](https://github.com/truecharts/charts/issues/3938)) - -## [logitech-media-server-4.0.42](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.41...logitech-media-server-4.0.42) (2022-09-27) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)) - -## [logitech-media-server-4.0.41](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.40...logitech-media-server-4.0.41) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) - -## [logitech-media-server-4.0.40](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.39...logitech-media-server-4.0.40) (2022-09-24) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3860](https://github.com/truecharts/charts/issues/3860)) - -## [logitech-media-server-4.0.39](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.39) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.39](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.39) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-17) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-18) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-15) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.38](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.37...logitech-media-server-4.0.38) (2022-09-15) - -### Chore - -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [logitech-media-server-4.0.37](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.36...logitech-media-server-4.0.37) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [logitech-media-server-4.0.37](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.36...logitech-media-server-4.0.37) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [logitech-media-server-4.0.37](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.36...logitech-media-server-4.0.37) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [logitech-media-server-4.0.37](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.36...logitech-media-server-4.0.37) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [logitech-media-server-4.0.37](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.36...logitech-media-server-4.0.37) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [logitech-media-server-4.0.37](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.36...logitech-media-server-4.0.37) (2022-09-11) - -### Chore - -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [logitech-media-server-4.0.36](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.35...logitech-media-server-4.0.36) (2022-09-05) - -### Chore - -- update docker general non-major ([#3700](https://github.com/truecharts/charts/issues/3700)) - -## [logitech-media-server-4.0.35](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.33...logitech-media-server-4.0.35) (2022-08-30) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [logitech-media-server-4.0.34](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.33...logitech-media-server-4.0.34) (2022-08-30) - -### Chore - -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [logitech-media-server-4.0.33](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.32...logitech-media-server-4.0.33) (2022-08-29) - -### Chore - -- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) - -## [logitech-media-server-4.0.32](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.31...logitech-media-server-4.0.32) (2022-08-23) - -### Chore - -- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) - -## [logitech-media-server-4.0.31](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.30...logitech-media-server-4.0.31) (2022-08-23) - -### Chore - -- update docker general non-major docker tags ([#3544](https://github.com/truecharts/charts/issues/3544)) - -## [logitech-media-server-4.0.30](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.29...logitech-media-server-4.0.30) (2022-08-20) - -### Chore - -- update docker general non-major docker tags ([#3518](https://github.com/truecharts/charts/issues/3518)) - -## [logitech-media-server-4.0.29](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.28...logitech-media-server-4.0.29) (2022-08-12) - -### Chore - -- add documentation checkbox/section to all SCALE Apps -- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456)) - -### Fix - -- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447)) - -## [logitech-media-server-4.0.28](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.27...logitech-media-server-4.0.28) (2022-08-09) - -### Chore - -- update docker general non-major ([#3377](https://github.com/truecharts/charts/issues/3377)) - -## [logitech-media-server-4.0.27](https://github.com/truecharts/charts/compare/logitech-media-server-4.0.26...logitech-media-server-4.0.27) (2022-08-08) - -### Chore - -- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376)) -- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402)) - -## [logitech-media-server-4.0.26](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.25...logitech-media-server-4.0.26) (2022-07-27) - -### Chore - -- update docker general non-major ([#3313](https://github.com/truecharts/apps/issues/3313)) - -## [logitech-media-server-4.0.25](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.24...logitech-media-server-4.0.25) (2022-07-26) - -### Chore - -- update home links ([#3291](https://github.com/truecharts/apps/issues/3291)) -- update docker general non-major ([#3301](https://github.com/truecharts/apps/issues/3301)) -- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302)) - -## [logitech-media-server-4.0.24](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.23...logitech-media-server-4.0.24) (2022-07-25) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [logitech-media-server-4.0.24](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.23...logitech-media-server-4.0.24) (2022-07-25) - -### Chore - -- update docker general non-major ([#3295](https://github.com/truecharts/apps/issues/3295)) - -## [logitech-media-server-4.0.23](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.22...logitech-media-server-4.0.23) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [logitech-media-server-4.0.23](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.22...logitech-media-server-4.0.23) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [logitech-media-server-4.0.23](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.22...logitech-media-server-4.0.23) (2022-07-23) - -### Chore - -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [logitech-media-server-4.0.22](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.20...logitech-media-server-4.0.22) (2022-07-22) - -### Chore - -- Bump all charts to generate config and container references due to huge increase of repository -- update helm general non-major helm releases ([#3268](https://github.com/truecharts/apps/issues/3268)) - -## [logitech-media-server-4.0.20](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.19...logitech-media-server-4.0.20) (2022-07-19) - -### Chore - -- Update Readme and Description on SCALE - -## [logitech-media-server-4.0.19](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.18...logitech-media-server-4.0.19) (2022-07-14) - -### Fix - -- regenerate catalog and update template - -## [logitech-media-server-4.0.18](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.16...logitech-media-server-4.0.18) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - -## [logitech-media-server-4.0.16](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.14...logitech-media-server-4.0.16) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - -## [logitech-media-server-4.0.14](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.13...logitech-media-server-4.0.14) (2022-07-12) - -### Chore - -- bump to regenerate documentation - - - -### [logitech-media-server-4.0.13](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.12...logitech-media-server-4.0.13) (2022-07-12) - -#### Chore - -- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) - - - -### [logitech-media-server-4.0.12](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.11...logitech-media-server-4.0.12) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [logitech-media-server-4.0.11](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.10...logitech-media-server-4.0.11) (2022-07-10) - -#### Fix - -- revert combine ports ([#3119](https://github.com/truecharts/apps/issues/3119)) - - - -### [logitech-media-server-4.0.10](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.9...logitech-media-server-4.0.10) (2022-07-09) - -#### Chore - -- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - -### [logitech-media-server-4.0.9](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.8...logitech-media-server-4.0.9) (2022-07-09) - -#### Chore - -- combine some ports ([#3096](https://github.com/truecharts/apps/issues/3096)) - - - -### [logitech-media-server-4.0.8](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.7...logitech-media-server-4.0.8) (2022-07-04) - -#### Chore - -- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - -### [logitech-media-server-4.0.7](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.6...logitech-media-server-4.0.7) (2022-06-25) - -#### Chore - -- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977)) - - - -### [logitech-media-server-4.0.6](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.5...logitech-media-server-4.0.6) (2022-06-22) - -#### Chore - -- update docker general non-major ([#2954](https://github.com/truecharts/apps/issues/2954)) -- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948)) - - - -### [logitech-media-server-4.0.5](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.4...logitech-media-server-4.0.5) (2022-06-21) - -#### Chore - -- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943)) - - - -### [logitech-media-server-4.0.4](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.3...logitech-media-server-4.0.4) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886)) - - - -### [logitech-media-server-4.0.3](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.2...logitech-media-server-4.0.3) (2022-06-11) - -#### Chore - -- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854)) - - - -### [logitech-media-server-4.0.2](https://github.com/truecharts/apps/compare/logitech-media-server-4.0.1...logitech-media-server-4.0.2) (2022-06-07) - -#### Fix - -- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format. - - - -### [logitech-media-server-4.0.1](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.34...logitech-media-server-4.0.1) (2022-06-07) - -#### Chore - -- Auto-update chart README [skip ci] -- sync all apps persistence configuration and always default to PVC -- update docker general non-major ([#2831](https://github.com/truecharts/apps/issues/2831)) - -#### Fix - -- remove malfunctioning SCALE migration script - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [logitech-media-server-4.0.0](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.34...logitech-media-server-4.0.0) (2022-06-07) - -#### Chore - -- sync all apps persistence configuration and always default to PVC - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [logitech-media-server-3.0.34](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.33...logitech-media-server-3.0.34) (2022-05-31) - -#### Chore - -- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803)) - - - -### [logitech-media-server-3.0.33](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.32...logitech-media-server-3.0.33) (2022-05-26) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [logitech-media-server-3.0.33](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.32...logitech-media-server-3.0.33) (2022-05-26) - -#### Chore - -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [logitech-media-server-3.0.32](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.31...logitech-media-server-3.0.32) (2022-05-25) - -#### Chore - -- update docker general non-major ([#2745](https://github.com/truecharts/apps/issues/2745)) - - - -### [logitech-media-server-3.0.31](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.30...logitech-media-server-3.0.31) (2022-05-24) - -#### Chore - -- update helm general non-major helm releases - - - -### [logitech-media-server-3.0.30](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.29...logitech-media-server-3.0.30) (2022-05-20) - -#### Chore - -- update docker general non-major ([#2720](https://github.com/truecharts/apps/issues/2720)) - - - -### [logitech-media-server-3.0.29](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.27...logitech-media-server-3.0.29) (2022-05-18) - -#### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#2706](https://github.com/truecharts/apps/issues/2706)) -- update helm general non-major helm releases - - - -### [logitech-media-server-3.0.28](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.27...logitech-media-server-3.0.28) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [logitech-media-server-3.0.27](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.26...logitech-media-server-3.0.27) (2022-05-17) - -#### Chore - -- update docker general non-major ([#2695](https://github.com/truecharts/apps/issues/2695)) -- update helm general non-major helm releases - - - -### [logitech-media-server-3.0.26](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.25...logitech-media-server-3.0.26) (2022-05-13) - -#### Chore - -- update docker general non-major ([#2658](https://github.com/truecharts/apps/issues/2658)) - - - -### [logitech-media-server-3.0.25](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.24...logitech-media-server-3.0.25) (2022-05-10) - -#### Chore - -- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649)) - - - -### [logitech-media-server-3.0.24](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.23...logitech-media-server-3.0.24) (2022-05-09) - -#### Chore - -- update docker general non-major ([#2641](https://github.com/truecharts/apps/issues/2641)) - - - -### [logitech-media-server-3.0.23](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.22...logitech-media-server-3.0.23) (2022-05-05) - -#### Chore - -- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612)) - - - -### [logitech-media-server-3.0.22](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.21...logitech-media-server-3.0.22) (2022-05-04) - -#### Chore - -- update docker general non-major ([#2606](https://github.com/truecharts/apps/issues/2606)) - - - -### [logitech-media-server-3.0.21](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.20...logitech-media-server-3.0.21) (2022-04-28) - -#### Chore - -- update docker general non-major ([#2577](https://github.com/truecharts/apps/issues/2577)) - - - -### [logitech-media-server-3.0.20](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.19...logitech-media-server-3.0.20) (2022-04-26) - -#### Chore - -- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573)) - - - -### [logitech-media-server-3.0.19](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.18...logitech-media-server-3.0.19) (2022-04-20) - -#### Chore - -- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515)) -- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524)) - - - -### [logitech-media-server-3.0.18](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.17...logitech-media-server-3.0.18) (2022-04-12) - -#### Chore - -- update docker general non-major - - - -### [logitech-media-server-3.0.17](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.16...logitech-media-server-3.0.17) (2022-04-12) - -#### Chore - -- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480)) - - - -### [logitech-media-server-3.0.16](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.15...logitech-media-server-3.0.16) (2022-04-09) - -#### Chore - -- update docker general non-major ([#2460](https://github.com/truecharts/apps/issues/2460)) - - - -### [logitech-media-server-3.0.15](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.14...logitech-media-server-3.0.15) (2022-04-03) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410)) - - - -### [logitech-media-server-3.0.13](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.12...logitech-media-server-3.0.13) (2022-04-01) - -#### Chore - -- update docker general non-major - - - -### [logitech-media-server-3.0.12](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.11...logitech-media-server-3.0.12) (2022-03-31) - -#### Chore - -- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361)) - - - -### [logitech-media-server-3.0.11](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.10...logitech-media-server-3.0.11) (2022-03-30) - -#### Chore - -- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354)) - - - -### [logitech-media-server-3.0.10](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.9...logitech-media-server-3.0.10) (2022-03-28) - -#### Chore - -- update docker general non-major - - - -### [logitech-media-server-3.0.9](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.8...logitech-media-server-3.0.9) (2022-03-26) - -#### Chore - -- bump all apps to trigger ci - - - -### [logitech-media-server-3.0.6](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.5...logitech-media-server-3.0.6) (2022-03-20) - -#### Chore - -- update docker general non-major -- update docker general non-major - - - -### [logitech-media-server-3.0.3](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.2...logitech-media-server-3.0.3) (2022-03-15) - -#### Chore - -- update docker general non-major ([#2178](https://github.com/truecharts/apps/issues/2178)) -- make some fields required ([#2155](https://github.com/truecharts/apps/issues/2155)) - - - -### [logitech-media-server-3.0.2](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.1...logitech-media-server-3.0.2) (2022-03-07) - -#### Chore - -- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111)) - - - -### [logitech-media-server-3.0.1](https://github.com/truecharts/apps/compare/logitech-media-server-3.0.0...logitech-media-server-3.0.1) (2022-03-07) - -#### Chore - -- update docker general non-major ([#2046](https://github.com/truecharts/apps/issues/2046)) -- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040)) - - - -### [logitech-media-server-3.0.0](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.67...logitech-media-server-3.0.0) (2022-03-03) - -#### Chore - -- remove fixed env from questions.yaml -- remove PUID from per-app env-vars if set to 568 -- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021)) - -#### Fix - -- BREAKING CHANGE Move some env-vars outside of env section ([#2010](https://github.com/truecharts/apps/issues/2010)) - - - -### [logitech-media-server-2.0.67](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.66...logitech-media-server-2.0.67) (2022-03-02) - -#### Chore - -- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999)) - - - -### [logitech-media-server-2.0.66](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.65...logitech-media-server-2.0.66) (2022-02-28) - -#### Chore - -- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957)) -- update docker general non-major ([#1980](https://github.com/truecharts/apps/issues/1980)) - - - -### [logitech-media-server-2.0.65](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.64...logitech-media-server-2.0.65) (2022-02-21) - -#### Chore - -- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927)) - - - -### [logitech-media-server-2.0.64](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.63...logitech-media-server-2.0.64) (2022-02-21) - -#### Chore - -- update docker general non-major ([#1924](https://github.com/truecharts/apps/issues/1924)) - - - -### [logitech-media-server-2.0.63](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.62...logitech-media-server-2.0.63) (2022-02-15) - -#### Chore - -- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901)) - - - -### [logitech-media-server-2.0.62](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.61...logitech-media-server-2.0.62) (2022-02-10) - -#### Chore - -- update docker general non-major ([#1876](https://github.com/truecharts/apps/issues/1876)) - - - -### [logitech-media-server-2.0.61](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.60...logitech-media-server-2.0.61) (2022-02-08) - -#### Chore - -- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871)) - - - -### [logitech-media-server-2.0.60](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.59...logitech-media-server-2.0.60) (2022-02-08) - -#### Chore - -- update docker general non-major ([#1869](https://github.com/truecharts/apps/issues/1869)) - - - -### [logitech-media-server-2.0.59](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.58...logitech-media-server-2.0.59) (2022-02-06) - -#### Chore - -- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859)) -- update docker general non-major ([#1855](https://github.com/truecharts/apps/issues/1855)) - - - -### [logitech-media-server-2.0.58](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.57...logitech-media-server-2.0.58) (2022-02-05) - -#### Chore - -- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852)) - - - -### [logitech-media-server-2.0.57](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.56...logitech-media-server-2.0.57) (2022-02-03) - -#### Chore - -- update docker general non-major ([#1836](https://github.com/truecharts/apps/issues/1836)) - - - -### [logitech-media-server-2.0.56](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.55...logitech-media-server-2.0.56) (2022-02-02) - -#### Chore - -- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828)) - - - -### [logitech-media-server-2.0.55](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.54...logitech-media-server-2.0.55) (2022-01-31) - -#### Chore - -- update docker general non-major docker tags ([#1823](https://github.com/truecharts/apps/issues/1823)) - - - -### [logitech-media-server-2.0.54](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.53...logitech-media-server-2.0.54) (2022-01-25) - -#### Chore - -- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791)) - - - -### [logitech-media-server-2.0.53](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.52...logitech-media-server-2.0.53) (2022-01-24) - -#### Fix - -- fix include ([#1773](https://github.com/truecharts/apps/issues/1773)) - - - -### [logitech-media-server-2.0.52](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.51...logitech-media-server-2.0.52) (2022-01-22) - -#### Chore - -- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766)) - - - -### [logitech-media-server-2.0.51](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.50...logitech-media-server-2.0.51) (2022-01-22) - -#### Chore - -- update docker general non-major ([#1764](https://github.com/truecharts/apps/issues/1764)) - - - -### [logitech-media-server-2.0.50](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.49...logitech-media-server-2.0.50) (2022-01-21) - -#### Chore - -- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759)) - - - -### [logitech-media-server-2.0.49](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.48...logitech-media-server-2.0.49) (2022-01-21) - -#### Chore - -- update docker general non-major ([#1751](https://github.com/truecharts/apps/issues/1751)) - -#### Fix - -- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750)) - - - -### [logitech-media-server-2.0.48](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.47...logitech-media-server-2.0.48) (2022-01-18) - -#### Chore - -- update helm general non-major helm releases ([#1732](https://github.com/truecharts/apps/issues/1732)) - - - -### [logitech-media-server-2.0.47](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.46...logitech-media-server-2.0.47) (2022-01-17) - -#### Chore - -- update docker general non-major ([#1728](https://github.com/truecharts/apps/issues/1728)) - - - -### [logitech-media-server-2.0.46](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.45...logitech-media-server-2.0.46) (2022-01-13) - -#### Chore - -- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712)) - -#### Feat - -- expose capabilities in GUI ([#1709](https://github.com/truecharts/apps/issues/1709)) - - - -### [logitech-media-server-2.0.45](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.44...logitech-media-server-2.0.45) (2022-01-12) - -#### Chore - -- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704)) - - - -### [logitech-media-server-2.0.44](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.43...logitech-media-server-2.0.44) (2022-01-11) - -#### Chore - -- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693)) - - - -### [logitech-media-server-2.0.43](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.42...logitech-media-server-2.0.43) (2022-01-10) - -#### Chore - -- update docker general non-major docker tags ([#1687](https://github.com/truecharts/apps/issues/1687)) - - - -### [logitech-media-server-2.0.42](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.41...logitech-media-server-2.0.42) (2022-01-10) - -#### Chore - -- update docker general non-major ([#1677](https://github.com/truecharts/apps/issues/1677)) - - - -### [logitech-media-server-2.0.41](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.40...logitech-media-server-2.0.41) (2022-01-04) - -#### Chore - -- update helm general non-major helm releases - - - -### [logitech-media-server-2.0.40](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.39...logitech-media-server-2.0.40) (2022-01-03) - -#### Chore - -- update docker general non-major ([#1646](https://github.com/truecharts/apps/issues/1646)) - - - -### [logitech-media-server-2.0.39](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.38...logitech-media-server-2.0.39) (2021-12-28) - -#### Chore - -- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623)) - - - -### [logitech-media-server-2.0.38](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.37...logitech-media-server-2.0.38) (2021-12-24) - -#### Chore - -- update docker general non-major ([#1607](https://github.com/truecharts/apps/issues/1607)) - - - -### [logitech-media-server-2.0.37](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.36...logitech-media-server-2.0.37) (2021-12-21) - -#### Chore - -- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596)) - - - -### [logitech-media-server-2.0.36](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.35...logitech-media-server-2.0.36) (2021-12-19) - -#### Chore - -- Last patch bump before RC2 branch-off -- move `envTpl` to `env` ([#1578](https://github.com/truecharts/apps/issues/1578)) -- remove `editable: true` as this is the default ([#1576](https://github.com/truecharts/apps/issues/1576)) -- remove `Enable the port` button from `questions.yaml` as it was already hidden and defined in `values.yaml` ([#1575](https://github.com/truecharts/apps/issues/1575)) - - - -### [logitech-media-server-2.0.35](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.34...logitech-media-server-2.0.35) (2021-12-19) - -#### Chore - -- completely remove mountPath reference from GUI ([#1572](https://github.com/truecharts/apps/issues/1572)) -- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571)) - - - -### [logitech-media-server-2.0.34](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.33...logitech-media-server-2.0.34) (2021-12-19) - -#### Chore - -- update docker general non-major ([#1567](https://github.com/truecharts/apps/issues/1567)) - - - -### [logitech-media-server-2.0.33](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.32...logitech-media-server-2.0.33) (2021-12-18) - -#### Chore - -- cleanup questions by removing hidden dicts ([#1558](https://github.com/truecharts/apps/issues/1558)) -- App-Icon Organization ([#1539](https://github.com/truecharts/apps/issues/1539)) -- update docker general non-major - - - -### [logitech-media-server-2.0.32](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.31...logitech-media-server-2.0.32) (2021-12-14) - -#### Chore - -- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535)) - - - -### [logitech-media-server-2.0.31](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.30...logitech-media-server-2.0.31) (2021-12-13) - -#### Chore - -- move incubator apps to stable and bump everything - - - -### [logitech-media-server-2.0.30](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.29...logitech-media-server-2.0.30) (2021-12-11) - -#### Chore - -- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509)) - - - -### [logitech-media-server-2.0.29](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.28...logitech-media-server-2.0.29) (2021-12-11) - -#### Chore - -- update non-major docker ([#1507](https://github.com/truecharts/apps/issues/1507)) - - - -### [logitech-media-server-2.0.28](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.27...logitech-media-server-2.0.28) (2021-12-07) - -#### Chore - -- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481)) - - - -### logitech-media-server-2.0.27 (2021-12-05) - -#### Chore - -- bump apps to generate security page -- ensure container references are prefixed with v -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major ([#1466](https://github.com/truecharts/apps/issues/1466)) -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) -- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471)) -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - -#### Fix - -- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428)) - - - -### [logitech-media-server-2.0.26](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.25...logitech-media-server-2.0.26) (2021-12-05) - -#### Chore - -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) - - - -### [logitech-media-server-2.0.25](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.24...logitech-media-server-2.0.25) (2021-12-05) - -#### Chore - -- update non-major ([#1466](https://github.com/truecharts/apps/issues/1466)) - - - -### [logitech-media-server-2.0.24](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.23...logitech-media-server-2.0.24) (2021-12-04) - -#### Chore - -- bump apps to generate security page - - - -### [logitech-media-server-2.0.23](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.22...logitech-media-server-2.0.23) (2021-12-04) - -#### Chore - -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) - - - -### [logitech-media-server-2.0.22](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.21...logitech-media-server-2.0.22) (2021-12-03) - -#### Chore - -- ensure container references are prefixed with v -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) - - - -### [logitech-media-server-2.0.21](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.20...logitech-media-server-2.0.21) (2021-11-30) - -#### Chore - -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - - - -### [logitech-media-server-2.0.20](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.19...logitech-media-server-2.0.20) (2021-11-30) - -#### Chore - -- update non-major deps helm releases - - - -### [logitech-media-server-2.0.18](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.17...logitech-media-server-2.0.18) (2021-11-23) - -#### Chore - -- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386)) - - - -### [logitech-media-server-2.0.17](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.16...logitech-media-server-2.0.17) (2021-11-23) - -#### Chore - -- update non-major ([#1384](https://github.com/truecharts/apps/issues/1384)) - - - -### [logitech-media-server-2.0.16](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.15...logitech-media-server-2.0.16) (2021-11-22) - -#### Chore - -- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383)) - - - -### [logitech-media-server-2.0.15](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.14...logitech-media-server-2.0.15) (2021-11-22) - -#### Chore - -- update non-major ([#1380](https://github.com/truecharts/apps/issues/1380)) - -#### Fix - -- Default enable all services ([#1361](https://github.com/truecharts/apps/issues/1361)) - - - -### [logitech-media-server-2.0.14](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.13...logitech-media-server-2.0.14) (2021-11-16) - -#### Chore - -- update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345)) - - - -### [logitech-media-server-2.0.13](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.12...logitech-media-server-2.0.13) (2021-11-15) - -#### Chore - -- persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329)) -- update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338)) - - - -### [logitech-media-server-2.0.12](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.11...logitech-media-server-2.0.12) (2021-11-14) - -#### Chore - -- move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326)) -- clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322)) -- update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328)) - - - -### [logitech-media-server-2.0.11](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.10...logitech-media-server-2.0.11) (2021-11-14) - -#### Chore - -- move to LMS to stable - - - -### [logitech-media-server-2.0.10](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.9...logitech-media-server-2.0.10) (2021-11-09) - -#### Chore - -- update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297)) - - - -### [logitech-media-server-2.0.9](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.8...logitech-media-server-2.0.9) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295)) - - - -### [logitech-media-server-2.0.8](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.7...logitech-media-server-2.0.8) (2021-11-07) - -#### Chore - -- update non-major ([#1270](https://github.com/truecharts/apps/issues/1270)) - - - -### [logitech-media-server-2.0.7](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.6...logitech-media-server-2.0.7) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291)) - -#### Chore - -- Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289)) - -#### Feat - -- Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290)) - - - -### [logitech-media-server-2.0.6](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.5...logitech-media-server-2.0.6) (2021-11-02) - -#### Chore - -- update non-major deps helm releases ([#1267](https://github.com/truecharts/apps/issues/1267)) - - - -### [logitech-media-server-2.0.5](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.4...logitech-media-server-2.0.5) (2021-11-02) - -#### Chore - -- update lmscommunity/logitechmediaserver:8.3.0 docker digest to 201247c ([#1268](https://github.com/truecharts/apps/issues/1268)) - - - -### [logitech-media-server-2.0.4](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.3...logitech-media-server-2.0.4) (2021-11-01) - -#### Chore - -- update non-major deps helm releases ([#1264](https://github.com/truecharts/apps/issues/1264)) - - - -### [logitech-media-server-2.0.3](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.2...logitech-media-server-2.0.3) (2021-11-01) - -#### Chore - -- update non-major ([#1263](https://github.com/truecharts/apps/issues/1263)) - - - -### [logitech-media-server-2.0.2](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.1...logitech-media-server-2.0.2) (2021-10-26) - -#### Chore - -- update non-major deps helm releases ([#1245](https://github.com/truecharts/apps/issues/1245)) - - - -### [logitech-media-server-2.0.1](https://github.com/truecharts/apps/compare/logitech-media-server-2.0.0...logitech-media-server-2.0.1) (2021-10-26) - -#### Chore - -- update helm chart common to v8.3.15 ([#1240](https://github.com/truecharts/apps/issues/1240)) -- update non-major docker tags ([#1241](https://github.com/truecharts/apps/issues/1241)) -- update non-major ([#1232](https://github.com/truecharts/apps/issues/1232)) - - - -### [logitech-media-server-2.0.0](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.12...logitech-media-server-2.0.0) (2021-10-25) - -#### Chore - -- Adapt for TrueNAS SCALE RC1 - - - -### [logitech-media-server-1.0.12](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.9...logitech-media-server-1.0.12) (2021-10-20) - -#### Chore - -- bump apps, remove duplicates and move incubator to stable for RC1 -- update non-major deps helm releases ([#1213](https://github.com/truecharts/apps/issues/1213)) - -#### Fix - -- reenable postgresql migration scripting and bump all to force update -- use correct PVC storageClass when using postgresql as a dependency on SCALE ([#1212](https://github.com/truecharts/apps/issues/1212)) - - - -### [logitech-media-server-1.0.9](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.8...logitech-media-server-1.0.9) (2021-10-20) - -#### Chore - -- bump versions to rerelease and fix icons - - - -### [logitech-media-server-1.0.8](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.7...logitech-media-server-1.0.8) (2021-10-19) - -#### Change - -- Project-Eclipse 3, Automatically generate item.yaml ([#1178](https://github.com/truecharts/apps/issues/1178)) - -#### Chore - -- Project-Eclipse 5, move app-readme to automatic generation script ([#1181](https://github.com/truecharts/apps/issues/1181)) -- Project-Eclipse part 2, adapting and cleaning changelog ([#1173](https://github.com/truecharts/apps/issues/1173)) -- update helm chart common to v8.3.13 ([#1184](https://github.com/truecharts/apps/issues/1184)) -- update non-major ([#1174](https://github.com/truecharts/apps/issues/1174)) - -#### Feat - -- Project-Eclipse 4, Add App grading annotations to Chart.yaml ([#1180](https://github.com/truecharts/apps/issues/1180)) - -#### Fix - -- correct indent error in chart.yaml - -#### Refactor - -- Project Eclipse Part 6, move questions.yaml to root App folder ([#1182](https://github.com/truecharts/apps/issues/1182)) - - - -### [logitech-media-server-1.0.7](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.6...logitech-media-server-1.0.7) (2021-10-19) - -#### Fix - -- fix previous SCALE bugfix not correctly being applied - - - -### [logitech-media-server-1.0.6](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.5...logitech-media-server-1.0.6) (2021-10-19) - -#### Fix - -- Solve issues regarding ix_values.yaml not containing the image and tag definitions. ([#1176](https://github.com/truecharts/apps/issues/1176)) - - - -### [logitech-media-server-1.0.5](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.4...logitech-media-server-1.0.5) (2021-10-18) - -#### Refactor - -- Project Eclipse - part 1 - remove ix_values.yaml ([#1168](https://github.com/truecharts/apps/issues/1168)) - - - -### [logitech-media-server-1.0.4](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.3...logitech-media-server-1.0.4) (2021-10-17) - -#### Chore - -- update helm chart common to v8.3.10 ([#1160](https://github.com/truecharts/apps/issues/1160)) - -#### Fix - -- force users using correct / prefix for mounPath ([#1156](https://github.com/truecharts/apps/issues/1156)) - - - -### [logitech-media-server-1.0.3](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.2...logitech-media-server-1.0.3) (2021-10-15) - -#### Fix - -- Duplicate port name ([#1148](https://github.com/truecharts/apps/issues/1148)) - - - -### [logitech-media-server-1.0.2](https://github.com/truecharts/apps/compare/logitech-media-server-1.0.0...logitech-media-server-1.0.2) (2021-10-14) - -#### Fix - -- Bump some apps to trigger rereleases -- Fix service name casing in questions.yaml ([#1145](https://github.com/truecharts/apps/issues/1145)) - - - -### logitech-media-server-1.0.0 (2021-10-14) diff --git a/archive/charts/stable/logitech-media-server/Chart.yaml b/archive/charts/stable/logitech-media-server/Chart.yaml deleted file mode 100644 index a92b6929460..00000000000 --- a/archive/charts/stable/logitech-media-server/Chart.yaml +++ /dev/null @@ -1,41 +0,0 @@ -annotations: - artifacthub.io/links: |- - - name: support - url: https://discord.com/invite/tVsPTHWTtr - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: media - truecharts.org/max_helm_version: "3.17" - truecharts.org/min_helm_version: "3.14" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 9.0.0 -dependencies: - - name: common - version: 28.12.4 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: Logitech Media Server is a platform for home/office audio streaming. -home: https://truecharts.org/charts/stable/logitech-media-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/logitech-media-server.webp -keywords: - - logitech-media-server - - squeezebox - - audio - - streaming -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: logitech-media-server -sources: - - https://github.com/Logitech/slimserver - - https://github.com/truecharts/charts/tree/master/charts/stable/logitech-media-server - - https://hub.docker.com/r/lmscommunity/logitechmediaserver -type: application -version: 14.0.4 diff --git a/archive/charts/stable/logitech-media-server/README.md b/archive/charts/stable/logitech-media-server/README.md deleted file mode 100644 index 7047964c85a..00000000000 --- a/archive/charts/stable/logitech-media-server/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/logitech-media-server) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/logitech-media-server` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/logitech-media-server - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/logitech-media-server/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/logitech-media-server/icon-small.webp b/archive/charts/stable/logitech-media-server/icon-small.webp deleted file mode 100644 index be3c7168d63c9fbd27066311c4c5e5d9ac723678..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmV-E0>S-KNk&FC0ssJ4MM6+kP&il$0000G0000V0018V06|PpNO}MO00D4QYunR2 z^r`?42m=jBXet;%LXCo;f+>uQ>E#`>MTF9}4VZ)$jw5)}i@)gcQ6p{E?efKKZBpYs zUme$reHZes^j(U( zF1=5`aQ^)lVH`UVt4e zRnK_0092<2cYJVqQBGspXj!^U#r`L zulgw}I9v2OL}X9vB`p$V2+Ql@T#fQ(SR4L{NB_TebIp^yUZm+Rto^2?{bWCOZnybE zjE8k^;Bdx0%UVOc(^`zG=t!K##~V%4b6)bgJT~&9c)`Y+3tC-$X7Mck2K)HIT1XU_ zd5WVqxH-jFjv-~}s;XjONak^c-ZvJ9Lza^FlNjCX#}strzQ!lnxVEU5Xv-d2zSLMJ z&Mg4Mmh-y#q!1p{x>wsO^5_%K<%rD0-knQ+_frxIYZ82#1RgFKv^hV*U|@>EgoX*q zxG7s~d?H-YgGBUFG@vNCJY;RvV5-8Ss1qBbmc)yI5}Td$9NM(uVYF;wxtmv1OjzM2yj7zdmfl;r4>AKdgY71*ukVB8I#+szkY_qs}M Mr1$%JRCE9U0LR`DX8-^I diff --git a/archive/charts/stable/logitech-media-server/icon.webp b/archive/charts/stable/logitech-media-server/icon.webp deleted file mode 100644 index 6564d39f2601de676784417d8c7aa9158a829542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2260 zcmV;_2rKteNk&G@2mkN=tqGtfVB^WQ`_Y(zZQCf@jQpD6|F*j$!hzdJij*8PV^=+Z`=uvu=a-OH zT4?}F(-Qpbcq1U#duPwzdGgfdyU*TzXwlsd@1EVgeCp)R`Pts~f}VGcQ(VRBYu%%h zA{k0?aWVlgUMF1Yw_h72!#a9xd%cSuhj7U|)M_C^YiT`{=ge!2W7_WaDKflM z?Yq+)HGOWyuY4&I6N)ca#tWKZU2uM!m~s4kfwfl8uBN9VF{Jpk$wd=9mUj|kb}skO z;55Q_^%HaU?+R0U5`65*abnQ%6S2HHJok#kq|v z!TM1G;1LCDm0bwvs+7fiU)?WBn~OCUTG zA^jmUuO9_{dA#IX?<@-nEHiDSaM(gH-0UEQ^C27@a+Z9XJB@==l5cjN4{-3nQ;NVA z9JB;Tk`P-CiBvX#rs3t=3P0xBhz`=b_R8!fg zCfHF;`=d%mph}T|O5C7ICxJ?Gp-R1>N(h2VQ=&?qqDtw4N;E@Ce?Lt{m6Qk7DuAki z0aRNBsAdmPEhvZ^V>ls<$#$KcVFIEiqGcY4TAQ9UxWp@DGV%0Mc$TKp*!U zp1naIx7l;w=1!+RU>y4VzFJNSY6bI0la=U2H}R=5{%Mk_%Q#TIS9$m>PX<4#iK>^-CG(Y(Kyh9pKk2_rlJrtz-{} z54<~y_%w3kJG4np-@T53(pY^8A?&Jj4PR~%w#5Va#K@r$%2>^=-*oG9P2TDm6Q`I^0=-ehoR0lOSWD z^2$dYMV0EI$;jQ|jKJsql#S=KUs7=jik_g!<>zj#*pI9lv+juX!H8jSv=2!ab-gWz z8}g&9=C}ds!O76|M`OOzid*vP008|U={3wm(s1rGxSC@&uAo)mv2$kHW=(lLNauGr z(4-w5NDRCk8}@)kx%A)^8$>XyYK~xqA6Plle^4dZ3p{|Xjp%(r{G+OooAAG>`NhiX zC*&>lsF+x6%CYTe^Ymt#o`ac6@H0&QfUHel?8RHN@-*8dPaz`SH>UylGZc)D^M@oh za=Ch8ralubrs}KKGen^BihV>UD zSQF|0WeI>3gnDz$NFLsarsNwrC5A7BP1ale%7cy`&*Bs3kX1Rx99t3o(&lWF^#U_5 zr_LAuy!;wa+Ise!yh?^iThc57~?i#zMP)@wg;5?bA&&%?KmG6$SDCTj}#nq+7-eH=u8;yEiYC3F?_8=!hKdbQda_A4Fus&c(-8 zX4_<`Ax{A(l{0P`%hBPlih@2NB0wzE3V5fx!M}cw5F%eo z>fl7s`(SaBlbJ~@W(#e$K->KQd31Z-LBIW;;=)JYwR;%KqQkPKf1jxp z)JqwG#dgdM5P12T0RfrdJD>1NZhIn-(X(g|9PT5rud`T*pxDeheT^yiJ>Uga9&v&^ zp(^~)h@~N#(=GVjxNdEreY%zk@UPKveij+Cdn?0`&+3Ez6iTe7JEqt+VLD_+_uQF> z?mKL{`6MWb7BzWosZ_Gu&IK zm-XJVGuM+xNRXBe^`1Im=+7H_Q;U#r|7wN9XZ+y&f4zAAtE17gPh=53tMk+W3511C^4}8aQXq!~pxDe&YcA)--IJm)tKYj> z;`1UT#s1=c*rZ1>RH8XgP04w4EOI*z*dGNlkZ)s<+pwOq_m;f0X?w%3Zk}zVXh8i+ zYryy0A9A)@53r*_uso4l3@UmG(DV92|@V(@#P=?{I$U(@ABem z@rYbXFv7?oYHOVmemH6NUqIiB>2>^3MjoyE6C9GruG+61jDjPI>&4t&tEXEb5mE1) z;~XIugdi@=Iak4fS - -### [matomo-3.0.22](https://github.com/truecharts/apps/compare/matomo-3.0.21...matomo-3.0.22) (2022-07-12) - -#### Chore - -- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) -- update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) - - - -### [matomo-3.0.21](https://github.com/truecharts/apps/compare/matomo-3.0.20...matomo-3.0.21) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [matomo-3.0.20](https://github.com/truecharts/apps/compare/matomo-3.0.19...matomo-3.0.20) (2022-07-09) - -#### Chore - -- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - -### [matomo-3.0.19](https://github.com/truecharts/apps/compare/matomo-3.0.18...matomo-3.0.19) (2022-07-09) - -#### Chore - -- update docker general non-major ([#3106](https://github.com/truecharts/apps/issues/3106)) - - - -### [matomo-3.0.18](https://github.com/truecharts/apps/compare/matomo-3.0.17...matomo-3.0.18) (2022-07-06) - -#### Chore - -- update docker general non-major ([#3078](https://github.com/truecharts/apps/issues/3078)) - - - -### [matomo-3.0.17](https://github.com/truecharts/apps/compare/matomo-3.0.16...matomo-3.0.17) (2022-07-05) - -#### Chore - -- update helm general non-major helm releases ([#3075](https://github.com/truecharts/apps/issues/3075)) - - - -### [matomo-3.0.16](https://github.com/truecharts/apps/compare/matomo-3.0.15...matomo-3.0.16) (2022-07-04) - -#### Chore - -- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - -### [matomo-3.0.15](https://github.com/truecharts/apps/compare/matomo-3.0.14...matomo-3.0.15) (2022-07-03) - -#### Chore - -- update docker general non-major ([#3052](https://github.com/truecharts/apps/issues/3052)) - - - -### [matomo-3.0.14](https://github.com/truecharts/apps/compare/matomo-3.0.13...matomo-3.0.14) (2022-07-01) - -#### Chore - -- update docker general non-major ([#3015](https://github.com/truecharts/apps/issues/3015)) - - - -### [matomo-3.0.13](https://github.com/truecharts/apps/compare/matomo-3.0.12...matomo-3.0.13) (2022-06-29) - -#### Chore - -- update helm general non-major Helm releases ([#3003](https://github.com/truecharts/apps/issues/3003)) - - - -### [matomo-3.0.12](https://github.com/truecharts/apps/compare/matomo-3.0.11...matomo-3.0.12) (2022-06-27) - -#### Chore - -- update docker general non-major ([#2996](https://github.com/truecharts/apps/issues/2996)) - - - -### [matomo-3.0.11](https://github.com/truecharts/apps/compare/matomo-3.0.10...matomo-3.0.11) (2022-06-25) - -#### Chore - -- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977)) - - - -### [matomo-3.0.10](https://github.com/truecharts/apps/compare/matomo-3.0.9...matomo-3.0.10) (2022-06-25) - -#### Chore - -- update docker general non-major ([#2960](https://github.com/truecharts/apps/issues/2960)) - - - -### [matomo-3.0.9](https://github.com/truecharts/apps/compare/matomo-3.0.8...matomo-3.0.9) (2022-06-22) - -#### Chore - -- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948)) - - - -### [matomo-3.0.8](https://github.com/truecharts/apps/compare/matomo-3.0.7...matomo-3.0.8) (2022-06-21) - -#### Chore - -- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943)) -- update docker general non-major ([#2931](https://github.com/truecharts/apps/issues/2931)) - - - -### [matomo-3.0.7](https://github.com/truecharts/apps/compare/matomo-3.0.6...matomo-3.0.7) (2022-06-17) - -#### Chore - -- update docker general non-major ([#2917](https://github.com/truecharts/apps/issues/2917)) - - - -### [matomo-3.0.6](https://github.com/truecharts/apps/compare/matomo-3.0.5...matomo-3.0.6) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2887](https://github.com/truecharts/apps/issues/2887)) - - - -### [matomo-3.0.5](https://github.com/truecharts/apps/compare/matomo-3.0.4...matomo-3.0.5) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886)) - - - -### [matomo-3.0.4](https://github.com/truecharts/apps/compare/matomo-3.0.3...matomo-3.0.4) (2022-06-14) - -#### Chore - -- update docker general non-major ([#2872](https://github.com/truecharts/apps/issues/2872)) - - - -### [matomo-3.0.3](https://github.com/truecharts/apps/compare/matomo-3.0.2...matomo-3.0.3) (2022-06-11) - -#### Chore - -- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854)) - - - -### [matomo-3.0.2](https://github.com/truecharts/apps/compare/matomo-3.0.1...matomo-3.0.2) (2022-06-11) - -#### Chore - -- update docker general non-major ([#2848](https://github.com/truecharts/apps/issues/2848)) - - - -### [matomo-3.0.1](https://github.com/truecharts/apps/compare/matomo-3.0.0...matomo-3.0.1) (2022-06-09) - -#### Chore - -- update docker general non-major ([#2846](https://github.com/truecharts/apps/issues/2846)) - - - -### [matomo-3.0.0](https://github.com/truecharts/apps/compare/matomo-2.0.1...matomo-3.0.0) (2022-06-07) - -#### Chore - -- update helm general major helm releases ([#2804](https://github.com/truecharts/apps/issues/2804)) - -#### Fix - -- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format. - - - -### [matomo-2.0.1](https://github.com/truecharts/apps/compare/matomo-1.0.67...matomo-2.0.1) (2022-06-07) - -#### Chore - -- Auto-update chart README [skip ci] -- sync all apps persistence configuration and always default to PVC -- update helm general non-major helm releases ([#2838](https://github.com/truecharts/apps/issues/2838)) -- update docker general non-major ([#2831](https://github.com/truecharts/apps/issues/2831)) - -#### Fix - -- remove malfunctioning SCALE migration script - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [matomo-2.0.0](https://github.com/truecharts/apps/compare/matomo-1.0.67...matomo-2.0.0) (2022-06-07) - -#### Chore - -- sync all apps persistence configuration and always default to PVC - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [matomo-1.0.67](https://github.com/truecharts/apps/compare/matomo-1.0.66...matomo-1.0.67) (2022-06-04) - -#### Chore - -- update docker general non-major ([#2826](https://github.com/truecharts/apps/issues/2826)) - - - -### [matomo-1.0.66](https://github.com/truecharts/apps/compare/matomo-1.0.65...matomo-1.0.66) (2022-06-03) - -#### Chore - -- update docker general non-major ([#2821](https://github.com/truecharts/apps/issues/2821)) - - - -### [matomo-1.0.65](https://github.com/truecharts/apps/compare/matomo-1.0.64...matomo-1.0.65) (2022-06-02) - -#### Chore - -- update docker general non-major ([#2806](https://github.com/truecharts/apps/issues/2806)) - - - -### [matomo-1.0.64](https://github.com/truecharts/apps/compare/matomo-1.0.63...matomo-1.0.64) (2022-05-31) - -#### Chore - -- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803)) -- update docker general non-major ([#2791](https://github.com/truecharts/apps/issues/2791)) - - - -### [matomo-1.0.63](https://github.com/truecharts/apps/compare/matomo-1.0.62...matomo-1.0.63) (2022-05-26) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [matomo-1.0.63](https://github.com/truecharts/apps/compare/matomo-1.0.62...matomo-1.0.63) (2022-05-26) - -#### Chore - -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [matomo-1.0.62](https://github.com/truecharts/apps/compare/matomo-1.0.61...matomo-1.0.62) (2022-05-25) - -#### Chore - -- update docker general non-major ([#2745](https://github.com/truecharts/apps/issues/2745)) -- update docker general non-major ([#2740](https://github.com/truecharts/apps/issues/2740)) - - - -### [matomo-1.0.61](https://github.com/truecharts/apps/compare/matomo-1.0.60...matomo-1.0.61) (2022-05-24) - -#### Chore - -- update helm general non-major helm releases - - - -### [matomo-1.0.60](https://github.com/truecharts/apps/compare/matomo-1.0.59...matomo-1.0.60) (2022-05-23) - -#### Chore - -- update docker general non-major ([#2733](https://github.com/truecharts/apps/issues/2733)) - - - -### [matomo-1.0.59](https://github.com/truecharts/apps/compare/matomo-1.0.57...matomo-1.0.59) (2022-05-22) - -#### Chore - -- update docker general non-major ([#2730](https://github.com/truecharts/apps/issues/2730)) -- update docker general non-major ([#2720](https://github.com/truecharts/apps/issues/2720)) - - - -### [matomo-1.0.57](https://github.com/truecharts/apps/compare/matomo-1.0.56...matomo-1.0.57) (2022-05-19) - -#### Chore - -- update docker general non-major ([#2711](https://github.com/truecharts/apps/issues/2711)) - - - -### [matomo-1.0.56](https://github.com/truecharts/apps/compare/matomo-1.0.54...matomo-1.0.56) (2022-05-18) - -#### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#2706](https://github.com/truecharts/apps/issues/2706)) -- update helm general non-major helm releases - - - -### [matomo-1.0.55](https://github.com/truecharts/apps/compare/matomo-1.0.54...matomo-1.0.55) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [matomo-1.0.54](https://github.com/truecharts/apps/compare/matomo-1.0.53...matomo-1.0.54) (2022-05-17) - -#### Chore - -- update docker general non-major ([#2695](https://github.com/truecharts/apps/issues/2695)) -- update helm general non-major helm releases - - - -### [matomo-1.0.53](https://github.com/truecharts/apps/compare/matomo-1.0.52...matomo-1.0.53) (2022-05-16) - -#### Chore - -- update docker general non-major ([#2692](https://github.com/truecharts/apps/issues/2692)) - - - -### [matomo-1.0.52](https://github.com/truecharts/apps/compare/matomo-1.0.51...matomo-1.0.52) (2022-05-15) - -#### Chore - -- update docker general non-major ([#2686](https://github.com/truecharts/apps/issues/2686)) - - - -### [matomo-1.0.51](https://github.com/truecharts/apps/compare/matomo-1.0.50...matomo-1.0.51) (2022-05-14) - -#### Chore - -- update docker general non-major ([#2679](https://github.com/truecharts/apps/issues/2679)) - - - -### [matomo-1.0.50](https://github.com/truecharts/apps/compare/matomo-1.0.49...matomo-1.0.50) (2022-05-13) - -#### Chore - -- update docker general non-major ([#2658](https://github.com/truecharts/apps/issues/2658)) - - - -### [matomo-1.0.49](https://github.com/truecharts/apps/compare/matomo-1.0.48...matomo-1.0.49) (2022-05-11) - -#### Chore - -- update docker general non-major ([#2653](https://github.com/truecharts/apps/issues/2653)) - - - -### [matomo-1.0.48](https://github.com/truecharts/apps/compare/matomo-1.0.47...matomo-1.0.48) (2022-05-10) - -#### Chore - -- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649)) - - - -### [matomo-1.0.47](https://github.com/truecharts/apps/compare/matomo-1.0.46...matomo-1.0.47) (2022-05-10) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.46](https://github.com/truecharts/apps/compare/matomo-1.0.45...matomo-1.0.46) (2022-05-09) - -#### Chore - -- update docker general non-major ([#2641](https://github.com/truecharts/apps/issues/2641)) - - - -### [matomo-1.0.45](https://github.com/truecharts/apps/compare/matomo-1.0.44...matomo-1.0.45) (2022-05-08) - -#### Chore - -- update docker general non-major ([#2639](https://github.com/truecharts/apps/issues/2639)) - - - -### [matomo-1.0.44](https://github.com/truecharts/apps/compare/matomo-1.0.43...matomo-1.0.44) (2022-05-06) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.43](https://github.com/truecharts/apps/compare/matomo-1.0.42...matomo-1.0.43) (2022-05-06) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.42](https://github.com/truecharts/apps/compare/matomo-1.0.41...matomo-1.0.42) (2022-05-05) - -#### Chore - -- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612)) - - - -### [matomo-1.0.41](https://github.com/truecharts/apps/compare/matomo-1.0.40...matomo-1.0.41) (2022-05-05) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.40](https://github.com/truecharts/apps/compare/matomo-1.0.39...matomo-1.0.40) (2022-05-04) - -#### Chore - -- update docker general non-major ([#2606](https://github.com/truecharts/apps/issues/2606)) - - - -### [matomo-1.0.39](https://github.com/truecharts/apps/compare/matomo-1.0.38...matomo-1.0.39) (2022-05-04) - -#### Chore - -- update helm general non-major helm releases ([#2605](https://github.com/truecharts/apps/issues/2605)) - - - -### [matomo-1.0.38](https://github.com/truecharts/apps/compare/matomo-1.0.37...matomo-1.0.38) (2022-04-29) - -#### Chore - -- update docker general non-major ([#2581](https://github.com/truecharts/apps/issues/2581)) - - - -### [matomo-1.0.37](https://github.com/truecharts/apps/compare/matomo-1.0.36...matomo-1.0.37) (2022-04-28) - -#### Chore - -- update docker general non-major ([#2577](https://github.com/truecharts/apps/issues/2577)) - - - -### [matomo-1.0.36](https://github.com/truecharts/apps/compare/matomo-1.0.35...matomo-1.0.36) (2022-04-26) - -#### Chore - -- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573)) - - - -### [matomo-1.0.35](https://github.com/truecharts/apps/compare/matomo-1.0.34...matomo-1.0.35) (2022-04-26) - -#### Chore - -- update docker general non-major ([#2571](https://github.com/truecharts/apps/issues/2571)) - - - -### [matomo-1.0.34](https://github.com/truecharts/apps/compare/matomo-1.0.33...matomo-1.0.34) (2022-04-20) - -#### Chore - -- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524)) - - - -### [matomo-1.0.33](https://github.com/truecharts/apps/compare/matomo-1.0.32...matomo-1.0.33) (2022-04-20) - -#### Chore - -- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515)) -- update docker general non-major ([#2522](https://github.com/truecharts/apps/issues/2522)) - - - -### [matomo-1.0.32](https://github.com/truecharts/apps/compare/matomo-1.0.31...matomo-1.0.32) (2022-04-18) - -#### Chore - -- update docker general non-major ([#2502](https://github.com/truecharts/apps/issues/2502)) - - - -### [matomo-1.0.31](https://github.com/truecharts/apps/compare/matomo-1.0.30...matomo-1.0.31) (2022-04-17) - -#### Chore - -- update docker general non-major ([#2497](https://github.com/truecharts/apps/issues/2497)) - - - -### [matomo-1.0.30](https://github.com/truecharts/apps/compare/matomo-1.0.29...matomo-1.0.30) (2022-04-16) - -#### Chore - -- update docker general non-major ([#2494](https://github.com/truecharts/apps/issues/2494)) - - - -### [matomo-1.0.29](https://github.com/truecharts/apps/compare/matomo-1.0.28...matomo-1.0.29) (2022-04-13) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.28](https://github.com/truecharts/apps/compare/matomo-1.0.27...matomo-1.0.28) (2022-04-12) - -#### Chore - -- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480)) - - - -### [matomo-1.0.27](https://github.com/truecharts/apps/compare/matomo-1.0.26...matomo-1.0.27) (2022-04-12) - -#### Chore - -- update docker general non-major ([#2478](https://github.com/truecharts/apps/issues/2478)) - - - -### [matomo-1.0.26](https://github.com/truecharts/apps/compare/matomo-1.0.25...matomo-1.0.26) (2022-04-09) - -#### Chore - -- update docker general non-major ([#2460](https://github.com/truecharts/apps/issues/2460)) - - - -### [matomo-1.0.25](https://github.com/truecharts/apps/compare/matomo-1.0.24...matomo-1.0.25) (2022-04-06) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.24](https://github.com/truecharts/apps/compare/matomo-1.0.23...matomo-1.0.24) (2022-04-04) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.23](https://github.com/truecharts/apps/compare/matomo-1.0.22...matomo-1.0.23) (2022-04-03) - -#### Chore - -- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410)) -- update docker general non-major ([#2414](https://github.com/truecharts/apps/issues/2414)) - - - -### [matomo-1.0.20](https://github.com/truecharts/apps/compare/matomo-1.0.19...matomo-1.0.20) (2022-03-31) - -#### Chore - -- update helm general non-major helm releases ([#2362](https://github.com/truecharts/apps/issues/2362)) - - - -### [matomo-1.0.19](https://github.com/truecharts/apps/compare/matomo-1.0.17...matomo-1.0.19) (2022-03-31) - -#### Chore - -- update docker general non-major ([#2357](https://github.com/truecharts/apps/issues/2357)) -- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361)) - - - -### [matomo-1.0.17](https://github.com/truecharts/apps/compare/matomo-1.0.16...matomo-1.0.17) (2022-03-30) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354)) - - - -### [matomo-1.0.16](https://github.com/truecharts/apps/compare/matomo-1.0.15...matomo-1.0.16) (2022-03-30) - -#### Chore - -- update docker general non-major ([#2347](https://github.com/truecharts/apps/issues/2347)) - - - -### [matomo-1.0.15](https://github.com/truecharts/apps/compare/matomo-1.0.14...matomo-1.0.15) (2022-03-30) - -#### Chore - -- Use new repo ([#2337](https://github.com/truecharts/apps/issues/2337)) -- update docker general non-major ([#2338](https://github.com/truecharts/apps/issues/2338)) - - - -### [matomo-1.0.14](https://github.com/truecharts/apps/compare/matomo-1.0.13...matomo-1.0.14) (2022-03-28) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.13](https://github.com/truecharts/apps/compare/matomo-1.0.12...matomo-1.0.13) (2022-03-27) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.12](https://github.com/truecharts/apps/compare/matomo-1.0.11...matomo-1.0.12) (2022-03-26) - -#### Chore - -- update helm general non-major helm releases ([#2290](https://github.com/truecharts/apps/issues/2290)) - - - -### [matomo-1.0.11](https://github.com/truecharts/apps/compare/matomo-1.0.10...matomo-1.0.11) (2022-03-26) - -#### Chore - -- bump all apps to trigger ci - - - -### [matomo-1.0.9](https://github.com/truecharts/apps/compare/matomo-1.0.8...matomo-1.0.9) (2022-03-26) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.8](https://github.com/truecharts/apps/compare/matomo-1.0.7...matomo-1.0.8) (2022-03-24) - -#### Chore - -- update docker general non-major - - - -### [matomo-1.0.7](https://github.com/truecharts/apps/compare/matomo-1.0.6...matomo-1.0.7) (2022-03-23) - -#### Chore - -- update docker general non-major -- update docker general non-major - - - -### [matomo-1.0.5](https://github.com/truecharts/apps/compare/matomo-1.0.4...matomo-1.0.5) (2022-03-20) - -#### Chore - -- update docker general non-major -- update docker general non-major - - - -### [matomo-1.0.3](https://github.com/truecharts/apps/compare/matomo-1.0.2...matomo-1.0.3) (2022-03-17) - -#### Chore - -- update docker general non-major ([#2198](https://github.com/truecharts/apps/issues/2198)) -- update docker general non-major ([#2196](https://github.com/truecharts/apps/issues/2196)) - - - -### [matomo-1.0.1](https://github.com/truecharts/apps/compare/matomo-1.0.0...matomo-1.0.1) (2022-03-15) - -#### Chore - -- update docker general non-major ([#2175](https://github.com/truecharts/apps/issues/2175)) - - - -### [matomo-1.0.0](https://github.com/truecharts/apps/compare/matomo-0.0.2...matomo-1.0.0) (2022-03-10) - - - -### [matomo-0.0.2](https://github.com/truecharts/apps/compare/matomo-0.0.1...matomo-0.0.2) (2022-03-09) - -#### Fix - -- enable secondary ports ([#2120](https://github.com/truecharts/apps/issues/2120)) - - - -### matomo-0.0.1 (2022-03-09) - -#### Feat - -- Add matomo ([#2115](https://github.com/truecharts/apps/issues/2115)) diff --git a/archive/charts/stable/matomo/Chart.yaml b/archive/charts/stable/matomo/Chart.yaml deleted file mode 100644 index 6c71372a38d..00000000000 --- a/archive/charts/stable/matomo/Chart.yaml +++ /dev/null @@ -1,46 +0,0 @@ -annotations: - artifacthub.io/links: |- - - name: support - url: https://discord.com/invite/tVsPTHWTtr - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: productivity - truecharts.org/max_helm_version: "3.17" - truecharts.org/min_helm_version: "3.14" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 5.4.0 -dependencies: - - name: common - version: 28.16.6 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: mariadb - version: 16.3.2 - repository: oci://oci.trueforge.org/truecharts - condition: mariadb.enabled - alias: "" - tags: [] - import-values: [] -deprecated: true -description: Matomo is the leading Free/Libre open analytics platform -home: https://truecharts.org/charts/stable/matomo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/matomo.webp -keywords: - - analytics -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: matomo -sources: - - https://gallery.ecr.aws/bitnami/matomo - - https://github.com/bitnami/bitnami-docker-matomo - - https://github.com/matomo-org/matomo - - https://github.com/truecharts/charts/tree/master/charts/stable/matomo -type: application -version: 16.7.4 diff --git a/archive/charts/stable/matomo/README.md b/archive/charts/stable/matomo/README.md deleted file mode 100644 index 3c205aa1525..00000000000 --- a/archive/charts/stable/matomo/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/matomo) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/matomo` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/matomo - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/matomo/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/matomo/icon-small.webp b/archive/charts/stable/matomo/icon-small.webp deleted file mode 100644 index 0b393f2fc9625b0f05483b839779be2664e49b4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFI*Nk&Fm0RRA3MM6+kP&il$0000G0000V0018V06|PpNTUD%00Dqw+uE_` z{TbUynetC%4^c{QI77PhI|!^dipa8l8}s-8wCE%49Hyo z>t@d7et`Z>&D0CyOhjm04e33 AZ~y=R diff --git a/archive/charts/stable/matomo/icon.webp b/archive/charts/stable/matomo/icon.webp deleted file mode 100644 index 1a46d4f21b1328b4b15e95ecc17ad04c63382ede..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1734 zcmV;%208gsNk&G#1^@t8MM6+kP&il$0000G0001$005N$06|PpNQwgh00E#y+qNOe zIuUK#w)@$(ZQHhO+qP}nwr!(~d-g{}+`A*=+~4kqm;jmU|2fs{y3%pyp1SD(&WwF7 zIQ!rQ(io*1eBuD$&ttlUjk&D_0NNg#H$I&%awvR$Xvng^pz!}qV$ zo-G?iW-o>J-5q_#`~mO(=8MXtf8nn?dL)k^@V(9vN$y1GuYHTw&=Bk#k$KyKa6m!& z3W7iH9FMCJ{%yCs1vCunL}T#31ZHp5*qemG&oo>l z@&w1>i3n^Be*Iux+cfi%mrB5K@(>5mbIn`GmGN88D`|iBweBjEy2mjz-OacG|CjUW z7954@2c2x&7bPF&Xu7g#ojxh+%^xU$DjrBITMcEqCWhv;O|k5r(x41L6~I}Bjc+QC zsRe)avg=gTpz^SzSzUjt1*$5tZ>LsmfeNaRE^AcsQWXGb0q!(vK36NMMVg2F=J7UN zj+$2l;53s4{##qlL6KEO@vl8C+6NW&!uAGr{HP-8_j+p2%32xt>f-j?3kz_QIb)kE zq6+_p(bk*<8*scaU4E&EhW*spmX*P5sSN}#XUoNu`>S!GDamJ)^M5Z-72zKymh^Fy z$4;z7dv8k?2KAef|Cgl{ENIE5oQ58kmIvm>mh8xJ!=|;Apuf|0x8w+pj*~k}czZXf zf_g{{7E#{Lz5j^7&Kx&flBa2Z_K`Cc+&wJWl+)N#WDVK{A`_cQn^>|a=etxSeTU?x ziX@Ma7O|wCQl1bI*^=~RA|h*W+WT3Od`&qy)9oA11|lMzKcRe)SR$8ER?f&il&?Bx zWM9gqV(RLQKf34i`Gaw^mubFnoCK#^eXW_gv-^nIWB0o5zOy#$Am`G z_Nek2)ix;l32w_r5Qgr~z3kt3wvts#6{(d;Qq+Ye`>?NrCSj2lB}us{sc*jUH~*uZ zQ%C>+{`k*90D%ehNj{bfu(_V`0tcGW9}13c&rXyR|0hZ73Y$#6zYiPy({@}|S@u2O z|NJr`E9V>CHBoj;=aILm`pA$#i?3kB05LXl&5${bpimut4+Q#1(;k@mMt8@zZZZz zGMN7ay`I$1;2EHvNngwtt`K&>e-2bzPohLa-??2$N1W4sdjo~F=#>@cy$3^VA?;%< zF-g1^85sQbl6_C@n$7EgLbR)7bwT8`q4ct*r+}a7zh23&bd$MxU6l@whS$iPkFabv zH@lo6E$Qbj+Q81nSVa?5LUjb!HP78_-uZak^e&6ydrQwevI3g;%1+$;(%*6YzK}pe z%if|CMWq;EwOg5D{Pd6U#asom{9-PyzB@UlxNoTzUp>IHEdXc$jxB){m2-9Sr|0E(L_8aOz$TT - -### [readarr-11.0.11](https://github.com/truecharts/apps/compare/readarr-11.0.10...readarr-11.0.11) (2022-07-12) - -#### Chore - -- update helm general non-major helm releases ([#3147](https://github.com/truecharts/apps/issues/3147)) - - - -### [readarr-11.0.10](https://github.com/truecharts/apps/compare/readarr-11.0.9...readarr-11.0.10) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [readarr-11.0.9](https://github.com/truecharts/apps/compare/readarr-11.0.8...readarr-11.0.9) (2022-07-09) - -#### Chore - -- update helm general non-major helm releases ([#3113](https://github.com/truecharts/apps/issues/3113)) - - - -### [readarr-11.0.8](https://github.com/truecharts/apps/compare/readarr-11.0.7...readarr-11.0.8) (2022-07-04) - -#### Chore - -- update helm general non-major helm releases ([#3066](https://github.com/truecharts/apps/issues/3066)) - - - -### [readarr-11.0.7](https://github.com/truecharts/apps/compare/readarr-11.0.6...readarr-11.0.7) (2022-06-25) - -#### Chore - -- update helm general non-major helm releases ([#2977](https://github.com/truecharts/apps/issues/2977)) - - - -### [readarr-11.0.6](https://github.com/truecharts/apps/compare/readarr-11.0.5...readarr-11.0.6) (2022-06-22) - -#### Chore - -- update helm general non-major helm releases ([#2948](https://github.com/truecharts/apps/issues/2948)) - - - -### [readarr-11.0.5](https://github.com/truecharts/apps/compare/readarr-11.0.4...readarr-11.0.5) (2022-06-21) - -#### Chore - -- update helm general non-major helm releases ([#2943](https://github.com/truecharts/apps/issues/2943)) - - - -### [readarr-11.0.4](https://github.com/truecharts/apps/compare/readarr-11.0.3...readarr-11.0.4) (2022-06-14) - -#### Chore - -- update helm general non-major helm releases ([#2886](https://github.com/truecharts/apps/issues/2886)) - - - -### [readarr-11.0.3](https://github.com/truecharts/apps/compare/readarr-11.0.2...readarr-11.0.3) (2022-06-11) - -#### Chore - -- update helm general non-major helm releases ([#2854](https://github.com/truecharts/apps/issues/2854)) - - - -### [readarr-11.0.2](https://github.com/truecharts/apps/compare/readarr-11.0.1...readarr-11.0.2) (2022-06-07) - -#### Fix - -- hotpatch to disable HPA and networkPolicy in SCALE interface, due to incompatible format. - - - -### [readarr-11.0.1](https://github.com/truecharts/apps/compare/readarr-10.0.28...readarr-11.0.1) (2022-06-07) - -#### Chore - -- Auto-update chart README [skip ci] -- sync all apps persistence configuration and always default to PVC - -#### Fix - -- remove malfunctioning SCALE migration script - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [readarr-11.0.0](https://github.com/truecharts/apps/compare/readarr-10.0.28...readarr-11.0.0) (2022-06-07) - -#### Chore - -- sync all apps persistence configuration and always default to PVC - -#### Refactor - -- BREAKING CHANGE ([#2836](https://github.com/truecharts/apps/issues/2836)) - - - -### [readarr-10.0.28](https://github.com/truecharts/apps/compare/readarr-10.0.27...readarr-10.0.28) (2022-06-04) - -#### Chore - -- update docker general non-major ([#2826](https://github.com/truecharts/apps/issues/2826)) - - - -### [readarr-10.0.27](https://github.com/truecharts/apps/compare/readarr-10.0.26...readarr-10.0.27) (2022-05-31) - -#### Chore - -- update helm general non-major helm releases ([#2803](https://github.com/truecharts/apps/issues/2803)) - - - -### [readarr-10.0.26](https://github.com/truecharts/apps/compare/readarr-10.0.25...readarr-10.0.26) (2022-05-26) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [readarr-10.0.26](https://github.com/truecharts/apps/compare/readarr-10.0.25...readarr-10.0.26) (2022-05-26) - -#### Chore - -- update helm general non-major helm releases ([#2759](https://github.com/truecharts/apps/issues/2759)) - - - -### [readarr-10.0.25](https://github.com/truecharts/apps/compare/readarr-10.0.24...readarr-10.0.25) (2022-05-24) - -#### Chore - -- update helm general non-major helm releases - - - -### [readarr-10.0.24](https://github.com/truecharts/apps/compare/readarr-10.0.23...readarr-10.0.24) (2022-05-17) - -#### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases - - - -### [readarr-10.0.24](https://github.com/truecharts/apps/compare/readarr-10.0.23...readarr-10.0.24) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [readarr-10.0.23](https://github.com/truecharts/apps/compare/readarr-10.0.22...readarr-10.0.23) (2022-05-17) - -#### Chore - -- update helm general non-major helm releases - - - -### [readarr-10.0.22](https://github.com/truecharts/apps/compare/readarr-10.0.21...readarr-10.0.22) (2022-05-16) - -#### Chore - -- update docker general non-major ([#2692](https://github.com/truecharts/apps/issues/2692)) - - - -### [readarr-10.0.21](https://github.com/truecharts/apps/compare/readarr-10.0.20...readarr-10.0.21) (2022-05-11) - -#### Chore - -- update docker general non-major ([#2653](https://github.com/truecharts/apps/issues/2653)) - - - -### [readarr-10.0.20](https://github.com/truecharts/apps/compare/readarr-10.0.19...readarr-10.0.20) (2022-05-10) - -#### Chore - -- update helm general non-major helm releases ([#2649](https://github.com/truecharts/apps/issues/2649)) - - - -### [readarr-10.0.19](https://github.com/truecharts/apps/compare/readarr-10.0.18...readarr-10.0.19) (2022-05-08) - -#### Chore - -- update docker general non-major ([#2639](https://github.com/truecharts/apps/issues/2639)) - - - -### [readarr-10.0.18](https://github.com/truecharts/apps/compare/readarr-10.0.17...readarr-10.0.18) (2022-05-05) - -#### Chore - -- update helm general non-major helm releases ([#2612](https://github.com/truecharts/apps/issues/2612)) - - - -### [readarr-10.0.17](https://github.com/truecharts/apps/compare/readarr-10.0.16...readarr-10.0.17) (2022-04-28) - -#### Chore - -- update docker general non-major ([#2577](https://github.com/truecharts/apps/issues/2577)) - - - -### [readarr-10.0.16](https://github.com/truecharts/apps/compare/readarr-10.0.15...readarr-10.0.16) (2022-04-26) - -#### Chore - -- update helm general non-major helm releases ([#2573](https://github.com/truecharts/apps/issues/2573)) - - - -### [readarr-10.0.15](https://github.com/truecharts/apps/compare/readarr-10.0.14...readarr-10.0.15) (2022-04-20) - -#### Chore - -- update helm general non-major helm releases ([#2524](https://github.com/truecharts/apps/issues/2524)) - - - -### [readarr-10.0.14](https://github.com/truecharts/apps/compare/readarr-10.0.13...readarr-10.0.14) (2022-04-20) - -#### Chore - -- add missing quote on description ([#2515](https://github.com/truecharts/apps/issues/2515)) -- update docker general non-major ([#2522](https://github.com/truecharts/apps/issues/2522)) - - - -### [readarr-10.0.13](https://github.com/truecharts/apps/compare/readarr-10.0.12...readarr-10.0.13) (2022-04-12) - -#### Chore - -- update helm general non-major helm releases ([#2480](https://github.com/truecharts/apps/issues/2480)) - - - -### [readarr-10.0.12](https://github.com/truecharts/apps/compare/readarr-10.0.11...readarr-10.0.12) (2022-04-09) - -#### Chore - -- update docker general non-major ([#2460](https://github.com/truecharts/apps/issues/2460)) - - - -### [readarr-10.0.11](https://github.com/truecharts/apps/compare/readarr-10.0.10...readarr-10.0.11) (2022-04-03) - -#### Chore - -- update helm general non-major helm releases ([#2410](https://github.com/truecharts/apps/issues/2410)) - - - -### [readarr-10.0.10](https://github.com/truecharts/apps/compare/readarr-10.0.9...readarr-10.0.10) (2022-03-31) - -#### Chore - -- update helm general non-major helm releases ([#2361](https://github.com/truecharts/apps/issues/2361)) - - - -### [readarr-10.0.9](https://github.com/truecharts/apps/compare/readarr-10.0.8...readarr-10.0.9) (2022-03-30) - -#### Chore - -- update helm general non-major helm releases ([#2354](https://github.com/truecharts/apps/issues/2354)) - - - -### [readarr-10.0.8](https://github.com/truecharts/apps/compare/readarr-10.0.7...readarr-10.0.8) (2022-03-26) - -#### Chore - -- bump all apps to trigger ci - - - -### [readarr-10.0.6](https://github.com/truecharts/apps/compare/readarr-10.0.5...readarr-10.0.6) (2022-03-24) - -#### Chore - -- update docker general non-major - - - -### [readarr-10.0.3](https://github.com/truecharts/apps/compare/readarr-10.0.2...readarr-10.0.3) (2022-03-17) - -#### Chore - -- update docker general non-major ([#2198](https://github.com/truecharts/apps/issues/2198)) -- update docker general non-major ([#2196](https://github.com/truecharts/apps/issues/2196)) - - - -### [readarr-10.0.1](https://github.com/truecharts/apps/compare/readarr-10.0.0...readarr-10.0.1) (2022-03-07) - -#### Chore - -- update helm general non-major helm releases ([#2111](https://github.com/truecharts/apps/issues/2111)) -- Remove `-icon` string from icon png's ([#2040](https://github.com/truecharts/apps/issues/2040)) - - - -### [readarr-10.0.0](https://github.com/truecharts/apps/compare/readarr-9.0.67...readarr-10.0.0) (2022-03-03) - -#### Chore - -- remove fixed env from questions.yaml -- remove empty env var declaration from questions.yaml -- remove TZ from values. ([#1945](https://github.com/truecharts/apps/issues/1945)) -- update helm general major helm releases ([#2021](https://github.com/truecharts/apps/issues/2021)) - -#### Fix - -- BREAKING CHANGE Move some env-vars outside of env section ([#2010](https://github.com/truecharts/apps/issues/2010)) - - - -### [readarr-9.0.67](https://github.com/truecharts/apps/compare/readarr-9.0.66...readarr-9.0.67) (2022-03-02) - -#### Chore - -- update helm general non-major helm releases ([#1999](https://github.com/truecharts/apps/issues/1999)) - - - -### [readarr-9.0.66](https://github.com/truecharts/apps/compare/readarr-9.0.65...readarr-9.0.66) (2022-02-28) - -#### Chore - -- rename `web_portal` to `open` ([#1957](https://github.com/truecharts/apps/issues/1957)) -- update docker general non-major ([#1980](https://github.com/truecharts/apps/issues/1980)) - - - -### [readarr-9.0.65](https://github.com/truecharts/apps/compare/readarr-9.0.64...readarr-9.0.65) (2022-02-21) - -#### Chore - -- update helm general non-major helm releases ([#1927](https://github.com/truecharts/apps/issues/1927)) - - - -### [readarr-9.0.64](https://github.com/truecharts/apps/compare/readarr-9.0.63...readarr-9.0.64) (2022-02-21) - -#### Chore - -- update docker general non-major ([#1924](https://github.com/truecharts/apps/issues/1924)) - - - -### [readarr-9.0.63](https://github.com/truecharts/apps/compare/readarr-9.0.62...readarr-9.0.63) (2022-02-15) - -#### Chore - -- update helm general non-major helm releases ([#1901](https://github.com/truecharts/apps/issues/1901)) - - - -### [readarr-9.0.62](https://github.com/truecharts/apps/compare/readarr-9.0.61...readarr-9.0.62) (2022-02-10) - -#### Chore - -- update docker general non-major ([#1876](https://github.com/truecharts/apps/issues/1876)) - - - -### [readarr-9.0.61](https://github.com/truecharts/apps/compare/readarr-9.0.60...readarr-9.0.61) (2022-02-08) - -#### Chore - -- update helm general non-major helm releases ([#1871](https://github.com/truecharts/apps/issues/1871)) - - - -### [readarr-9.0.60](https://github.com/truecharts/apps/compare/readarr-9.0.59...readarr-9.0.60) (2022-02-06) - -#### Chore - -- update helm chart common to v8.15.0 ([#1859](https://github.com/truecharts/apps/issues/1859)) - - - -### [readarr-9.0.59](https://github.com/truecharts/apps/compare/readarr-9.0.58...readarr-9.0.59) (2022-02-05) - -#### Chore - -- update helm general non-major helm releases ([#1852](https://github.com/truecharts/apps/issues/1852)) -- update docker general non-major ([#1849](https://github.com/truecharts/apps/issues/1849)) - - - -### [readarr-9.0.58](https://github.com/truecharts/apps/compare/readarr-9.0.57...readarr-9.0.58) (2022-02-02) - -#### Chore - -- update helm general non-major helm releases ([#1828](https://github.com/truecharts/apps/issues/1828)) - - - -### [readarr-9.0.57](https://github.com/truecharts/apps/compare/readarr-9.0.56...readarr-9.0.57) (2022-01-31) - -#### Chore - -- update docker general non-major docker tags ([#1823](https://github.com/truecharts/apps/issues/1823)) - - - -### [readarr-9.0.56](https://github.com/truecharts/apps/compare/readarr-9.0.55...readarr-9.0.56) (2022-01-25) - -#### Chore - -- update helm general non-major helm releases ([#1791](https://github.com/truecharts/apps/issues/1791)) - - - -### [readarr-9.0.55](https://github.com/truecharts/apps/compare/readarr-9.0.54...readarr-9.0.55) (2022-01-24) - -#### Chore - -- update docker general non-major ([#1786](https://github.com/truecharts/apps/issues/1786)) - - - -### [readarr-9.0.54](https://github.com/truecharts/apps/compare/readarr-9.0.53...readarr-9.0.54) (2022-01-22) - -#### Chore - -- update helm general non-major helm releases ([#1766](https://github.com/truecharts/apps/issues/1766)) - - - -### [readarr-9.0.53](https://github.com/truecharts/apps/compare/readarr-9.0.52...readarr-9.0.53) (2022-01-21) - -#### Chore - -- update helm general non-major helm releases ([#1759](https://github.com/truecharts/apps/issues/1759)) - -#### Fix - -- set additional_attrs: true on all dicts ([#1750](https://github.com/truecharts/apps/issues/1750)) - - - -### [readarr-9.0.52](https://github.com/truecharts/apps/compare/readarr-9.0.51...readarr-9.0.52) (2022-01-19) - -#### Chore - -- update docker general non-major ([#1741](https://github.com/truecharts/apps/issues/1741)) - - - -### [readarr-9.0.51](https://github.com/truecharts/apps/compare/readarr-9.0.50...readarr-9.0.51) (2022-01-18) - -#### Chore - -- update helm general non-major helm releases ([#1732](https://github.com/truecharts/apps/issues/1732)) - - - -### [readarr-9.0.50](https://github.com/truecharts/apps/compare/readarr-9.0.49...readarr-9.0.50) (2022-01-17) - -#### Chore - -- update docker general non-major ([#1728](https://github.com/truecharts/apps/issues/1728)) - - - -### [readarr-9.0.49](https://github.com/truecharts/apps/compare/readarr-9.0.48...readarr-9.0.49) (2022-01-13) - -#### Chore - -- update helm general non-major helm releases ([#1712](https://github.com/truecharts/apps/issues/1712)) - -#### Feat - -- expose capabilities in GUI ([#1709](https://github.com/truecharts/apps/issues/1709)) - - - -### [readarr-9.0.48](https://github.com/truecharts/apps/compare/readarr-9.0.47...readarr-9.0.48) (2022-01-12) - -#### Chore - -- update helm general non-major helm releases ([#1704](https://github.com/truecharts/apps/issues/1704)) - - - -### [readarr-9.0.47](https://github.com/truecharts/apps/compare/readarr-9.0.46...readarr-9.0.47) (2022-01-11) - -#### Chore - -- update helm general non-major helm releases ([#1693](https://github.com/truecharts/apps/issues/1693)) - - - -### [readarr-9.0.46](https://github.com/truecharts/apps/compare/readarr-9.0.45...readarr-9.0.46) (2022-01-10) - -#### Chore - -- update docker general non-major ([#1677](https://github.com/truecharts/apps/issues/1677)) - - - -### [readarr-9.0.45](https://github.com/truecharts/apps/compare/readarr-9.0.44...readarr-9.0.45) (2022-01-04) - -#### Chore - -- update helm general non-major helm releases - - - -### [readarr-9.0.44](https://github.com/truecharts/apps/compare/readarr-9.0.43...readarr-9.0.44) (2022-01-03) - -#### Chore - -- update docker general non-major ([#1646](https://github.com/truecharts/apps/issues/1646)) - - - -### [readarr-9.0.43](https://github.com/truecharts/apps/compare/readarr-9.0.42...readarr-9.0.43) (2021-12-28) - -#### Chore - -- update helm general non-major helm releases ([#1623](https://github.com/truecharts/apps/issues/1623)) - - - -### [readarr-9.0.42](https://github.com/truecharts/apps/compare/readarr-9.0.41...readarr-9.0.42) (2021-12-24) - -#### Chore - -- update docker general non-major docker tags ([#1609](https://github.com/truecharts/apps/issues/1609)) - - - -### [readarr-9.0.41](https://github.com/truecharts/apps/compare/readarr-9.0.40...readarr-9.0.41) (2021-12-21) - -#### Chore - -- update helm general non-major helm releases ([#1596](https://github.com/truecharts/apps/issues/1596)) -- update docker general non-major ([#1595](https://github.com/truecharts/apps/issues/1595)) - - - -### [readarr-9.0.40](https://github.com/truecharts/apps/compare/readarr-9.0.39...readarr-9.0.40) (2021-12-20) - -#### Chore - -- update docker general non-major ([#1581](https://github.com/truecharts/apps/issues/1581)) - - - -### [readarr-9.0.39](https://github.com/truecharts/apps/compare/readarr-9.0.38...readarr-9.0.39) (2021-12-19) - -#### Chore - -- Last patch bump before RC2 branch-off -- remove `editable: true` as this is the default ([#1576](https://github.com/truecharts/apps/issues/1576)) - - - -### [readarr-9.0.38](https://github.com/truecharts/apps/compare/readarr-9.0.37...readarr-9.0.38) (2021-12-19) - -#### Chore - -- completely remove mountPath reference from GUI ([#1572](https://github.com/truecharts/apps/issues/1572)) -- update helm general non-major helm releases ([#1571](https://github.com/truecharts/apps/issues/1571)) - - - -### [readarr-9.0.37](https://github.com/truecharts/apps/compare/readarr-9.0.36...readarr-9.0.37) (2021-12-19) - -#### Chore - -- update docker general non-major ([#1567](https://github.com/truecharts/apps/issues/1567)) - - - -### [readarr-9.0.36](https://github.com/truecharts/apps/compare/readarr-9.0.35...readarr-9.0.36) (2021-12-18) - -#### Chore - -- cleanup questions by removing hidden dicts ([#1558](https://github.com/truecharts/apps/issues/1558)) -- App-Icon Organization ([#1539](https://github.com/truecharts/apps/issues/1539)) -- update docker general non-major - - - -### [readarr-9.0.35](https://github.com/truecharts/apps/compare/readarr-9.0.34...readarr-9.0.35) (2021-12-14) - -#### Chore - -- update helm general non-major helm releases ([#1535](https://github.com/truecharts/apps/issues/1535)) - - - -### [readarr-9.0.34](https://github.com/truecharts/apps/compare/readarr-9.0.33...readarr-9.0.34) (2021-12-13) - -#### Chore - -- move incubator apps to stable and bump everything - - - -### [readarr-9.0.33](https://github.com/truecharts/apps/compare/readarr-9.0.32...readarr-9.0.33) (2021-12-13) - -#### Chore - -- update docker general non-major ([#1522](https://github.com/truecharts/apps/issues/1522)) - - - -### [readarr-9.0.32](https://github.com/truecharts/apps/compare/readarr-9.0.31...readarr-9.0.32) (2021-12-11) - -#### Chore - -- update general helm non-major helm releases ([#1509](https://github.com/truecharts/apps/issues/1509)) - - - -### [readarr-9.0.31](https://github.com/truecharts/apps/compare/readarr-9.0.30...readarr-9.0.31) (2021-12-11) - -#### Chore - -- update non-major docker ([#1507](https://github.com/truecharts/apps/issues/1507)) - - - -### [readarr-9.0.30](https://github.com/truecharts/apps/compare/readarr-9.0.29...readarr-9.0.30) (2021-12-08) - -#### Chore - -- update non-major ([#1488](https://github.com/truecharts/apps/issues/1488)) - - - -### [readarr-9.0.29](https://github.com/truecharts/apps/compare/readarr-9.0.28...readarr-9.0.29) (2021-12-07) - -#### Chore - -- update non-major deps helm releases ([#1481](https://github.com/truecharts/apps/issues/1481)) - - - -### readarr-9.0.28 (2021-12-05) - -#### Chore - -- bump apps to generate security page -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) -- update non-major ([#1466](https://github.com/truecharts/apps/issues/1466)) -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) -- update non-major deps helm releases ([#1471](https://github.com/truecharts/apps/issues/1471)) -- update non-major docker tags ([#1438](https://github.com/truecharts/apps/issues/1438)) -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - -#### Fix - -- fix typo in theme selection ([#1428](https://github.com/truecharts/apps/issues/1428)) - - - -### [readarr-9.0.27](https://github.com/truecharts/apps/compare/readarr-9.0.26...readarr-9.0.27) (2021-12-05) - -#### Chore - -- update non-major deps helm releases ([#1468](https://github.com/truecharts/apps/issues/1468)) - - - -### [readarr-9.0.26](https://github.com/truecharts/apps/compare/readarr-9.0.25...readarr-9.0.26) (2021-12-05) - -#### Chore - -- update non-major ([#1466](https://github.com/truecharts/apps/issues/1466)) - - - -### [readarr-9.0.25](https://github.com/truecharts/apps/compare/readarr-9.0.24...readarr-9.0.25) (2021-12-04) - -#### Chore - -- bump apps to generate security page - - - -### [readarr-9.0.24](https://github.com/truecharts/apps/compare/readarr-9.0.23...readarr-9.0.24) (2021-12-04) - -#### Chore - -- update non-major deps helm releases ([#1453](https://github.com/truecharts/apps/issues/1453)) - - - -### [readarr-9.0.23](https://github.com/truecharts/apps/compare/readarr-9.0.22...readarr-9.0.23) (2021-12-03) - -#### Chore - -- move all container references to TCCR ([#1448](https://github.com/truecharts/apps/issues/1448)) -- update non-major ([#1449](https://github.com/truecharts/apps/issues/1449)) - - - -### [readarr-9.0.22](https://github.com/truecharts/apps/compare/readarr-9.0.21...readarr-9.0.22) (2021-11-30) - -#### Chore - -- update non-major docker tags ([#1438](https://github.com/truecharts/apps/issues/1438)) - - - -### [readarr-9.0.21](https://github.com/truecharts/apps/compare/readarr-9.0.20...readarr-9.0.21) (2021-11-30) - -#### Chore - -- update non-major deps helm releases ([#1432](https://github.com/truecharts/apps/issues/1432)) - - - -### [readarr-9.0.20](https://github.com/truecharts/apps/compare/readarr-9.0.19...readarr-9.0.20) (2021-11-30) - -#### Chore - -- update non-major deps helm releases - - - -### [readarr-9.0.18](https://github.com/truecharts/apps/compare/readarr-9.0.17...readarr-9.0.18) (2021-11-23) - -#### Chore - -- update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386)) - - - -### [readarr-9.0.17](https://github.com/truecharts/apps/compare/readarr-9.0.16...readarr-9.0.17) (2021-11-22) - -#### Chore - -- update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383)) - - - -### [readarr-9.0.16](https://github.com/truecharts/apps/compare/readarr-9.0.15...readarr-9.0.16) (2021-11-22) - -#### Chore - -- update non-major ([#1380](https://github.com/truecharts/apps/issues/1380)) - - - -### [readarr-9.0.15](https://github.com/truecharts/apps/compare/readarr-9.0.14...readarr-9.0.15) (2021-11-18) - -#### Chore - -- update non-major ([#1350](https://github.com/truecharts/apps/issues/1350)) - - - -### [readarr-9.0.14](https://github.com/truecharts/apps/compare/readarr-9.0.13...readarr-9.0.14) (2021-11-16) - -#### Chore - -- update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345)) - - - -### [readarr-9.0.13](https://github.com/truecharts/apps/compare/readarr-9.0.12...readarr-9.0.13) (2021-11-15) - -#### Chore - -- update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338)) - - - -### [readarr-9.0.12](https://github.com/truecharts/apps/compare/readarr-9.0.11...readarr-9.0.12) (2021-11-15) - -#### Chore - -- persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329)) -- update non-major ([#1336](https://github.com/truecharts/apps/issues/1336)) - - - -### [readarr-9.0.11](https://github.com/truecharts/apps/compare/readarr-9.0.10...readarr-9.0.11) (2021-11-14) - -#### Chore - -- fixes around the GUI refactor ([#1316](https://github.com/truecharts/apps/issues/1316)) -- move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326)) -- clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322)) -- update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328)) -- update non-major ([#1327](https://github.com/truecharts/apps/issues/1327)) - -#### Fix - -- split udp and tcp ports ([#1321](https://github.com/truecharts/apps/issues/1321)) -- Allow spaces in paths ([#1306](https://github.com/truecharts/apps/issues/1306)) - - - -### [readarr-9.0.10](https://github.com/truecharts/apps/compare/readarr-9.0.9...readarr-9.0.10) (2021-11-09) - -#### Chore - -- update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297)) - - - -### [readarr-9.0.9](https://github.com/truecharts/apps/compare/readarr-9.0.8...readarr-9.0.9) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295)) - - - -### [readarr-9.0.8](https://github.com/truecharts/apps/compare/readarr-9.0.7...readarr-9.0.8) (2021-11-07) - -#### Chore - -- update non-major ([#1270](https://github.com/truecharts/apps/issues/1270)) - - - -### [readarr-9.0.7](https://github.com/truecharts/apps/compare/readarr-9.0.6...readarr-9.0.7) (2021-11-07) - -#### Chore - -- update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291)) - -#### Chore - -- Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289)) - -#### Feat - -- Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290)) - - - -### [readarr-9.0.6](https://github.com/truecharts/apps/compare/readarr-9.0.5...readarr-9.0.6) (2021-11-02) - -#### Chore - -- update non-major deps helm releases ([#1267](https://github.com/truecharts/apps/issues/1267)) - - - -### [readarr-9.0.5](https://github.com/truecharts/apps/compare/readarr-9.0.4...readarr-9.0.5) (2021-11-01) - -#### Chore - -- update non-major deps helm releases ([#1264](https://github.com/truecharts/apps/issues/1264)) - - - -### [readarr-9.0.4](https://github.com/truecharts/apps/compare/readarr-9.0.3...readarr-9.0.4) (2021-11-01) - -#### Chore - -- update non-major ([#1263](https://github.com/truecharts/apps/issues/1263)) - - - -### [readarr-9.0.3](https://github.com/truecharts/apps/compare/readarr-9.0.2...readarr-9.0.3) (2021-10-26) - -#### Chore - -- update non-major docker tags ([#1250](https://github.com/truecharts/apps/issues/1250)) - - - -### [readarr-9.0.2](https://github.com/truecharts/apps/compare/readarr-9.0.1...readarr-9.0.2) (2021-10-26) - -#### Chore - -- update non-major deps helm releases ([#1245](https://github.com/truecharts/apps/issues/1245)) - - - -### [readarr-9.0.1](https://github.com/truecharts/apps/compare/readarr-9.0.0...readarr-9.0.1) (2021-10-26) - -#### Chore - -- update helm chart common to v8.3.15 ([#1240](https://github.com/truecharts/apps/issues/1240)) -- update non-major ([#1232](https://github.com/truecharts/apps/issues/1232)) - - - -### [readarr-9.0.0](https://github.com/truecharts/apps/compare/readarr-8.0.19...readarr-9.0.0) (2021-10-25) - -#### Chore - -- Adapt for TrueNAS SCALE RC1 - - - -### [readarr-8.0.19](https://github.com/truecharts/apps/compare/readarr-8.0.16...readarr-8.0.19) (2021-10-20) - -#### Chore - -- bump apps, remove duplicates and move incubator to stable for RC1 -- update non-major deps helm releases ([#1213](https://github.com/truecharts/apps/issues/1213)) - -#### Fix - -- reenable postgresql migration scripting and bump all to force update -- use correct PVC storageClass when using postgresql as a dependency on SCALE ([#1212](https://github.com/truecharts/apps/issues/1212)) - - - -### [readarr-8.0.16](https://github.com/truecharts/apps/compare/readarr-8.0.15...readarr-8.0.16) (2021-10-20) - -#### Chore - -- bump versions to rerelease and fix icons - - - -### [readarr-8.0.15](https://github.com/truecharts/apps/compare/readarr-8.0.14...readarr-8.0.15) (2021-10-19) - -#### Change - -- Project-Eclipse 3, Automatically generate item.yaml ([#1178](https://github.com/truecharts/apps/issues/1178)) - -#### Chore - -- Project-Eclipse 5, move app-readme to automatic generation script ([#1181](https://github.com/truecharts/apps/issues/1181)) -- Project-Eclipse part 2, adapting and cleaning changelog ([#1173](https://github.com/truecharts/apps/issues/1173)) -- update helm chart common to v8.3.13 ([#1184](https://github.com/truecharts/apps/issues/1184)) -- update non-major ([#1174](https://github.com/truecharts/apps/issues/1174)) - -#### Feat - -- Project-Eclipse 4, Add App grading annotations to Chart.yaml ([#1180](https://github.com/truecharts/apps/issues/1180)) - -#### Refactor - -- Project Eclipse Part 6, move questions.yaml to root App folder ([#1182](https://github.com/truecharts/apps/issues/1182)) - - - -### [readarr-8.0.14](https://github.com/truecharts/apps/compare/readarr-8.0.13...readarr-8.0.14) (2021-10-19) - -#### Fix - -- fix previous SCALE bugfix not correctly being applied - - - -### [readarr-8.0.13](https://github.com/truecharts/apps/compare/readarr-8.0.12...readarr-8.0.13) (2021-10-19) - -#### Fix - -- Solve issues regarding ix_values.yaml not containing the image and tag definitions. ([#1176](https://github.com/truecharts/apps/issues/1176)) - - - -### [readarr-8.0.12](https://github.com/truecharts/apps/compare/readarr-8.0.11...readarr-8.0.12) (2021-10-18) - -#### Refactor - -- Project Eclipse - part 1 - remove ix_values.yaml ([#1168](https://github.com/truecharts/apps/issues/1168)) - - - -### [readarr-8.0.11](https://github.com/truecharts/apps/compare/readarr-8.0.10...readarr-8.0.11) (2021-10-17) - -#### Chore - -- update helm chart common to v8.3.10 ([#1160](https://github.com/truecharts/apps/issues/1160)) - -#### Fix - -- force users using correct / prefix for mounPath ([#1156](https://github.com/truecharts/apps/issues/1156)) - - - -### [readarr-8.0.10](https://github.com/truecharts/apps/compare/readarr-8.0.9...readarr-8.0.10) (2021-10-13) - -#### Chore - -- update non-major deps helm releases ([#1133](https://github.com/truecharts/apps/issues/1133)) - - - -### [readarr-8.0.9](https://github.com/truecharts/apps/compare/readarr-8.0.8...readarr-8.0.9) (2021-10-12) - -#### Chore - -- update non-major deps helm releases ([#1126](https://github.com/truecharts/apps/issues/1126)) - - - -### [readarr-8.0.8](https://github.com/truecharts/apps/compare/readarr-8.0.7...readarr-8.0.8) (2021-10-12) - -#### Chore - -- update non-major ([#1122](https://github.com/truecharts/apps/issues/1122)) - - - -### [readarr-8.0.7](https://github.com/truecharts/apps/compare/readarr-8.0.6...readarr-8.0.7) (2021-10-12) - -#### Chore - -- update non-major deps helm releases ([#1123](https://github.com/truecharts/apps/issues/1123)) - - - -### [readarr-8.0.6](https://github.com/truecharts/apps/compare/readarr-8.0.5...readarr-8.0.6) (2021-10-05) - -#### Chore - -- update non-major deps helm releases ([#1099](https://github.com/truecharts/apps/issues/1099)) - - - -### [readarr-8.0.5](https://github.com/truecharts/apps/compare/readarr-8.0.4...readarr-8.0.5) (2021-10-05) - -#### Chore - -- update non-major ([#1098](https://github.com/truecharts/apps/issues/1098)) - - - -### [readarr-8.0.4](https://github.com/truecharts/apps/compare/readarr-8.0.3...readarr-8.0.4) (2021-09-29) - -#### Chore - -- update helm chart common to v8.0.13 ([#1060](https://github.com/truecharts/apps/issues/1060)) - - - -### [readarr-8.0.2](https://github.com/truecharts/apps/compare/readarr-8.0.1...readarr-8.0.2) (2021-09-28) - -#### Chore - -- update non-major ([#1046](https://github.com/truecharts/apps/issues/1046)) - - - -### [readarr-8.0.1](https://github.com/truecharts/apps/compare/readarr-8.0.0...readarr-8.0.1) (2021-09-26) - - - -### [readarr-8.0.0](https://github.com/truecharts/apps/compare/readarr-7.0.3...readarr-8.0.0) (2021-09-26) - - - -### [readarr-7.0.3](https://github.com/truecharts/apps/compare/readarr-7.0.2...readarr-7.0.3) (2021-09-21) - -#### Chore - -- update non-major deps helm releases ([#1014](https://github.com/truecharts/apps/issues/1014)) - - - -### [readarr-7.0.2](https://github.com/truecharts/apps/compare/readarr-7.0.1...readarr-7.0.2) (2021-09-21) - -#### Chore - -- update non-major ([#1013](https://github.com/truecharts/apps/issues/1013)) - - - -### [readarr-7.0.1](https://github.com/truecharts/apps/compare/readarr-6.11.16...readarr-7.0.1) (2021-09-13) - -#### Chore - -- update non-major ([#962](https://github.com/truecharts/apps/issues/962)) - -#### Feat - -- add new GUI and VPN support to all Apps ([#977](https://github.com/truecharts/apps/issues/977)) -- Add VPN addon and move some config to includes ([#973](https://github.com/truecharts/apps/issues/973)) -- pin all container references to digests ([#963](https://github.com/truecharts/apps/issues/963)) -- Move some common containers to our own containers - -#### Fix - -- make sure podSecurityContext is included in both SCALE and Helm installs ([#956](https://github.com/truecharts/apps/issues/956)) - - - -## [readarr-6.11.16](https://github.com/truecharts/apps/compare/readarr-6.11.15...readarr-6.11.16) (2021-09-08) - -### Fix - -- repair Hyperion and some misplaced GUI elements ([#922](https://github.com/truecharts/apps/issues/922)) diff --git a/archive/charts/stable/readarr/Chart.yaml b/archive/charts/stable/readarr/Chart.yaml deleted file mode 100644 index a04a04833fb..00000000000 --- a/archive/charts/stable/readarr/Chart.yaml +++ /dev/null @@ -1,45 +0,0 @@ -annotations: - artifacthub.io/links: |- - - name: support - url: https://discord.com/invite/tVsPTHWTtr - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: media - truecharts.org/max_helm_version: "3.17" - truecharts.org/min_helm_version: "3.14" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.4.18.2805 -dependencies: - - name: common - version: 28.16.6 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: A fork of Radarr to work with Books & AudioBooks -home: https://truecharts.org/charts/stable/readarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/readarr.webp -keywords: - - readarr - - torrent - - usenet - - AudioBooks - - ebooks -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: readarr -sources: - - https://ghcr.io/elfhosted/readarr-develop - - https://ghcr.io/onedr0p/exportarr - - https://github.com/Readarr/Readarr - - https://github.com/truecharts/charts/tree/master/charts/stable/readarr - - https://readarr.com -type: application -version: 26.1.5 - diff --git a/archive/charts/stable/readarr/README.md b/archive/charts/stable/readarr/README.md deleted file mode 100644 index 89c6fcba6bf..00000000000 --- a/archive/charts/stable/readarr/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/readarr) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/readarr` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/readarr - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/readarr/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/readarr/ci/default-values.yaml b/archive/charts/stable/readarr/ci/default-values.yaml deleted file mode 100644 index daba1bd9648..00000000000 --- a/archive/charts/stable/readarr/ci/default-values.yaml +++ /dev/null @@ -1,3 +0,0 @@ -metrics: - main: - enabled: true diff --git a/archive/charts/stable/readarr/ci/disabledmetrics-values.yaml b/archive/charts/stable/readarr/ci/disabledmetrics-values.yaml deleted file mode 100644 index c54316d241a..00000000000 --- a/archive/charts/stable/readarr/ci/disabledmetrics-values.yaml +++ /dev/null @@ -1,9 +0,0 @@ -metrics: - main: - enabled: false - type: "servicemonitor" - endpoints: - - port: metrics - path: /metrics - prometheusRule: - enabled: false diff --git a/archive/charts/stable/readarr/icon-small.webp b/archive/charts/stable/readarr/icon-small.webp deleted file mode 100644 index efccc6c8a01057c367d9896d34e85cda297527aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W@^Nk&Gd0ssJ4MM6+kP&il$0000G0000V0018V06|PpNZ0@X00DqpZQJqa zS;a{Kwoyn0m*4r^zDwVq`aOs||z8x}d6fcuB>9|TZm%m9FX zPwvDx1oySny&t3F*E08MjQ1Q!oCKh1X#HyWpD{wCZ}nZ}b2A7*Yi@Px_Ur3zXT4~H zB34j1AgBQV0FVX%odGH!03ZMY05m120~8-vPzeq>U^anT46rnTOq<2S+l~6vkbT7W zJ+2)l^5%dYeP|E`ZH!CT7;pgo^Lt@~wU^5*JsxkO;Zz(Y_kxm>10GjZnRDSjekRnM zO6^=^EA`cGk1G<}kN;AYb6Oaqt7uTte)5cSRGx{xAyD@@L~IgP|CV1*Z<8%edk>Oe z()!uES*E9FP|ERV_U4$99`REF+eCj#kGTlLGY;SLS5_{uZV@DD38HrM=lzOjG)!&( zqblL5f1g7@(?x`6o0B!hHTza~tWExoKdL<4eN4`cf$-$yff9zt$OfRz=y(X!U&!NKhLC!|Bi}kLtegTnvsA$m7}ZI0t+Bn$)Mxf UWUD1yGa1}wvyF2n#>|@>0OKG-3;+NC diff --git a/archive/charts/stable/readarr/icon.webp b/archive/charts/stable/readarr/icon.webp deleted file mode 100644 index 0e40998ce295ff20a108dc79c5c2f26cf29a9367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4742 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 UC3zo>24pN~IyM0v{X;+i0PYl3)Bpeg diff --git a/archive/charts/stable/readarr/templates/NOTES.txt b/archive/charts/stable/readarr/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/stable/readarr/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/stable/readarr/templates/common.yaml b/archive/charts/stable/readarr/templates/common.yaml deleted file mode 100644 index b51394e00a4..00000000000 --- a/archive/charts/stable/readarr/templates/common.yaml +++ /dev/null @@ -1 +0,0 @@ -{{ include "tc.v1.common.loader.all" . }} diff --git a/archive/charts/stable/readarr/values.yaml b/archive/charts/stable/readarr/values.yaml deleted file mode 100644 index 0faaa5fb1eb..00000000000 --- a/archive/charts/stable/readarr/values.yaml +++ /dev/null @@ -1,103 +0,0 @@ -image: - repository: ghcr.io/elfhosted/readarr-develop - pullPolicy: IfNotPresent - tag: 0.4.18.2805@sha256:ed51f754b6baeb58d86b4fae4872dbcc8e9799c01788a9023c3d7704ae549333 -exportarrImage: - repository: ghcr.io/onedr0p/exportarr - pullPolicy: IfNotPresent - tag: v2.3.0@sha256:af535d94061cf97a52e1661945ffba78c03f9443eae7c0da1a80a5a4be56b520 -securityContext: - container: - readOnlyRootFilesystem: false -service: - main: - ports: - main: - port: 8787 - metrics: - enabled: "{{ .Values.metrics.main.enabled }}" - type: ClusterIP - ports: - metrics: - enabled: true - port: 8788 -workload: - main: - podSpec: - containers: - main: - probes: - liveness: - enabled: true - type: http - path: /ping - readiness: - enabled: true - type: http - path: /ping - startup: - enabled: true - type: http - path: /ping - env: - READARR__SERVER__PORT: "{{ .Values.service.main.ports.main.port }}" - # External | Basic | Forms - READARR__AUTH__METHOD: "" - # DisabledForLocalAddresses | Enabled - READARR__AUTH__REQUIRED: DisabledForLocalAddresses - # READARR__APP__THEME: dark - # READARR__APP__INSTANCENAME: Readarr - # READARR__LOG__LEVEL: info - # READARR__UPDATE__BRANCH: develop - exportarr: - enabled: "{{ .Values.metrics.main.enabled }}" - imageSelector: exportarrImage - args: - - readarr - probes: - liveness: - enabled: true - type: http - path: /healthz - port: "{{ .Values.service.metrics.ports.metrics.port }}" - readiness: - enabled: true - type: http - path: /healthz - port: "{{ .Values.service.metrics.ports.metrics.port }}" - startup: - enabled: true - type: http - path: /healthz - port: "{{ .Values.service.metrics.ports.metrics.port }}" - env: - INTERFACE: 0.0.0.0 - PORT: "{{ .Values.service.metrics.ports.metrics.port }}" - URL: '{{ printf "http://%v:%v" (include "tc.v1.common.lib.chart.names.fullname" $) .Values.service.main.ports.main.port }}' - # additional metrics (slow) - # ENABLE_ADDITIONAL_METRICS: false - # enable gathering unknown queue items - # ENABLE_UNKNOWN_QUEUE_ITEMS: false - CONFIG: "/config/config.xml" -persistence: - config: - enabled: true - targetSelector: - main: - main: - mountPath: /config - exportarr: - mountPath: /config - readOnly: true -metrics: - main: - enabled: true - type: "servicemonitor" - endpoints: - - port: metrics - path: /metrics - targetSelector: metrics - prometheusRule: - enabled: false - -updated: true diff --git a/archive/charts/stable/rimgo/.helmignore b/archive/charts/stable/rimgo/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/stable/rimgo/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/stable/rimgo/CHANGELOG.md b/archive/charts/stable/rimgo/CHANGELOG.md deleted file mode 100644 index 2f5790d6cf5..00000000000 --- a/archive/charts/stable/rimgo/CHANGELOG.md +++ /dev/null @@ -1,1039 +0,0 @@ ---- -title: Changelog -pagefind: false ---- - -## [rimgo-1.0.0](https://github.com/truecharts/charts/compare/rimgo-0.0.108...rimgo-1.0.0) (2022-11-10) - -### Chore - -- Major Change to GUI - -### Fix - -- change container config label - -## [rimgo-0.0.108](https://github.com/truecharts/charts/compare/rimgo-0.0.103...rimgo-0.0.108) (2022-11-10) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]349](https://github.com/truecharts/charts/issues/4349)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]#4331](https://github.com/truecharts/charts/issues/4331)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4366](https://github.com/truecharts/charts/issues/4366)) - ##- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) - ##- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]329](https://github.com/truecharts/charts/issues/4329)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]truecharts/charts/compare/rimgo-0.0.103...rimgo-0.0.106) (2022-11-08) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [rimgo-0.0.106](https://github.com/truecharts/charts/compare/rimgo-0.0.103...rimgo-0.0.106) (2022-11-08) - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- - Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)))) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [rimgo-0.0.106](https://github.com/truecharts/charts/compare/rimgo-0.0.103...rimgo-0.0.106) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]342](https://github.com/truecharts/charts/issues/4342)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]329](https://github.com/truecharts/charts/issues/4329)) -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331))(2022-11-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [rimgo-0.0.104](https://github.com/truecharts/charts/compare/rimgo-0.0.103...rimgo-0.0.104) (2022-11-06) - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [rimgo-0.0.103](https://github.com/truecharts/charts/compare/rimgo-0.0.101...rimgo-0.0.103) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]truecharts/charts/compare/rimgo-0.0.101...rimgo-0.0.102) (2022-11-06) -- update docker general non-major ([#4331](https://github.com/truecharts/charts/issues/4331)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) - -## [rimgo-0.0.101](https://github.com/truecharts/charts/compare/rimgo-0.0.100...rimgo-0.0.101) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [rimgo-0.0.100](https://github.com/truecharts/charts/compare/rimgo-0.0.99...rimgo-0.0.100) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4301](https://github.com/truecharts/charts/issues/4301)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] - ##- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4289](https://github.com/truecharts/charts/issues/4289)) - -## [rimgo-0.0.98](https://github.com/truecharts/charts/compare/rimgo-0.0.97...rimgo-0.0.98) (2022-11-03) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4312](https://github.com/truecharts/charts/issues/4312)) - -## [rimgo-0.0.97](https://github.com/truecharts/charts/compare/rimgo-0.0.96...rimgo-0.0.97) (2022-11-02) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)) -- update docker general non-major ([#4280](https://github.com/truecharts/charts/issues/4280)) -- Auto-update chart README [skip ci] -- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308)) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4260](https://github.com/truecharts/charts/issues/4260)) - -## [rimgo-0.0.95](https://github.com/truecharts/charts/compare/rimgo-0.0.94...rimgo-0.0.95) (2022-10-31) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4301](https://github.com/truecharts/charts/issues/4301)) -- update docker general non-major ([#4249](https://github.com/truecharts/charts/issues/4249)) - -## [rimgo-0.0.94](https://github.com/truecharts/charts/compare/rimgo-0.0.93...rimgo-0.0.94) (2022-10-30) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4238](https://github.com/truecharts/charts/issues/4238)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4289](https://github.com/truecharts/charts/issues/4289))22-10-29) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4230](https://github.com/truecharts/charts/issues/4230)) - -## [rimgo-0.0.92](https://github.com/truecharts/charts/compare/rimgo-0.0.91...rimgo-0.0.92) (2022-10-28) - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4286](https://github.com/truecharts/charts/issues/4286)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4218](https://github.com/truecharts/charts/issues/4218)) - -## [rimgo-0.0.91](https://github.com/truecharts/charts/compare/rimgo-0.0.90...rimgo-0.0.91) (2022-10-27) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)))) - -## [rimgo-0.0.91](https://github.com/truecharts/charts/compare/rimgo-0.0.90...rimgo-0.0.91) (2022-10-27) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4201](https://github.com/truecharts/charts/issues/4201)) - -## [rimgo-0.0.90](https://github.com/truecharts/charts/compare/rimgo-0.0.89...rimgo-0.0.90) (2022-10-26) - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4260](https://github.com/truecharts/charts/issues/4260)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4189](https://github.com/truecharts/charts/issues/4189)) - -## [rimgo-0.0.89](https://github.com/truecharts/charts/compare/rimgo-0.0.88...rimgo-0.0.89) (2022-10-25) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4249](https://github.com/truecharts/charts/issues/4249)) - -## [rimgo-0.0.88](https://github.com/truecharts/charts/compare/rimgo-0.0.87...rimgo-0.0.88) (2022-10-25) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4181](https://github.com/truecharts/charts/issues/4181)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4238](https://github.com/truecharts/charts/issues/4238)) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4171](https://github.com/truecharts/charts/issues/4171)) - -## [rimgo-0.0.86](https://github.com/truecharts/charts/compare/rimgo-0.0.85...rimgo-0.0.86) (2022-10-22) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4230](https://github.com/truecharts/charts/issues/4230)) -- update docker general non-major ([#4155](https://github.com/truecharts/charts/issues/4155)) - -## [rimgo-0.0.85](https://github.com/truecharts/charts/compare/rimgo-0.0.84...rimgo-0.0.85) (2022-10-21) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4139](https://github.com/truecharts/charts/issues/4139)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4218](https://github.com/truecharts/charts/issues/4218))22-10-19) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) - -## [rimgo-0.0.83](https://github.com/truecharts/charts/compare/rimgo-0.0.82...rimgo-0.0.83) (2022-10-17) - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4119](https://github.com/truecharts/charts/issues/4119)) - -## [rimgo-0.0.82](https://github.com/truecharts/charts/compare/rimgo-0.0.81...rimgo-0.0.82) (2022-10-16) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4108](https://github.com/truecharts/charts/issues/4108)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4201](https://github.com/truecharts/charts/issues/4201))22-10-15) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major - -## [rimgo-0.0.80](https://github.com/truecharts/charts/compare/rimgo-0.0.79...rimgo-0.0.80) (2022-10-14) - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4189](https://github.com/truecharts/charts/issues/4189)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4084](https://github.com/truecharts/charts/issues/4084)) - -## [rimgo-0.0.79](https://github.com/truecharts/charts/compare/rimgo-0.0.78...rimgo-0.0.79) (2022-10-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) - -## [rimgo-0.0.78](https://github.com/truecharts/charts/compare/rimgo-0.0.77...rimgo-0.0.78) (2022-10-11) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4070](https://github.com/truecharts/charts/issues/4070)) - -## [rimgo-0.0.77](https://github.com/truecharts/charts/compare/rimgo-0.0.76...rimgo-0.0.77) (2022-10-10) - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4181](https://github.com/truecharts/charts/issues/4181)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4049](https://github.com/truecharts/charts/issues/4049)) -- update docker general non-major - -## [rimgo-0.0.76](https://github.com/truecharts/charts/compare/rimgo-0.0.74...rimgo-0.0.76) (2022-10-08) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4171](https://github.com/truecharts/charts/issues/4171)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4030](https://github.com/truecharts/charts/issues/4030)) -- update helm general non-major - -## [rimgo-0.0.75](https://github.com/truecharts/charts/compare/rimgo-0.0.74...rimgo-0.0.75) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4155](https://github.com/truecharts/charts/issues/4155)) - -## [rimgo-0.0.74](https://github.com/truecharts/charts/compare/rimgo-0.0.73...rimgo-0.0.74) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major -- Auto-update chart README [skip ci] -- update docker general non-major ([#4139](https://github.com/truecharts/charts/issues/4139)) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [rimgo-0.0.72](https://github.com/truecharts/charts/compare/rimgo-0.0.71...rimgo-0.0.72) (2022-10-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) -- update docker general non-major ([#4010](https://github.com/truecharts/charts/issues/4010)) - -## [rimgo-0.0.71](https://github.com/truecharts/charts/compare/rimgo-0.0.70...rimgo-0.0.71) (2022-10-04) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4001](https://github.com/truecharts/charts/issues/4001)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4119](https://github.com/truecharts/charts/issues/4119))22-10-03) - -### Chore - -- Auto-update chart README [skip ci] -- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) -- update docker general non-major ([#3994](https://github.com/truecharts/charts/issues/3994)) -- update docker general non-major -- Auto-update chart README [skip ci] -- update docker general non-major ([#4108](https://github.com/truecharts/charts/issues/4108)) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3975](https://github.com/truecharts/charts/issues/3975)) - -## [rimgo-0.0.68](https://github.com/truecharts/charts/compare/rimgo-0.0.67...rimgo-0.0.68) (2022-09-30) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major] -- update docker general non-major ([#3965](https://github.com/truecharts/charts/issues/3965)) - -## [rimgo-0.0.67](https://github.com/truecharts/charts/compare/rimgo-0.0.66...rimgo-0.0.67) (2022-09-29) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4084](https://github.com/truecharts/charts/issues/4084)) - -## [rimgo-0.0.67](https://github.com/truecharts/charts/compare/rimgo-0.0.66...rimgo-0.0.67) (2022-09-29) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3953](https://github.com/truecharts/charts/issues/3953)) - -## [rimgo-0.0.66](https://github.com/truecharts/charts/compare/rimgo-0.0.65...rimgo-0.0.66) (2022-09-28) - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#3938](https://github.com/truecharts/charts/issues/3938)) -- update docker general non-major ([#3920](https://github.com/truecharts/charts/issues/3920)) - -## [rimgo-0.0.65](https://github.com/truecharts/charts/compare/rimgo-0.0.64...rimgo-0.0.65) (2022-09-27) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#4070](https://github.com/truecharts/charts/issues/4070)) -- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)) - -## [rimgo-0.0.64](https://github.com/truecharts/charts/compare/rimgo-0.0.63...rimgo-0.0.64) (2022-09-26) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3906](https://github.com/truecharts/charts/issues/3906)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4049](https://github.com/truecharts/charts/issues/4049))22-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) - -## [rimgo-0.0.62](https://github.com/truecharts/charts/compare/rimgo-0.0.61...rimgo-0.0.62) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4030](https://github.com/truecharts/charts/issues/4030)) -- update helm general non-major - -## [rimgo-0.0.61](https://github.com/truecharts/charts/compare/rimgo-0.0.60...rimgo-0.0.61) (2022-09-24) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3860](https://github.com/truecharts/charts/issues/3860)) - -## [rimgo-0.0.60](https://github.com/truecharts/charts/compare/rimgo-0.0.59...rimgo-0.0.60) (2022-09-23) - -- Auto-update chart README [skip ci] -- update helm general non-major -- Auto-update chart README [skip ci] -- update docker general non-major ([#3850](https://github.com/truecharts/charts/issues/3850)) - -## [rimgo-0.0.59](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.59) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-majorci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-majorp ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3839](https://github.com/truecharts/charts/issues/3839)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#4010](https://github.com/truecharts/charts/issues/4010)) - -## [rimgo-0.0.59](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.59) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#4001](https://github.com/truecharts/charts/issues/4001)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3839](https://github.com/truecharts/charts/issues/3839)) -- Auto-update chart README [skip ci] -- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) -- update docker general non-major ([#3994](https://github.com/truecharts/charts/issues/3994)) -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.57](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.57) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3975](https://github.com/truecharts/charts/issues/3975)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3965](https://github.com/truecharts/charts/issues/3965)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.57](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.57) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3953](https://github.com/truecharts/charts/issues/3953)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.57](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.57) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3938](https://github.com/truecharts/charts/issues/3938)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- Auto-update chart README [skip ci] -- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)))) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.56](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.56) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- update docker general non-major ([#3906](https://github.com/truecharts/charts/issues/3906)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- Auto-update chart README [skip ci] -- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.56](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.56) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3881](https://github.com/truecharts/charts/issues/3881)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#3860](https://github.com/truecharts/charts/issues/3860))22-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3850](https://github.com/truecharts/charts/issues/3850)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.55](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.55) (2022-09-17) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]#3772](https://github.com/truecharts/charts/issues/3772)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ps://github.com/truecharts/charts/issues/3751)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.55) (2022-09-18) -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3839](https://github.com/truecharts/charts/issues/3839)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)))) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.55](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.55) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]#3772](https://github.com/truecharts/charts/issues/3772)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ps://github.com/truecharts/charts/issues/3751)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.55) (2022-09-16) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]#3772](https://github.com/truecharts/charts/issues/3772)) -- refactor Services SCALE GUI -- update docker general non-major ([#3839](https://github.com/truecharts/charts/issues/3839)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818))22-09-15) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -## [rimgo-0.0.55](https://github.com/truecharts/charts/compare/rimgo-0.0.54...rimgo-0.0.55) (2022-09-15) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ps://github.com/truecharts/charts/issues/3751)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.53...rimgo-0.0.54) (2022-09-13) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]755](https://github.com/truecharts/charts/issues/3755)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.51...rimgo-0.0.53) (2022-09-12) -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3743](https://github.com/truecharts/charts/issues/3743)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [rimgo-0.0.53](https://github.com/truecharts/charts/compare/rimgo-0.0.51...rimgo-0.0.53) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]#3743](https://github.com/truecharts/charts/issues/3743)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]#3736](https://github.com/truecharts/charts/issues/3736)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.51...rimgo-0.0.53) (2022-09-12) -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) -- update docker general non-major ([#3743](https://github.com/truecharts/charts/issues/3743)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [rimgo-0.0.52](https://github.com/truecharts/charts/compare/rimgo-0.0.51...rimgo-0.0.52) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]#3736](https://github.com/truecharts/charts/issues/3736)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.51...rimgo-0.0.52) (2022-09-11) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUIp ci] -- update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))2022-09-11) - -### Chore - -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -## [rimgo-0.0.51](https://github.com/truecharts/charts/compare/rimgo-0.0.50...rimgo-0.0.51) (2022-09-10) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]727](https://github.com/truecharts/charts/issues/3727)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.49...rimgo-0.0.50) (2022-09-07) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767))2022-09-06) - -### Chore - -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update docker general non-major ([#3710](https://github.com/truecharts/charts/issues/3710)) - -## [rimgo-0.0.49](https://github.com/truecharts/charts/compare/rimgo-0.0.48...rimgo-0.0.49) (2022-09-05) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]700](https://github.com/truecharts/charts/issues/3700)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.47...rimgo-0.0.48) (2022-09-03) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUIor ([#3668](https://github.com/truecharts/charts/issues/3668)) -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772))22-09-02) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) -- update docker general non-major ([#3660](https://github.com/truecharts/charts/issues/3660)) - -## [rimgo-0.0.46](https://github.com/truecharts/charts/compare/rimgo-0.0.45...rimgo-0.0.46) (2022-09-01) - -### Chore - -- update docker general non-major ([#3649](https://github.com/truecharts/charts/issues/3649)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.44...rimgo-0.0.45) (2022-08-31) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]640](https://github.com/truecharts/charts/issues/3640)) -- refactor Services SCALE GUI -- update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790))22-08-30) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- Auto-update chart README [skip ci] -- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [rimgo-0.0.43](https://github.com/truecharts/charts/compare/rimgo-0.0.42...rimgo-0.0.43) (2022-08-30) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] - ##- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] - ##- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [rimgo-0.0.41](https://github.com/truecharts/charts/compare/rimgo-0.0.40...rimgo-0.0.41) (2022-08-29) - -### Chore - -- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) - -## [rimgo-0.0.40](https://github.com/truecharts/charts/compare/rimgo-0.0.39...rimgo-0.0.40) (2022-08-29) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]606](https://github.com/truecharts/charts/issues/3606)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]ruecharts/charts/compare/rimgo-0.0.38...rimgo-0.0.39) (2022-08-28) -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- update docker general non-major ([#3600](https://github.com/truecharts/charts/issues/3600)) - -## [rimgo-0.0.38](https://github.com/truecharts/charts/compare/rimgo-0.0.35...rimgo-0.0.38) (2022-08-27) - -### Chore - -- update docker general non-major ([#3587](https://github.com/truecharts/charts/issues/3587)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- - Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) - ##- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) - -### Chore - -- update docker general non-major ([#3573](https://github.com/truecharts/charts/issues/3573)) - -## [rimgo-0.0.34](https://github.com/truecharts/charts/compare/rimgo-0.0.33...rimgo-0.0.34) (2022-08-25) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] - ##- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -### Chore - -- update docker general non-major ([#3552](https://github.com/truecharts/charts/issues/3552)) - -## [rimgo-0.0.32](https://github.com/truecharts/charts/compare/rimgo-0.0.31...rimgo-0.0.32) (2022-08-23) - -### Chore - -- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) -- Auto-update chart README [skip ci] -- update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772))22-08-23) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) -- update docker general non-major docker tags ([#3544](https://github.com/truecharts/charts/issues/3544)) - -## [rimgo-0.0.30](https://github.com/truecharts/charts/compare/rimgo-0.0.29...rimgo-0.0.30) (2022-08-21) - -### Chore - -- update docker general non-major docker tags ([#3523](https://github.com/truecharts/charts/issues/3523)) -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) -- split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)).0.29) (2022-08-20) - -### Chore - -- update docker general non-major docker tags ([#3518](https://github.com/truecharts/charts/issues/3518)) - -## [rimgo-0.0.28](https://github.com/truecharts/charts/compare/rimgo-0.0.27...rimgo-0.0.28) (2022-08-19) - -### Chore - -- update docker general non-major docker tags ([#3512](https://github.com/truecharts/charts/issues/3512)) - -### Chore - -- update docker general non-major ([#3503](https://github.com/truecharts/charts/issues/3503)) -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] - ##- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- - Auto-update chart README [skip ci] -- update docker general non-major ([#3743](https://github.com/truecharts/charts/issues/3743)) - ##- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -### Chore - -- update docker general non-major docker tags ([#3465](https://github.com/truecharts/charts/issues/3465)) - -## [rimgo-0.0.24](https://github.com/truecharts/charts/compare/rimgo-0.0.23...rimgo-0.0.24) (2022-08-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] - ##- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] - ##- update docker general non-major ([#3743](https://github.com/truecharts/charts/issues/3743)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- add documentation checkbox/section to all SCALE Apps -- update docker general non-major ([#3453](https://github.com/truecharts/charts/issues/3453)) - -### Fix - -- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447)) - -## [rimgo-0.0.22](https://github.com/truecharts/charts/compare/rimgo-0.0.21...rimgo-0.0.22) (2022-08-10) - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update docker general non-major ([#3743](https://github.com/truecharts/charts/issues/3743)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736))22-08-09) - -### Chore - -- update docker general non-major ([#3377](https://github.com/truecharts/charts/issues/3377)) - -## [rimgo-0.0.20](https://github.com/truecharts/charts/compare/rimgo-0.0.18...rimgo-0.0.20) (2022-08-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]eleases ([#3376](https://github.com/truecharts/charts/issues/3376)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736))/3402)) - -## [rimgo-0.0.18](https://github.com/truecharts/apps/compare/rimgo-0.0.17...rimgo-0.0.18) (2022-07-30) - -### Chore - -- update docker general non-major - -## [rimgo-0.0.17](https://github.com/truecharts/apps/compare/rimgo-0.0.16...rimgo-0.0.17) (2022-07-29) - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3339](https://github.com/truecharts/apps/issues/3339)) - -## [rimgo-0.0.16](https://github.com/truecharts/apps/compare/rimgo-0.0.15...rimgo-0.0.16) (2022-07-28) - -### Chore - -- update docker general non-major ([#3326](https://github.com/truecharts/apps/issues/3326)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) -- update docker general non-major ([#3736](https://github.com/truecharts/charts/issues/3736)) - -### Chore - -- update docker general non-major ([#3313](https://github.com/truecharts/apps/issues/3313)) - -## [rimgo-0.0.14](https://github.com/truecharts/apps/compare/rimgo-0.0.13...rimgo-0.0.14) (2022-07-26) - -### Chore - -- update home links ([#3291](https://github.com/truecharts/apps/issues/3291)) -- update docker general non-major ([#3301](https://github.com/truecharts/apps/issues/3301)) -- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302)) - -## [rimgo-0.0.13](https://github.com/truecharts/apps/compare/rimgo-0.0.12...rimgo-0.0.13) (2022-07-25) - -### Chore - -- update docker general non-major ([#3300](https://github.com/truecharts/apps/issues/3300)) -- Auto-update chart README [skip ci] -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- add fake digest to new incubator Apps to fetch digests - -## [rimgo-0.0.12](https://github.com/truecharts/apps/compare/rimgo-0.0.11...rimgo-0.0.12) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update docker general non-major ([#3710](https://github.com/truecharts/charts/issues/3710)) - -## [rimgo-0.0.12](https://github.com/truecharts/apps/compare/rimgo-0.0.11...rimgo-0.0.12) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [rimgo-0.0.12](https://github.com/truecharts/apps/compare/rimgo-0.0.11...rimgo-0.0.12) (2022-07-23) - -### Chore - -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [rimgo-0.0.11]rimgo-0.0.11 (2022-07-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Bump all charts to generate config and container references due to huge increase of repository -- Move Dev to incubator and some cleanup - -## [rimgo-0.0.10]rimgo-0.0.10 (2022-07-22) - -### Chore - -- Auto-update chart README [skip ci] -- Move Dev to incubator and some cleanup - -## [rimgo-0.0.10]rimgo-0.0.10 (2022-07-22) - -### Chore - -- Move Dev to incubator and some cleanup -- Auto-update chart README [skip ci] -- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639))- add documentation checkbox/section to all SCALE Apps -- update docker general non-major ([#3453](https://github.com/truecharts/charts/issues/3453))- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376)) -- update docker general non-major ([#3356](https://github.com/truecharts/charts/issues/3356))- update home links ([#3291](https://github.com/truecharts/apps/issues/3291)) -- update docker general non-major ([#3301](https://github.com/truecharts/apps/issues/3301))- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280))- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci]- Bump all charts to generate config and container references due to huge increase of repository -- Move Dev to incubator and some cleanup- Auto-update chart README [skip ci] -- Move Dev to incubator and some cleanup diff --git a/archive/charts/stable/rimgo/Chart.yaml b/archive/charts/stable/rimgo/Chart.yaml deleted file mode 100644 index f65639e837a..00000000000 --- a/archive/charts/stable/rimgo/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: Network-Web - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: stable -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.1.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: Alternative Imgur front-end -home: https://truecharts.org/charts/stable/rimgo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/rimgo.webp -keywords: - - rimgo - - Network-Web -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: rimgo -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/rimgo - - https://quay.io/pussthecatorg/rimgo -type: application -version: 10.0.0 diff --git a/archive/charts/stable/rimgo/README.md b/archive/charts/stable/rimgo/README.md deleted file mode 100644 index 6c937e130fa..00000000000 --- a/archive/charts/stable/rimgo/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/rimgo) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/rimgo` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/rimgo - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/rimgo/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/rimgo/icon-small.webp b/archive/charts/stable/rimgo/icon-small.webp deleted file mode 100644 index 7e7d14b1a5f49f407722c303f4f87a98e141b17e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmWIYbaT7Hz`zjh>J$(bU=hIuWD5YXJQz9p1bEm2d5i(VC;dbjSr|1AxRHp_QHJ6hTAAPtWY4_9Z#o)-2u0oSeStt+nHH;k!?=mYlkOIZ|)0Dg)45g#w@{ z1xyTc8MPD`6d0HoOjH>JA4nfgWSrP?SoCB|1H-@H|9-?fED}s!d_e!5TIlJ72jcqv zN9~GlOexM^)qmjNnT!Y3rGoyS4GhlZO!;Q_OW#fY(Kh>;Q>vauFLQORRI;u+yZEp1 R!N0Kr|I+_2`+Wjv9{_5rRCNFV diff --git a/archive/charts/stable/rimgo/icon.webp b/archive/charts/stable/rimgo/icon.webp deleted file mode 100644 index 32dbdce16938f07bac25604b962bac3dfc732e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486 zcmVMNk&HA0RRA3MM6+kP&il$0000G0001$005N$06|PpNWcI900DqvZQHWw z!>zd`_Q4uRF41)dEChDoM61x;zrT{`j4ST&jL#nt6F^x1|Lm4oQng_t6Ei>|j!);C zACr0<)YbR-juR6K^7ef9nF#}4X1?!44}tl0uXz#yZhgN0qX7Wp+X3cL06gWGjG%Z&y(yj19Im)V(;s3sL}*e{7WD+MyyxYtvyIV zWfiizIqwzJ#}114#%V!KK!p}o%L>05K!_ZVWC*2jloa#O#JLJAsel0f|C+RKjeoU6 z^l#UhU;p?t@PGTA;+r6|`v1%5S35ud@Wqs=>}*y5>q#vcgU{|RMQXNC8f4(rg4fUg zf(gCznUw*q`!4){`37l=&VhBUdGMh|M@W2i!NxO)Pis%BqyLkNKQG@hH-EP&PXGN5 cHsvKByoi|FElJLX|K=w9gS=JK$N&HU0O|kbga7~l diff --git a/archive/charts/stable/rimgo/templates/NOTES.txt b/archive/charts/stable/rimgo/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/stable/rimgo/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/stable/rimgo/templates/common.yaml b/archive/charts/stable/rimgo/templates/common.yaml deleted file mode 100644 index 78d963fb168..00000000000 --- a/archive/charts/stable/rimgo/templates/common.yaml +++ /dev/null @@ -1,2 +0,0 @@ -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.all" . }} diff --git a/archive/charts/stable/rimgo/values.yaml b/archive/charts/stable/rimgo/values.yaml deleted file mode 100644 index 0b87cdaa563..00000000000 --- a/archive/charts/stable/rimgo/values.yaml +++ /dev/null @@ -1,30 +0,0 @@ -image: - repository: quay.io/pussthecatorg/rimgo - tag: latest@sha256:ca1abc11a97f2373b27c3cc7f89c730045a0b09153ca9b098c4911e6acf82539 - - pullPolicy: IfNotPresent -persistence: {} - -env: - ADDRESS: 0.0.0.0 - IMGUR_CLIENT_ID: 546c25a59c58ad7 - FORCE_WEBP: "0" - -securityContext: - container: - readOnlyRootFilesystem: false - runAsNonRoot: false - runAsUser: 0 - runAsGroup: 0 - -service: - main: - ports: - main: - port: 3000 - protocol: tcp - targetPort: 3000 - -portal: - open: - enabled: true diff --git a/archive/charts/stable/riven/.helmignore b/archive/charts/stable/riven/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/stable/riven/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/stable/riven/CHANGELOG.md b/archive/charts/stable/riven/CHANGELOG.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/archive/charts/stable/riven/Chart.yaml b/archive/charts/stable/riven/Chart.yaml deleted file mode 100644 index 9c56adcd782..00000000000 --- a/archive/charts/stable/riven/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -annotations: - artifacthub.io/links: |- - - name: support - url: https://discord.com/invite/tVsPTHWTtr - truecharts.org/category: security - truecharts.org/max_helm_version: "3.17" - truecharts.org/min_helm_version: "3.14" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 0.23.1 -dependencies: - - name: common - version: 28.16.6 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: Riven Self-Hosted -home: https://truecharts.org/charts/stable/riven -icon: https://truecharts.org/img/hotlink-ok/chart-icons/riven.webp -keywords: - - riven -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: riven -sources: - - https://ghcr.io/rivenmedia/riven - - https://ghcr.io/rivenmedia/riven-frontend - - https://github.com/truecharts/charts/tree/master/charts/stable/riven -type: application -version: 3.1.5 - diff --git a/archive/charts/stable/riven/README.md b/archive/charts/stable/riven/README.md deleted file mode 100644 index 1e1e4715b32..00000000000 --- a/archive/charts/stable/riven/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/riven) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/riven` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/riven - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/riven/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/riven/icon-small.webp b/archive/charts/stable/riven/icon-small.webp deleted file mode 100644 index c2c930cb5562492953b224a1d7197f21bceb9c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmV+x0qOoyNk&Ev0RRA3MM6+kP&il$0000G0000V0018V06|PpNWlOA00D5+*tXj| z*Hr*C06}2__SzhRq^&G{CShP6>Aeuh@=AH{|Nov601?5!ZQD2r0)soVJ%j$I^Ll8k z6?Ubm(i<={RR!Q=3I~KDuZJ4HKYo;JY*U4u`-V3_rEoRj@CGjKTS^>a?l0WZxQRFh zJX05?w}%7vJYr9UMeulw#LXdxD8$GXqs>N)pu+JljXVCQbUTE1jakL8bqrg_u$2s1 z%aFAU*}w|uTV?m+*&R&X5zTEiC(4`F&`nN1Zvp^TP&gna0002c0sx%>Dj)zL06u*# cl1HSXp`kbE0FV!fX#fDO0}ufI`T~Fe0CDYag#Z8m diff --git a/archive/charts/stable/riven/icon.webp b/archive/charts/stable/riven/icon.webp deleted file mode 100644 index d03dc6c048bf641c80b33a754dae4c2fca94c027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2156 zcmV-y2$T0xNk&Fw2mkV6p~8;or;=6%hvt>aqp+BP%RZFw5owjJ|TcMX!?zq+crZ}U760YQ=^AyIV@h`P9( z-0aNu`T^}BO}RQf@$xH=c6K`qQ47zRjIq zZA-H^kL=_nB9gP(+a(`*Cj{3{361h!~`sIe;lqKft00T5+sT8_P49NP7TX?s*lU3s1 ziQpJk;!=lroIC}lYd;bx%S@{+J~9~Au6T7A7lxectBt=#3@oYEwy%R^-Zf60@}-19 z*0?m^x5P;-m09s0lN)2jx+)~&^2MC2Y1)WJ26e=1;cV|1jAnDPDikzA&h&o}p}xYO z5aCZ*;=YbB4jKwnp^QPQ{MvnuCerjBX}piW3NS8}sxpDF7c)s~r(Z=>4sjJG@8B4% z$k!4Q!MwpQ6Jv!q5me|eGsmJdb%mU^J6~lXT{*hYZ94JeV#Ms(f+txi_^|xRFhy3huQG>TQ|j%QnmePE+t}lb^G> zWFIHsE^bSf7`p4I`jbyX>$y2mpp*1F52=$Fz)LNJZk)34?k?uJI0}#DY7{fR1629K zOV&+3uHpdOZVy22xL==46<=5d1jEsK7NllpJT0qgU&#j zvZR+URbGn>*b5TjJl*0Xc$Ms8CT5%l7rJUg)|K(ut(g&Lw5*ryQ@lc z!PZ51wD7Ul#AC0flyD|&mbwHR$=iwYMJ=WTC1%3uZA9o6kH7%lmM*n?QEWj5F$NdQ zGm_2cHO2J2iR;m1X-4wJ-m2025~QX`+VOJbR+dC9mv!hpf-~p|nsS<8-~jFuM_wZ? z7!%bau^!TxE6GS+rzxoQ_!cO2Nm&gSn4u!m15(ncu@T7mJ}T1ZJYh9UF_Krilw7Vw z1n?3;#Z2-h9J;4yN@}u+i?&{M027YA z*eQrSMP%;V9O8}UHmXX=I%PV-c8X35hOP?QpWv#Y8m*X73*Ig+F1fGb;^LAA9VoV0 zH{M<_Dq4H!P#OSMP&gpm0002c5dfV5DwY7206u{*lSic@p`kVi0H6>FX>Q-l0r~;@ z0sH_R7X1MJ0r&y>0r~si;e=dYVzz1{JczovrC%$nRWMBf-KZXjmkWkVUGYcOf2ER- zy*~I7F{Dc)4~=*QmE{~0{oebf-9^~A^ukfBpK((pX0NXKn=DCA4QWO5{pCVZl^k^Y z0@mpQ^`A{gi&012xBvkD`XM)-PM4UDSjE?bIVOiJ4(<=&T<=(f8_eA2ipMna^PW9i i{ - -### [clickhouse-0.0.5](https://github.com/truecharts/apps/compare/clickhouse-0.0.4...clickhouse-0.0.5) (2022-07-11) - - - -### [clickhouse-0.0.4](https://github.com/truecharts/apps/compare/clickhouse-0.0.3...clickhouse-0.0.4) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [clickhouse-0.0.3](https://github.com/truecharts/apps/compare/clickhouse-0.0.2...clickhouse-0.0.3) (2022-07-11) - - - -### [clickhouse-0.0.2](https://github.com/truecharts/apps/compare/clickhouse-0.0.1...clickhouse-0.0.2) (2022-07-11) - -#### Chore - -- Auto-update chart README [skip ci] - -#### Fix - -- Fix ClickHouse upstream repo ([#3134](https://github.com/truecharts/apps/issues/3134)) - - - -### clickhouse-0.0.1 (2022-07-10) - -#### Feat - -- Add ClickHouse ([#3060](https://github.com/truecharts/apps/issues/3060)) - house-0.0.10...clickhouse-0.0.11) (2022-07-14) - -### Fix - -- regenerate catalog and update template - -## [clickhouse-0.0.10](https://github.com/truecharts/apps/compare/clickhouse-0.0.8...clickhouse-0.0.10) (2022-07-14) - -### Fix - -- bump to ensure .helmignore is present on all Charts - -## [clickhouse-0.0.8](https://github.com/truecharts/apps/compare/clickhouse-0.0.6...clickhouse-0.0.8) (2022-07-12) - -### Chore - -- update icons ([#3156](https://github.com/truecharts/apps/issues/3156)) -- bump to cleanup old docs and use correct icon urls - -## [clickhouse-0.0.6](https://github.com/truecharts/apps/compare/clickhouse-0.0.5...clickhouse-0.0.6) (2022-07-12) - -### Chore - -- bump to regenerate documentation -- update docker general non-major ([#3150](https://github.com/truecharts/apps/issues/3150)) - - - -### [clickhouse-0.0.5](https://github.com/truecharts/apps/compare/clickhouse-0.0.4...clickhouse-0.0.5) (2022-07-11) - - - -### [clickhouse-0.0.4](https://github.com/truecharts/apps/compare/clickhouse-0.0.3...clickhouse-0.0.4) (2022-07-11) - -#### Chore - -- move icons into the apps folder ([#3139](https://github.com/truecharts/apps/issues/3139)) - - - -### [clickhouse-0.0.3](https://github.com/truecharts/apps/compare/clickhouse-0.0.2...clickhouse-0.0.3) (2022-07-11) - - - -### [clickhouse-0.0.2](https://github.com/truecharts/apps/compare/clickhouse-0.0.1...clickhouse-0.0.2) (2022-07-11) - -#### Chore - -- Auto-update chart README [skip ci] - -#### Fix - -- Fix ClickHouse upstream repo ([#3134](https://github.com/truecharts/apps/issues/3134)) - - - -### clickhouse-0.0.1 (2022-07-10) - -#### Feat - -- Add ClickHouse ([#3060](https://github.com/truecharts/apps/issues/3060)) diff --git a/archive/charts/stable/solr/Chart.yaml b/archive/charts/stable/solr/Chart.yaml deleted file mode 100644 index 55494931054..00000000000 --- a/archive/charts/stable/solr/Chart.yaml +++ /dev/null @@ -1,40 +0,0 @@ -annotations: - artifacthub.io/links: |- - - name: support - url: https://discord.com/invite/tVsPTHWTtr - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: search - truecharts.org/max_helm_version: "3.17" - truecharts.org/min_helm_version: "3.14" - truecharts.org/train: stable -apiVersion: v2 -appVersion: 9.9.0 -dependencies: - - name: common - version: 28.16.6 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: Apache Solr -home: https://truecharts.org/charts/stable/solr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/solr.webp -keywords: - - solr - - apache - - search -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: solr -sources: - - https://gallery.ecr.aws/bitnami/solr - - https://github.com/apache/solr - - https://github.com/truecharts/charts/tree/master/charts/stable/solr -type: application -version: 13.4.6 diff --git a/archive/charts/stable/solr/README.md b/archive/charts/stable/solr/README.md deleted file mode 100644 index 7a7ed34d95b..00000000000 --- a/archive/charts/stable/solr/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/solr) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/solr` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/solr - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/solr/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/solr/ci/basic-values.yaml b/archive/charts/stable/solr/ci/basic-values.yaml deleted file mode 100644 index 5d83b4da308..00000000000 --- a/archive/charts/stable/solr/ci/basic-values.yaml +++ /dev/null @@ -1 +0,0 @@ -solrPassword: "testpassword" diff --git a/archive/charts/stable/solr/icon-small.webp b/archive/charts/stable/solr/icon-small.webp deleted file mode 100644 index d8749aa5e73b520f539af05c4c453570bd1eb56d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmV;p0!RH)Nk&Gn0ssJ4MM6+kP&il$0000G0000V0018V06|PpNY()W00EFJ$+l@* zb#2@Bvu)e9ZQHhO+qV5$wrzVh*1mhM`v(y*0ca23`+HgwGB9G0{97QMGGPB`Id@!s zC21@2dzg&@qbBo{hlUJjqk*1K|TQ{xUCcR$Bd`-0*&OX@e z&FxMiXEY5dH}HHhse4D{kfw2kTdZ$&wywy5u9_<4EZ1#m;mfkN{vXKJw}Y>lY^?yd zO!0Xqm6n;sfBc}sk8^jQgqg_I8NkslIQh`vEFa`)%=Kt&dM&pEwmI5HKNC4Mq$0px zCu{il-xRsiX}yEuf(EDA(`tnzg|Eb9(XzHifjIgCE{%?V_ck;A``6Vr1}l;tkHWV9 zdy%EAc1owrSs(WU^^MN-^8x!RJ3hzKyLLKz5+L}b!L`MJQ@a9AZV-B}h>ha26<|q> z@*)dB@k^Be>V5xqf2up>+bgviDpxV@U!moJeRRvO#E(?gSO9D`7abF!xGYdsSR?DW zi9w3(QeCzyhbJrEvvskebp<8+0BfEGPRsKRSK3vycGy*^(9hw7vfI;IuT^&7ekqQ5 z)u7Nia`d!fx9dX3o;Sxr)T73A9;D)Xrn|Q}oX6a}(%A+m^XzpsVEWa>{-yv{P&gp8 z000260|1=?Dj)zL00ICsC9$DR7s%bYT6hC^a39eVk8rli90MYkcmV$UT>mxp!~gGK z*!Gqz#q9%~(q<(Y0#WlZz(xM3^P8#pGekuuB=h~00020Mq6?K diff --git a/archive/charts/stable/solr/icon.webp b/archive/charts/stable/solr/icon.webp deleted file mode 100644 index 14e1c603dd8d4a827dd84b6ed61a660a0e8019ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4500 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

cMZ4+QY^`{(|b^ zQU*>+stLDU1;F(_b%sQKs_6nB1yVi^H`$~ghfjR^0X8bt{0Z^8 zL5zXKMK+oSCv$ztkHJ$Z=S^Tm)W5XfV598s2YUMQAW$#mR5%BW@b5n035Q~5;b+5# z%-yiVNI7~I_@{wiS-*jKxq~JHH~P>Icvz{Y_#WWzi+y?)SR&{4z|T=nd3)e|MW<`w z#}uJ^0M?iE<%T%W$wg!vFu>Cbz;rpchNY=O-vF#D=R=c|z}Bb>^#x8;^-xd*G(R<`A6*MDqqIY{jR5b<^%D3!M^aXwt5Seo zvw`zVUm4N=p^vwk*cRO=uk~U8dk2=5RN?Vc0DDTi8xJhJz01VIj7kNOPwc!V`pWw_ z3&ggq`7MsMsDs=$!TI}Cpy>O4obN3kBVXCL9Vd^G?M{aysX)fan5Vt%~OnN#N!p-9`w$L!9pA6H)fr;R=Bu=_UoS$4VQ zj%6qpnvhcpdZY?(e;~p0C{YFo_Q1&9H|pn(uTcMEYu@2u+pbGS%Ws3M~qrp@wMs!@wZSHaF9Mk z`63Zjids>RxmC&{h3Wr!$~Ni)cI4;&A2l>FSn8~Cj&1Y_gE=s^myx_0^Bb^-LQYpq z(vnpY3g+_=Xp&uBJpB(JKmh*0I1jz$ZjiPbQR7S7m!DUr0NzjOyzCT~$UWOp?E!Mn ztcs*s>!CCMH%@Q@q`ySwh9#h?6&T!Qk+&6BGSY%kkpl)`oPP?YjAunrNifl4;cKn_ zgVP0;;)>#lHyYFp<(PmrXkWbP^HXo*^?i-}vF|BA(EB06%Fg~;{w%BJYxLwG$)Ca# zKi%=4L1Xm+e!KU31RuLMAXoPM65a7uzxe5S;BG3t8oh!!phG3xzxney2F3qh+q^Nm z;=W|=negP?>`IsQCM*MvTv;sraI5d+N@S%VUuJIT&VyWDDzEnzExgE;-bQH;f-&3n zFTaeYp?qR>Jk@~a^YC&nXUEFIKRdcwapvJGjVe5^I0d;!{1@K~$)64}JSTRZrPEhXmb(cNMNQ z{!$E*lEQ()oNX*+?%p2~De#wB@H@g^-J${y&Oxq^(F@EK_jh*EH;5+;r2t*=|M)Pe zG@z}`(ViZiWLb{X^>Fzpd=h!(uo`c=%pP-w2VI&8UQOkvyAiV1!tM84!vABjG+@0t zUKb|5YE6&Wsi!)By&Q^r`5tW5jBxGrbyB`z35Fk-bEvYN!7f~u^BHM!n`2+j;FkLf z`HE7?dnJ><_i*q3^rg}rrG3o^tmq2S4=H-<#_Z7(NhGbAEANnrTIA{ew>1N3&G&~G zk=k8ATQ3ofKbN7lsK-tyH;G&D#P{XNd8_a9%(#tDD^4xsiV(X30a~|c+PXmXE0N6+ z<9p^qWd2y~Iqv+%NxkK4KF3_9ZtM70oT}zUm2zMH>HT{{MHZCb!^_vH81a4{l~qxe mZYD0`YHZ2jed0000{SmUJt diff --git a/archive/charts/stable/solr/templates/NOTES.txt b/archive/charts/stable/solr/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/stable/solr/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/stable/solr/templates/common.yaml b/archive/charts/stable/solr/templates/common.yaml deleted file mode 100644 index 992373e7501..00000000000 --- a/archive/charts/stable/solr/templates/common.yaml +++ /dev/null @@ -1,2 +0,0 @@ - -{{ include "tc.v1.common.loader.all" . }} diff --git a/archive/charts/stable/solr/values.yaml b/archive/charts/stable/solr/values.yaml deleted file mode 100644 index 1f7741ab951..00000000000 --- a/archive/charts/stable/solr/values.yaml +++ /dev/null @@ -1,106 +0,0 @@ -image: - repository: public.ecr.aws/bitnami/solr - pullPolicy: IfNotPresent - tag: 9.9.0@sha256:bb2a99b46bfecf5cb31acf238760ad9c48cc45580621d5038a3de17529616faa - -workload: - main: - replicas: 1 - podSpec: - containers: - main: - env: - SOLR_CORES: "{{ .Values.solrCores }}" - SOLR_ENABLE_AUTHENTICATION: "{{ .Values.solrEnableAuthentication }}" - SOLR_ADMIN_USERNAME: "{{ .Values.solrUsername }}" - SOLR_OPTS: "{{ .Values.solrOpts }}" - SOLR_ADMIN_PASSWORD: "{{ .Values.password }}" - # -- Probe configuration - # -- [[ref]](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) - # @default -- See below - probes: - # -- Liveness probe configuration - # @default -- See below - liveness: - # -- Enable the liveness probe - enabled: true - # -- Set this to `true` if you wish to specify your own livenessProbe - custom: true - # -- The spec field contains the values for the default livenessProbe. - # If you selected `custom: true`, this field holds the definition of the livenessProbe. - # @default -- See below - spec: - exec: - command: - - /bin/bash - - -ec - - | - if [ "$SOLR_ENABLE_AUTHENTICATION" == "yes" ]; then - until curl --fail --user "${SOLR_ADMIN_USERNAME}":"${SOLR_ADMIN_PASSWORD}" localhost:8983/solr/"${SOLR_CORES}"/admin/ping; do sleep 2; done - else - until curl --fail localhost:8983/solr/"${SOLR_CORES}"/admin/ping; do sleep 2; done - fi; - # -- Redainess probe configuration - # @default -- See below - readiness: - # -- Enable the readiness probe - enabled: true - # -- Set this to `true` if you wish to specify your own readinessProbe - custom: true - # -- The spec field contains the values for the default readinessProbe. - # If you selected `custom: true`, this field holds the definition of the readinessProbe. - # @default -- See below - spec: - exec: - command: - - /bin/bash - - -ec - - | - if [ "$SOLR_ENABLE_AUTHENTICATION" == "yes" ]; then - until curl --fail --user "${SOLR_ADMIN_USERNAME}":"${SOLR_ADMIN_PASSWORD}" localhost:8983/solr/"${SOLR_CORES}"/admin/ping; do sleep 2; done - else - until curl --fail localhost:8983/solr/"${SOLR_CORES}"/admin/ping; do sleep 2; done - fi; - # -- Startup probe configuration - # @default -- See below - startup: - # -- Enable the startup probe - enabled: true - custom: true - # -- The spec field contains the values for the default livenessProbe. - # If you selected `custom: true`, this field holds the definition of the livenessProbe. - # @default -- See below - spec: - exec: - command: - - /bin/bash - - -ec - - | - if [ "$SOLR_ENABLE_AUTHENTICATION" == "yes" ]; then - until curl --fail --user "${SOLR_ADMIN_USERNAME}":"${SOLR_ADMIN_PASSWORD}" localhost:8983/solr/"${SOLR_CORES}"/admin/ping; do sleep 2; done - else - until curl --fail localhost:8983/solr/"${SOLR_CORES}"/admin/ping; do sleep 2; done - fi; -securityContext: - container: - runAsNonRoot: false - readOnlyRootFilesystem: false - runAsUser: 1001 - runAsGroup: 0 -service: - main: - ports: - main: - port: 8983 - targetPort: 8983 -persistence: - db: - enabled: true - mountPath: "/bitnami/solr" -# Currently only single core is supported, with multiple cores, probes will fail. -solrCores: "testcore" -solrEnableAuthentication: "yes" -solrUsername: "test" -# Used to pass a comma separated list of optional options like '-XX:G1HeapRegionSize=8m' -solrOpts: "" -password: "PLACEHOLDERPASSWORD" diff --git a/archive/charts/stable/youtransfer/.helmignore b/archive/charts/stable/youtransfer/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/stable/youtransfer/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/stable/youtransfer/CHANGELOG.md b/archive/charts/stable/youtransfer/CHANGELOG.md deleted file mode 100644 index 20b9c6b4ff4..00000000000 --- a/archive/charts/stable/youtransfer/CHANGELOG.md +++ /dev/null @@ -1,512 +0,0 @@ ---- -title: Changelog -pagefind: false ---- - -## [youtransfer-1.0.0](https://github.com/truecharts/charts/compare/youtransfer-0.0.34...youtransfer-1.0.0) (2022-11-10) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Major Change to GUI -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [youtransfer-0.0.37](https://github.com/truecharts/charts/compare/youtransfer-0.0.34...youtransfer-0.0.37) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [youtransfer-0.0.36](https://github.com/truecharts/charts/compare/youtransfer-0.0.34...youtransfer-0.0.36) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [youtransfer-0.0.36](https://github.com/truecharts/charts/compare/youtransfer-0.0.34...youtransfer-0.0.36) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [youtransfer-0.0.36](https://github.com/truecharts/charts/compare/youtransfer-0.0.34...youtransfer-0.0.36) (2022-11-08) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [youtransfer-0.0.35](https://github.com/truecharts/charts/compare/youtransfer-0.0.34...youtransfer-0.0.35) (2022-11-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [youtransfer-0.0.35](https://github.com/truecharts/charts/compare/youtransfer-0.0.34...youtransfer-0.0.35) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) - -## [youtransfer-0.0.34](https://github.com/truecharts/charts/compare/youtransfer-0.0.33...youtransfer-0.0.34) (2022-11-06) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) - -## [youtransfer-0.0.33](https://github.com/truecharts/charts/compare/youtransfer-0.0.32...youtransfer-0.0.33) (2022-11-05) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308)) - -## [youtransfer-0.0.32](https://github.com/truecharts/charts/compare/youtransfer-0.0.31...youtransfer-0.0.32) (2022-11-02) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)) - -## [youtransfer-0.0.31](https://github.com/truecharts/charts/compare/youtransfer-0.0.30...youtransfer-0.0.31) (2022-10-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) - -## [youtransfer-0.0.30](https://github.com/truecharts/charts/compare/youtransfer-0.0.29...youtransfer-0.0.30) (2022-10-19) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) - -## [youtransfer-0.0.29](https://github.com/truecharts/charts/compare/youtransfer-0.0.28...youtransfer-0.0.29) (2022-10-12) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) - -## [youtransfer-0.0.28](https://github.com/truecharts/charts/compare/youtransfer-0.0.27...youtransfer-0.0.28) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major - -## [youtransfer-0.0.28](https://github.com/truecharts/charts/compare/youtransfer-0.0.27...youtransfer-0.0.28) (2022-10-07) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major - -## [youtransfer-0.0.27](https://github.com/truecharts/charts/compare/youtransfer-0.0.26...youtransfer-0.0.27) (2022-10-05) - -### Chore - -- Auto-update chart README [skip ci] -- split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) -- update helm general non-major - -## [youtransfer-0.0.26](https://github.com/truecharts/charts/compare/youtransfer-0.0.25...youtransfer-0.0.26) (2022-09-27) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3918](https://github.com/truecharts/charts/issues/3918)) - -## [youtransfer-0.0.25](https://github.com/truecharts/charts/compare/youtransfer-0.0.24...youtransfer-0.0.25) (2022-09-25) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3898](https://github.com/truecharts/charts/issues/3898)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-21) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-20) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-19) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-17) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- refactor Services SCALE GUI -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-18) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-16) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-15) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.24](https://github.com/truecharts/charts/compare/youtransfer-0.0.23...youtransfer-0.0.24) (2022-09-15) - -### Chore - -- update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) - -## [youtransfer-0.0.23](https://github.com/truecharts/charts/compare/youtransfer-0.0.22...youtransfer-0.0.23) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [youtransfer-0.0.23](https://github.com/truecharts/charts/compare/youtransfer-0.0.22...youtransfer-0.0.23) (2022-09-12) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [youtransfer-0.0.23](https://github.com/truecharts/charts/compare/youtransfer-0.0.22...youtransfer-0.0.23) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [youtransfer-0.0.23](https://github.com/truecharts/charts/compare/youtransfer-0.0.22...youtransfer-0.0.23) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [youtransfer-0.0.23](https://github.com/truecharts/charts/compare/youtransfer-0.0.22...youtransfer-0.0.23) (2022-09-11) - -### Chore - -- Auto-update chart README [skip ci] -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [youtransfer-0.0.23](https://github.com/truecharts/charts/compare/youtransfer-0.0.22...youtransfer-0.0.23) (2022-09-11) - -### Chore - -- add missing descriptions and clean up descriptions for various charts ([#3704](https://github.com/truecharts/charts/issues/3704)) -- update helm general non-major ([#3711](https://github.com/truecharts/charts/issues/3711)) - -## [youtransfer-0.0.22](https://github.com/truecharts/charts/compare/youtransfer-0.0.20...youtransfer-0.0.22) (2022-08-30) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major ([#3639](https://github.com/truecharts/charts/issues/3639)) -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [youtransfer-0.0.21](https://github.com/truecharts/charts/compare/youtransfer-0.0.20...youtransfer-0.0.21) (2022-08-30) - -### Chore - -- update helm chart common to v10.5.5 ([#3626](https://github.com/truecharts/charts/issues/3626)) - -## [youtransfer-0.0.20](https://github.com/truecharts/charts/compare/youtransfer-0.0.19...youtransfer-0.0.20) (2022-08-29) - -### Chore - -- update helm general non-major ([#3619](https://github.com/truecharts/charts/issues/3619)) - -## [youtransfer-0.0.19](https://github.com/truecharts/charts/compare/youtransfer-0.0.17...youtransfer-0.0.19) (2022-08-26) - -### Fix - -- some cleanup ([#3586](https://github.com/truecharts/charts/issues/3586)) - -## [youtransfer-0.0.17](https://github.com/truecharts/charts/compare/youtransfer-0.0.16...youtransfer-0.0.17) (2022-08-23) - -### Chore - -- update helm general non-major helm releases ([#3545](https://github.com/truecharts/charts/issues/3545)) - -## [youtransfer-0.0.16](https://github.com/truecharts/charts/compare/youtransfer-0.0.15...youtransfer-0.0.16) (2022-08-12) - -### Chore - -- add documentation checkbox/section to all SCALE Apps -- update helm general non-major helm releases ([#3456](https://github.com/truecharts/charts/issues/3456)) - -### Fix - -- move extraArgs from .Values.controller to .Values ([#3447](https://github.com/truecharts/charts/issues/3447)) - -## [youtransfer-0.0.15](https://github.com/truecharts/charts/compare/youtransfer-0.0.14...youtransfer-0.0.15) (2022-08-08) - -### Chore - -- update helm general non-major helm releases ([#3376](https://github.com/truecharts/charts/issues/3376)) -- replace questions parts with templates ([#3402](https://github.com/truecharts/charts/issues/3402)) - -## [youtransfer-0.0.14](https://github.com/truecharts/apps/compare/youtransfer-0.0.13...youtransfer-0.0.14) (2022-07-26) - -### Chore - -- update home links ([#3291](https://github.com/truecharts/apps/issues/3291)) -- update helm general non-major helm releases ([#3302](https://github.com/truecharts/apps/issues/3302)) - -## [youtransfer-0.0.13](https://github.com/truecharts/apps/compare/youtransfer-0.0.12...youtransfer-0.0.13) (2022-07-25) - -### Chore - -- update docker general non-major ([#3300](https://github.com/truecharts/apps/issues/3300)) - -### Chore - -- add fake digest to new incubator Apps to fetch digests - -## [youtransfer-0.0.12](https://github.com/truecharts/apps/compare/youtransfer-0.0.11...youtransfer-0.0.12) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [youtransfer-0.0.12](https://github.com/truecharts/apps/compare/youtransfer-0.0.11...youtransfer-0.0.12) (2022-07-23) - -### Chore - -- Auto-update chart README [skip ci] -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [youtransfer-0.0.12](https://github.com/truecharts/apps/compare/youtransfer-0.0.11...youtransfer-0.0.12) (2022-07-23) - -### Chore - -- update helm general non-major helm releases ([#3280](https://github.com/truecharts/apps/issues/3280)) - -## [youtransfer-0.0.11]youtransfer-0.0.11 (2022-07-22) - -### Chore - -- Auto-update chart README [skip ci] -- Auto-update chart README [skip ci] -- Bump all charts to generate config and container references due to huge increase of repository -- Move Dev to incubator and some cleanup - -## [youtransfer-0.0.10]youtransfer-0.0.10 (2022-07-22) - -### Chore - -- Auto-update chart README [skip ci] -- Move Dev to incubator and some cleanup - -## [youtransfer-0.0.10]youtransfer-0.0.10 (2022-07-22) - -### Chore - -- Move Dev to incubator and some cleanup diff --git a/archive/charts/stable/youtransfer/Chart.yaml b/archive/charts/stable/youtransfer/Chart.yaml deleted file mode 100644 index e447048742c..00000000000 --- a/archive/charts/stable/youtransfer/Chart.yaml +++ /dev/null @@ -1,40 +0,0 @@ -annotations: - artifacthub.io/links: |- - - name: support - url: https://discord.com/invite/tVsPTHWTtr - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: Cloud - truecharts.org/max_helm_version: "3.17" - truecharts.org/min_helm_version: "3.14" - truecharts.org/train: stable -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 28.12.4 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: true -description: YouTransfer is a simple but elegant self-hosted file transfer sharing solution. -home: https://truecharts.org/charts/stable/youtransfer -icon: https://truecharts.org/img/hotlink-ok/chart-icons/youtransfer.webp -keywords: - - youtransfer - - Cloud - - Tools-Utilities -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: youtransfer -sources: - - https://github.com/YouTransfer/YouTransfer - - https://github.com/truecharts/charts/tree/master/charts/stable/youtransfer - - https://hub.docker.com/r/remie/youtransfer -type: application -version: 10.0.4 diff --git a/archive/charts/stable/youtransfer/README.md b/archive/charts/stable/youtransfer/README.md deleted file mode 100644 index 205ed6fee92..00000000000 --- a/archive/charts/stable/youtransfer/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/youtransfer) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/youtransfer` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/stable/youtransfer - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/stable/youtransfer/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/stable/youtransfer/icon-small.webp b/archive/charts/stable/youtransfer/icon-small.webp deleted file mode 100644 index 16617dd70f369f22e3a3d1467ad454684d988e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmVDMy~x5W6;OpndpgeERsV zB=)qWz08U^swq0dhTsAm}p)z#upb<-O4ZZFyrK1t4@qh!ZuEA68Mmi04HK_L;wH) diff --git a/archive/charts/stable/youtransfer/icon.webp b/archive/charts/stable/youtransfer/icon.webp deleted file mode 100644 index 72c189ec2897f865d2612988195d7151e276f75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2516 zcmV;_2`lzeNk&G@2><|BMM6+kP&gpK2><}FD*&AVDwY7206ujvkVmAWA)z`y$N-QI ziDxGPz6YLS-#OD}CL)M2Z1nn{Rvr2H@bl!PE*tqj-;d$>f!=?^9YDQV{v*+I;(u1V z)hxfD7pi|h?^ypw(66yy>wQxHUE)*w$NUdqPv-yJKjVLg_gMbp$WPV(`u)N`U3cRP z+H4RP^_xG1@eQ4_&tJ!{P{J^ICwM2o@;@*CyB)nPZNxwWM`BYE)~y8Ncw>T*+?

>(jE%A)U{Q~-id0O>ktaco6rD*TDT81Pdh8gSXwt8&jE0`O2WK*P0=Gxz3U zFY0q$s)`(qYez|qv?TtpH}JkJ0092n6+jF9L~I|1^Z03}1nvhx_&m0AXTZnsWmD9= z|G&&x(XLha)MXW$AVG0IUWpJ{S?+eDw}c>2xNbT5VQ0l|164^4Z5klP;UsJ zPIcw;@m4ORw-=@%FQk+5<9JecE(PYYdha9$HSOMi)SZ^JbRLowL-}LKNVDlyQ;Mas zy_t^u`D(Y&tZXm2epmMObqDoM@r*)wanlppzdiqaU&_qUE`F9s@2|UV>Gkd-+43eD zH-h-m%R(&0arl%Ri0R#ZbVJy_uc$%rH`!7h=J#Wrg@2EJ$K#tchI{PM02W%5PLJNA z&FHH561BrvaOVpNIH-cX|a%}_{L^E5)q5>acg%>j54+7b?+UaWy zmG-S>>@?Ijny8rgWS+z%@6zcfs!It%0w3!xbZzsCHP5@6XEtLv z``t`;?7W{u7F=`U-I~if*AHU%A>B_zo1kH;S+(gTYA|$6nLgC`_tFlu@X=tfJ0g1M-JcRb zJWi=0cq0mhV3oiyIg6y@nEX=($nJ=gLRw>=o{JS+r?+m3Se9O(v~8K{62(gAqkC-B zX@vp7!r7+(OhhoFZ-=;eVvMO(Ph&F>9(kF<_(#rp*sc%y_B!&HvXGK3F%^c&{!dN* z-8NEjxqyqgOHPj?&TG|led|<6HaFqHIjpgndGFH1WkJ{d{pG9_aP4~>2P;$OglP4S zJ~5f1+LA7ZdVOO9QWerGqTT!ZN;0x%q9H%CVE!6zo^}ctWXWujR8=KvmlLb0!97jsBYMmy^A(&NojLygCCEzeG6v%shF5REK7U?&MN3FKn z+CLZ+183jJ;eu~ae?K<7_|x)xgTPihUhDAKcs2zv25(uCrZoPBA9~+Z*;9B(xlh(o>@&& z+p#oobn5U}3n_;Is#*-**n*I%d#sI*R4RG4Nq)C({I`&Kl>HlM+RpQXHYbUL$S83!pwwWq&$kAP0$50 zm#`RY-y<7TUjeU>@If#ezlF%!70*>fbe$jPM5-OFGKz1`Rfa<`A|jhp zTjvSbyd=ZUxIMTBMPE|nHP+HRC!_CA1b7Awk64ge7bpV|;Dm_scCA(%uOY~lDzH61 z+8;b$UKxQPtwVzRfx8(NVGmGSzR&Sy_@Q;Ft6v=zZEa3%xE;*q#>OIDab5iQ^m|RT zSQ%rvj_~g+S+Fx?8dx%@D&NS#C1XXl>?h=xIfc(pT63Ar))mn{A;w7{`aLPay`9Fe z1&7)F<~UkO4GI-nER$7Dqq|XM7uE$oRzR}3NY4UdEiX+r@2nfm5>#~IH<+P^WA}$B zpgD|+^EVO%^h;mY=AL0A+~e6)*#^j5X8?++RIgBNh9JK9C= zFQ2ag^-CgkU&kJFJd3PrhcT3dn#=P_yiZEUX>18#r&Y{rdNsv;`-#mYUX z_;Q8mB=6H;vZZ7iuc3J}S5^_InVN)VAm{2qwu`b5^-e*(4c;khd6RVMnw&_P0J7b( z3%AOLmA1H_IBJp=cJ+yz6}J@J|55C}`;HFkzCg_T!Q%F}Xa>+rLy2`Hg9yBr1hu}} zcB%QE&5ndQ*!}pP79yXHRd@Zv6`V`4moo)wREph&W@}a4mw7ZKo%CF=Ni&Fn{x+H` zlS5Fwqw6bxbP~hbvoap^SWse?kTrA%cRz%Uxg6MiF%&BW*vqcyKHH2fSK(d4@f@gq z$~(!4=>ei)^(0zLVd+4tH<~+@VkESrfPApNa7Qf415*AHZ>83dG_239Tcqg!_1PwT ewn?9eD4bdU@AwRxV4KHI-xn^uL?4mupa1|>NA$!1 diff --git a/archive/charts/stable/youtransfer/templates/NOTES.txt b/archive/charts/stable/youtransfer/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/stable/youtransfer/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/stable/youtransfer/templates/common.yaml b/archive/charts/stable/youtransfer/templates/common.yaml deleted file mode 100644 index 78d963fb168..00000000000 --- a/archive/charts/stable/youtransfer/templates/common.yaml +++ /dev/null @@ -1,2 +0,0 @@ -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.all" . }} diff --git a/archive/charts/stable/youtransfer/values.yaml b/archive/charts/stable/youtransfer/values.yaml deleted file mode 100644 index 97d95407300..00000000000 --- a/archive/charts/stable/youtransfer/values.yaml +++ /dev/null @@ -1,31 +0,0 @@ -image: - pullPolicy: IfNotPresent - repository: docker.io/remie/youtransfer - tag: latest@sha256:997c185ababe175843c9f0336d09d145f3b7f8218a26785181d39470cd64d852 -persistence: - config: - enabled: true - mountPath: /opt/youtransfer/config - hostpath3: - enabled: true - mountPath: /opt/youtransfer/uploads -service: - main: - ports: - main: - port: 5000 - protocol: tcp - targetPort: 5000 - -securityContext: - container: - readOnlyRootFilesystem: false - runAsNonRoot: false - runAsGroup: 0 - runAsUser: 0 -workload: - main: - podSpec: - containers: - main: - env: {} diff --git a/archive/charts/system/cert-manager/.helmignore b/archive/charts/system/cert-manager/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/cert-manager/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/cert-manager/Chart.yaml b/archive/charts/system/cert-manager/Chart.yaml deleted file mode 100644 index 12a07991085..00000000000 --- a/archive/charts/system/cert-manager/Chart.yaml +++ /dev/null @@ -1,45 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.4.10 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: cert-manager - version: v1.17.1 - repository: https://charts.jetstack.io - condition: "" - alias: certmanager - tags: [] - import-values: [] -deprecated: true -description: Cert-Manager is a kubernetes-aware certificate manager -home: https://truecharts.org/charts/system/cert-manager -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cert-manager.webp -keywords: - - cert-manager - - certificates - - security -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: cert-manager -sources: - - https://cert-manager.io/ - - https://github.com/cert-manager - - https://github.com/truecharts/charts/tree/master/charts/system/cert-manager - - https://github.com/truecharts/containers/tree/master/apps/scratch -type: application -version: 6.5.5 diff --git a/archive/charts/system/cert-manager/README.md b/archive/charts/system/cert-manager/README.md deleted file mode 100644 index 2ce726543c7..00000000000 --- a/archive/charts/system/cert-manager/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/cert-manager) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/cert-manager` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/cert-manager - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/system/cert-manager/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/cert-manager/dashboard.json b/archive/charts/system/cert-manager/dashboard.json deleted file mode 100644 index ea3c01f2077..00000000000 --- a/archive/charts/system/cert-manager/dashboard.json +++ /dev/null @@ -1,1254 +0,0 @@ -{ - "_config": { - "certManagerCertExpiryDays": "21", - "certManagerJobLabel": "cert-manager", - "certManagerRunbookURLPattern": "https://github.com/imusmanmalik/cert-manager-mixin/blob/main/RUNBOOK.md#%s", - "dashboards": { - "certmanagerCertificateExpirationTimestampSecondsSelector": "", - "certmanagerCertificateReadyStatusSelector": "", - "certmanagerControllerSyncCallCountSelector": "", - "certmanagerHttpAcmeClientRequestCountSelector": "", - "certmanagerHttpAcmeClientRequestDurationSecondsCountSelector": "", - "certmanagerHttpAcmeClientRequestDurationSecondsSumSelector": "", - "clusterVariableSelector": "", - "containerCPUUsageSecondsTotalSelector": "container=\"cert-manager\"", - "containerCpuCfsPeriodsTotalSelector": "container=\"cert-manager\"", - "containerCpuCfsThrottledPeriodsTotalSelector": "container=\"cert-manager\"", - "containerMemoryUsageBytesSelector": "container=\"cert-manager\"", - "containerNetworkReceiveBytesTotalSelector": "namespace=\"cert-manager\"", - "containerNetworkTransmitBytesTotalSelector": "namespace=\"cert-manager\"", - "containerSelector": "container=\"cert-manager\"", - "defaultSelector": "", - "enableMultiCluster": false, - "kubePodContainerResourceLimitsCpuCoresSelector": "container=\"cert-manager\"", - "kubePodContainerResourceLimitsMemoryBytesSelector": "container=\"cert-manager\"", - "kubePodContainerResourceRequestsCpuCoresSelector": "container=\"cert-manager\"", - "kubePodContainerResourceRequestsMemoryBytesSelector": "container=\"cert-manager\"", - "namespaceSelector": "namespace=\"cert-manager\"" - }, - "grafanaExternalUrl": "https://grafana.example.com" - }, - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "", - "editable": true, - "gnetId": null, - "graphTooltip": 1, - "id": 59, - "iteration": 1616445892702, - "links": [], - "panels": [ - { - "datasource": "$datasource", - "description": "The number of certificates in the ready state.", - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 1 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "True" - }, - "properties": [ - { - "id": "thresholds", - "value": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - } - ] - } - ] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "id": 2, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "7.4.5", - "targets": [ - { - "expr": "sum by (condition) (certmanager_certificate_ready_status{ })", - "interval": "", - "legendFormat": "{{condition }}", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Certificates Ready", - "type": "stat" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "custom": {}, - "decimals": 1, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "#EAB839", - "value": 604800 - }, - { - "color": "green", - "value": 1209600 - } - ] - }, - "unit": "dtdurations" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "id": 4, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "text": {}, - "textMode": "auto" - }, - "pluginVersion": "7.4.5", - "targets": [ - { - "expr": "min(certmanager_certificate_expiration_timestamp_seconds{ } > 0) - time()", - "hide": false, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - }, - { - "expr": "vector(1250000)", - "hide": true, - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "B" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Soonest Cert Expiry", - "type": "stat" - }, - { - "datasource": "$datasource", - "description": "Status of the certificates. Values are True, False or Unknown.", - "fieldConfig": { - "defaults": { - "custom": { - "align": null, - "filterable": false - }, - "mappings": [ - { - "from": "", - "id": 0, - "operator": "", - "text": "Yes", - "to": "", - "type": 1, - "value": "" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "none" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Ready Status" - }, - "properties": [ - { - "id": "custom.width", - "value": 100 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Valid Until" - }, - "properties": [ - { - "id": "unit", - "value": "dateTimeAsIso" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Valid Until" - }, - "properties": [ - { - "id": "unit", - "value": "dateTimeAsIso" - } - ] - } - ] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 9, - "options": { - "showHeader": true, - "sortBy": [ - { - "desc": false, - "displayName": "Valid Until" - } - ] - }, - "pluginVersion": "7.4.5", - "targets": [ - { - "expr": "label_join(avg by (name, namespace, condition, exported_namespace) (certmanager_certificate_ready_status{ } == 1), \"namespaced_name\", \"-\", \"namespace\", \"exported_namespace\", \"name\")", - "format": "table", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "A" - }, - { - "expr": "label_join(avg by (name, namespace, exported_namespace) (certmanager_certificate_expiration_timestamp_seconds{ }) * 1000, \"namespaced_name\", \"-\", \"namespace\", \"exported_namespace\", \"name\")", - "format": "table", - "instant": true, - "interval": "", - "legendFormat": "", - "refId": "B" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Certificates", - "transformations": [ - { - "id": "seriesToColumns", - "options": { - "byField": "namespaced_name" - } - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "Time 1": true, - "Time 2": true, - "Value #A": true, - "exported_namespace": false, - "exported_namespace 1": false, - "exported_namespace 2": true, - "name 1": true, - "namespace 2": true, - "namespaced_name": true - }, - "indexByName": { - "Time 1": 8, - "Time 2": 10, - "Value #A": 6, - "Value #B": 5, - "condition": 4, - "exported_namespace 1": 1, - "exported_namespace 2": 11, - "name 1": 9, - "name 2": 3, - "namespace": 0, - "namespace 1": 2, - "namespaced_name": 7 - }, - "renameByName": { - "Time 1": "", - "Value #B": "Valid Until", - "condition": "Ready Status", - "exported_namespace": "Certificate Namespace", - "exported_namespace 1": "Certificate Namespace", - "exported_namespace 2": "", - "name": "Certificate", - "name 2": "Certificate", - "namespace": "Namespace", - "namespace 1": "Namespace", - "namespaced_name": "" - } - } - } - ], - "type": "table" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "The rate of controller sync requests.", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 7, - "interval": "20s", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "maxDataPoints": 250, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (controller) (\n rate(certmanager_controller_sync_call_count{ }[$__rate_interval ])\n)", - "interval": "", - "legendFormat": "{{controller }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Controller Sync Requests/sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Rate of requests to ACME provider.", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 16 - }, - "hiddenSeries": false, - "id": 6, - "interval": "20s", - "legend": { - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "maxDataPoints": 250, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (method, path, status) (\n rate(certmanager_http_acme_client_request_count{ }[$__rate_interval ])\n)", - "interval": "", - "legendFormat": "{{method }} {{path }} {{status }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "ACME HTTP Requests/sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average duration of requests to ACME provider. ", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 16 - }, - "hiddenSeries": false, - "id": 10, - "interval": "30s", - "legend": { - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "maxDataPoints": 250, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (method, path, status) (rate(certmanager_http_acme_client_request_duration_seconds_sum{ }[$__rate_interval ]))\n/\nsum by (method, path, status) (rate(certmanager_http_acme_client_request_duration_seconds_count{ }[$__rate_interval ]))", - "interval": "", - "legendFormat": "{{method }} {{path }} {{status }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "ACME HTTP Request avg duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "max": "dark-yellow" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "CPU Usage and limits, as percent of a vCPU core. ", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 6, - "x": 0, - "y": 24 - }, - "hiddenSeries": false, - "id": 12, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxDataPoints": 250, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "CPU", - "fill": 1, - "fillGradient": 5 - }, - { - "alias": "/Request.*/", - "color": "#FF9830", - "dashes": true - }, - { - "alias": "/Limit.*/", - "color": "#F2495C", - "dashes": true - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (pod) (rate(container_cpu_usage_seconds_total{container=\"cert-manager\" }[$__rate_interval ]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "CPU {{pod }}", - "refId": "A" - }, - { - "expr": "avg by (pod) (kube_pod_container_resource_limits_cpu_cores{container=\"cert-manager\" })", - "format": "time_series", - "hide": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "Limit {{pod }}", - "refId": "B" - }, - { - "expr": "avg by (pod) (kube_pod_container_resource_requests_cpu_cores{container=\"cert-manager\" })", - "format": "time_series", - "hide": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "Request {{pod }}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "max": "dark-yellow" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Percent of the time that the CPU is being throttled. Higher is badderer. ", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 6, - "x": 6, - "y": 24 - }, - "hiddenSeries": false, - "id": 14, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxDataPoints": 250, - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/external-dns.*/", - "fill": 1, - "fillGradient": 5 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (pod) (\n rate(container_cpu_cfs_throttled_periods_total{container=\"cert-manager\" }[$__rate_interval ])\n /\n rate(container_cpu_cfs_periods_total{container=\"cert-manager\" }[$__rate_interval ])\n)", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{pod }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Throttling", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "max": "dark-yellow" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Memory utilisation and limits.", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 24 - }, - "hiddenSeries": false, - "id": 16, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxDataPoints": 250, - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "Memory", - "fill": 1, - "fillGradient": 5 - }, - { - "alias": "Request", - "color": "#FF9830", - "dashes": true - }, - { - "alias": "Limit", - "color": "#F2495C", - "dashes": true - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (pod) (container_memory_usage_bytes{container=\"cert-manager\" })", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "Memory {{pod }}", - "refId": "A" - }, - { - "expr": "avg by (pod) (kube_pod_container_resource_limits_memory_bytes{container=\"cert-manager\" })", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Limit {{pod }}", - "refId": "B" - }, - { - "expr": "avg by (pod) (kube_pod_container_resource_requests_memory_bytes{container=\"cert-manager\" })", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Request {{pod }}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "max": "dark-yellow" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Network ingress/egress.", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 5, - "gridPos": { - "h": 8, - "w": 6, - "x": 18, - "y": 24 - }, - "hiddenSeries": false, - "id": 18, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.4.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "transmit", - "transform": "negative-Y" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(\n sum without (interface) (\n rate(container_network_receive_bytes_total{namespace=\"cert-manager\" }[$__rate_interval ])\n )\n)", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "receive", - "refId": "A" - }, - { - "expr": "avg(\n sum without (interface) (\n rate(container_network_transmit_bytes_total{namespace=\"cert-manager\" }[$__rate_interval ])\n )\n)", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "transmit", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "1m", - "schemaVersion": 27, - "style": "dark", - "tags": ["cert-manager", "infra"], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "prometheus", - "value": "prometheus" - }, - "description": null, - "error": null, - "hide": 0, - "includeAll": false, - "label": "Data Source", - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "current": { - "selected": false, - "text": "", - "value": "" - }, - "datasource": { - "type": "prometheus", - "uid": "$datasource" - }, - "definition": "", - "hide": 2, - "includeAll": false, - "multi": false, - "name": "cluster", - "options": [], - "query": { - "query": "label_values(certmanager_certificate_ready_status{ }, cluster)", - "refId": "Prometheus-cluster-Variable-Query" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-24h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Cert Manager", - "uid": "TvuRo2iMk", - "version": 1 -} diff --git a/archive/charts/system/cert-manager/icon-small.webp b/archive/charts/system/cert-manager/icon-small.webp deleted file mode 100644 index 2419286668a472deda10f8a8a32430755744b505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmV-21I_$WNk&F00{{S5MM6+kP&il$0000G0000V0018V06|PpNaFwi00Dp_+qP+I zecNux3%_mKww3+N{w;81WVX%Fwyo!T&+b7)OaM4)xur!r3j|J4X&%~O8E`4&cpb{1 zgP!vmPY_QwamV)UZt1%16RtP&|aT%=$j(Q#Z`V7EbvHG7!qat|6JaBnR0!xFC zf=quK8~@CLFe7jT09H^qARqz&0FVj*odGH!03ZMY05m1A0(8m|?S4US9iWhho&xLx z&;z8){IB~TN~{1zkn|CNc19Q%YjuH(`}1#|&!#XWfBGWqVLPpyTv7Zmcn@xJ z8dJ3H*cl5xX#fEE-FRW|b?|49gM9iX%yTY86BqSgbWqOTZfG>VhzL(|Wo^{R{x%&x z6+}M}aC&?=9$`?dXFaj{MU03 zT#Vuig@09H_StX1RYH9iauRgwc=b#9vjl1W!GLc0A}FTeNriZ0kRIny43kV&2SAO< zIs>ZMg?%4HjBGb=;Ux(bS{@=R3>Pf%8N_naVCb(wCh4PDd!XxxJClRE>F>!2M(N{s z`9&@!R)Cg3K~jlXS!bt~EN{2h8zCM8z_&o6$%}k}>pBrQ0y29F+8o}(t{6P3WkfWz zWI^R#*BXI8l_$83mIt0md&ywV84sf1&3TTuGs;@|OH@md&cYc4@t0+HjbeS=AR7TJ zuS@^ImnOA#9nQ>ix$q(5VZg4{qv8wGBZ8|{haIgUl@*p)fOcg3q%@_#!f3qAmLwJ9 z3BZU9sAD7##4x+6YGH0K5wWFTM-N#8j3{MH63dlr63EB=hw2?u{!o?$`u;sdbsrMH wjwK>l6B8s&0O75>RjqGSL1(!fgr2nQvM$O7u|dMSwk-T06z>0VBYoZg0Iig0Hvj+t diff --git a/archive/charts/system/cert-manager/icon.webp b/archive/charts/system/cert-manager/icon.webp deleted file mode 100644 index 34f2751a93e56b996dab50da861b1d143e9b167e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6122 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 - {{ .Files.Get "dashboard.json" | indent 8 }} - -certmanager: - dns01RecursiveNameservers: "1.1.1.1:53,1.0.0.1:53" - dns01RecursiveNameserversOnly: false - installCRDs: true - enableCertificateOwnerRef: true - prometheus: - enabled: true - servicemonitor: - enabled: true diff --git a/archive/charts/system/cloudnative-pg/.helmignore b/archive/charts/system/cloudnative-pg/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/cloudnative-pg/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/cloudnative-pg/Chart.yaml b/archive/charts/system/cloudnative-pg/Chart.yaml deleted file mode 100644 index f8ded905b92..00000000000 --- a/archive/charts/system/cloudnative-pg/Chart.yaml +++ /dev/null @@ -1,45 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: cloudnative-pg - version: 0.22.0 - repository: https://cloudnative-pg.github.io/charts - condition: "" - alias: cloudnative-pg - tags: [] - import-values: [] -deprecated: false -description: CloudNativePG is a clustered postgresql database operator -home: https://truecharts.org/charts/system/cloudnative-pg -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cloudnative-pg.webp -keywords: - - database - - cloudnative-pg - - cnpg -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: cloudnative-pg -sources: - - https://cloudnative-pg.io/ - - https://github.com/cloudnative-pg - - https://github.com/truecharts/charts/tree/master/charts/system/cloudnative-pg - - https://github.com/truecharts/containers/tree/master/apps/alpine -type: application -version: 8.2.0 diff --git a/archive/charts/system/cloudnative-pg/README.md b/archive/charts/system/cloudnative-pg/README.md deleted file mode 100644 index 844e8de29e2..00000000000 --- a/archive/charts/system/cloudnative-pg/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/cloudnative-pg) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/cloudnative-pg` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/cloudnative-pg - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/cloudnative-pg/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/cloudnative-pg/icon-small.webp b/archive/charts/system/cloudnative-pg/icon-small.webp deleted file mode 100644 index ca49efe294de9cd8d235d270c55dd4a67cd29622..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000V0018V06|PpNQ?mh00EFJ$+l@* z^V&9_ZM$dNwr$(?>)Ez#+qUiZ_C9Mg_MB_4Pl$*KAknM*@+Y59mZrd5p_Hv!3c1dA z0#57rSNy(g!`_hDMd!b8{j-YJWSIOMqcH$x`$*}34Q-S9!SEGnrkQ_-FG%gpU}6_3 z^tqXPUJ@02ZUn_ND74iZ6Qgt}>63{AI{xRN`L*5%?yb&P=-OEVJ}@dsO8=vU&0c*O z#7I-&a-z>BrkvpQ(hWAG&HWGHdsQwk+<#x(>kgFVnHlY9Z-Bj&*k|wUnM5?(apR)i z2LP){-0M*D26%Kv0vIeka{vpbXsAvA$_Y`5`x0wO4~7Asveo4(fPYNyrKx*>MZHgO zV};4F9>FT|6LzjsRy1>t`ySsO;{1WYl7b429T^ojhK>sF@_oVE_+7wS$2hQmMI+XbZ0DXxjg6~R$1XZqKjdEY%{2WhPZr#3p=kERM z8K}v_$4{TXeDnTe8}h#QJf4P diff --git a/archive/charts/system/cloudnative-pg/icon.webp b/archive/charts/system/cloudnative-pg/icon.webp deleted file mode 100644 index 1bbacb6c508fbc14d9732d238e500d51afc2ce33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3296 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 diff --git a/archive/charts/system/cloudnative-pg/templates/NOTES.txt b/archive/charts/system/cloudnative-pg/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/cloudnative-pg/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/cloudnative-pg/templates/common.yaml b/archive/charts/system/cloudnative-pg/templates/common.yaml deleted file mode 100644 index eadf5a1c2c5..00000000000 --- a/archive/charts/system/cloudnative-pg/templates/common.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{- if or .Values.credentials .Values.credentialsList }} -{{- fail "Don't try to add credenatials to CloudNative-PG, add them to the individual charts using CloudNative-PG" }} -{{- end }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/cloudnative-pg/values.yaml b/archive/charts/system/cloudnative-pg/values.yaml deleted file mode 100644 index 2c75ce41348..00000000000 --- a/archive/charts/system/cloudnative-pg/values.yaml +++ /dev/null @@ -1,37 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/scratch - pullPolicy: IfNotPresent - tag: latest - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -cloudnative-pg: - monitoring: - # -- Specifies whether the monitoring should be enabled. Requires Prometheus Operator CRDs. - podMonitorEnabled: true - grafanaDashboard: - create: true - # -- Allows overriding the namespace where the ConfigMap will be created, defaulting to the same one as the Release. - namespace: "" - # -- The name of the ConfigMap containing the dashboard. - configMapName: "cnpg-grafana-dashboard" - # -- Label that ConfigMaps should have to be loaded as dashboards. - sidecarLabel: "grafana_dashboard" - # -- Label value that ConfigMaps should have to be loaded as dashboards. - sidecarLabelValue: "1" diff --git a/archive/charts/system/csi-driver-nfs/.helmignore b/archive/charts/system/csi-driver-nfs/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/csi-driver-nfs/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/csi-driver-nfs/Chart.yaml b/archive/charts/system/csi-driver-nfs/Chart.yaml deleted file mode 100644 index 85456e7452c..00000000000 --- a/archive/charts/system/csi-driver-nfs/Chart.yaml +++ /dev/null @@ -1,45 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/SCALE-support: "false" - truecharts.org/category: CSI - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: csi-driver-nfs - version: v4.9.0 - repository: https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts/ - condition: "" - alias: csi-driver-nfs - tags: [] - import-values: [] -deprecated: false -description: csi-driver-nfs is a nfs CSI driver for kubernetes -home: https://truecharts.org/charts/system/csi-driver-nfs -icon: https://truecharts.org/img/hotlink-ok/chart-icons/csi-driver-nfs.webp -keywords: - - csi-driver-nfs - - backup -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: csi-driver-nfs -sources: - - https://cert-manager.io/ - - https://github.com/cert-manager - - https://github.com/truecharts/charts/tree/master/charts/system/csi-driver-nfs - - https://github.com/truecharts/containers/tree/master/apps/alpine -type: application -version: 5.2.0 diff --git a/archive/charts/system/csi-driver-nfs/README.md b/archive/charts/system/csi-driver-nfs/README.md deleted file mode 100644 index c4f60014a9d..00000000000 --- a/archive/charts/system/csi-driver-nfs/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/csi-driver-nfs) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/csi-driver-nfs` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/csi-driver-nfs - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/csi-driver-nfs/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/csi-driver-nfs/icon-small.webp b/archive/charts/system/csi-driver-nfs/icon-small.webp deleted file mode 100644 index 768d6da945ff2b7fc79cec6838063866d51a472a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NBANk&FM0ssJ4MM6+kP&gno0ssIo3ILq}Dj)zL00ICsC9nc?$`QcctHK$& z<^f&*&302{pV#WWc8a7BiuumKUye0JF?D8o=*)Qo80XKwuB{<6swFXsFI=A!hTloGrxcm_ zJKhVgRRFZvClla#XA*^%wUMw2`RE3^=yU8o(F&uSrv16mL?`dA_>+<>y%1w|_N&|K zO_g!ae{M4z3Av}!Kt_fU_wd5QvD;-XF0jA0KWWP_RLz=BiWVm~8;(b>!Af$DTj$h$ zJWEIT!vaDIp3HwSeK#d_5l1ZN43SBIK0e3M6&~mH?%x+nWfuN1U^ZLuINcCrHX11+ z7YKhFc5D38tdEwD;WrWv7V9t0!#ldjAiHAj!CEO&va(@iCV{1`^qY#_zX`Uru~q!i zHmY!4kxs|DF|aY0GmJ$zU^Cy*&~u{llOoA5E~xvCytYHXva5stLHZ*oIm?2(cEC*g WM!B%Rqqrhjx#}uSB+HTa0000d>KiHm diff --git a/archive/charts/system/csi-driver-nfs/icon.webp b/archive/charts/system/csi-driver-nfs/icon.webp deleted file mode 100644 index 2bc3d3d61777f091e3cbb8a1a45186945063df21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2856 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 G0002XYIp1a diff --git a/archive/charts/system/csi-driver-nfs/templates/NOTES.txt b/archive/charts/system/csi-driver-nfs/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/csi-driver-nfs/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/csi-driver-nfs/templates/common.yaml b/archive/charts/system/csi-driver-nfs/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/csi-driver-nfs/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/csi-driver-nfs/values.yaml b/archive/charts/system/csi-driver-nfs/values.yaml deleted file mode 100644 index 6f08c856fdc..00000000000 --- a/archive/charts/system/csi-driver-nfs/values.yaml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullPolicy: IfNotPresent - repository: oci.trueforge.org/tccr/alpine - tag: latest@sha256:ade0065e19edaa4f6903d464ee70605111a48394536deb94f31b661264704558 -manifestManager: - enabled: false -operator: - register: true -portal: - open: - enabled: false -service: - main: - enabled: false - ports: - main: - enabled: false -workload: - main: - enabled: false diff --git a/archive/charts/system/csi-driver-smb/.helmignore b/archive/charts/system/csi-driver-smb/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/csi-driver-smb/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/csi-driver-smb/Chart.yaml b/archive/charts/system/csi-driver-smb/Chart.yaml deleted file mode 100644 index 1d07ba5bcee..00000000000 --- a/archive/charts/system/csi-driver-smb/Chart.yaml +++ /dev/null @@ -1,45 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/SCALE-support: "false" - truecharts.org/category: CSI - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: csi-driver-smb - version: v1.16.0 - repository: https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts - condition: "" - alias: csi-driver-smb - tags: [] - import-values: [] -deprecated: false -description: csi-driver-smb is a smb CSI driver for kubernetes -home: https://truecharts.org/charts/system/csi-driver-smb -icon: https://truecharts.org/img/hotlink-ok/chart-icons/csi-driver-smb.webp -keywords: - - csi-driver-smb - - backup -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: csi-driver-smb -sources: - - https://cert-manager.io/ - - https://github.com/cert-manager - - https://github.com/truecharts/charts/tree/master/charts/system/csi-driver-smb - - https://github.com/truecharts/containers/tree/master/apps/alpine -type: application -version: 5.2.0 diff --git a/archive/charts/system/csi-driver-smb/README.md b/archive/charts/system/csi-driver-smb/README.md deleted file mode 100644 index 828db1346f4..00000000000 --- a/archive/charts/system/csi-driver-smb/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/csi-driver-smb) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/csi-driver-smb` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/csi-driver-smb - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/csi-driver-smb/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/csi-driver-smb/icon-small.webp b/archive/charts/system/csi-driver-smb/icon-small.webp deleted file mode 100644 index 768d6da945ff2b7fc79cec6838063866d51a472a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmV-O0=NBANk&FM0ssJ4MM6+kP&gno0ssIo3ILq}Dj)zL00ICsC9nc?$`QcctHK$& z<^f&*&302{pV#WWc8a7BiuumKUye0JF?D8o=*)Qo80XKwuB{<6swFXsFI=A!hTloGrxcm_ zJKhVgRRFZvClla#XA*^%wUMw2`RE3^=yU8o(F&uSrv16mL?`dA_>+<>y%1w|_N&|K zO_g!ae{M4z3Av}!Kt_fU_wd5QvD;-XF0jA0KWWP_RLz=BiWVm~8;(b>!Af$DTj$h$ zJWEIT!vaDIp3HwSeK#d_5l1ZN43SBIK0e3M6&~mH?%x+nWfuN1U^ZLuINcCrHX11+ z7YKhFc5D38tdEwD;WrWv7V9t0!#ldjAiHAj!CEO&va(@iCV{1`^qY#_zX`Uru~q!i zHmY!4kxs|DF|aY0GmJ$zU^Cy*&~u{llOoA5E~xvCytYHXva5stLHZ*oIm?2(cEC*g WM!B%Rqqrhjx#}uSB+HTa0000d>KiHm diff --git a/archive/charts/system/csi-driver-smb/icon.webp b/archive/charts/system/csi-driver-smb/icon.webp deleted file mode 100644 index 2bc3d3d61777f091e3cbb8a1a45186945063df21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2856 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 G0002XYIp1a diff --git a/archive/charts/system/csi-driver-smb/templates/NOTES.txt b/archive/charts/system/csi-driver-smb/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/csi-driver-smb/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/csi-driver-smb/templates/common.yaml b/archive/charts/system/csi-driver-smb/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/csi-driver-smb/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/csi-driver-smb/values.yaml b/archive/charts/system/csi-driver-smb/values.yaml deleted file mode 100644 index 91e02369b2c..00000000000 --- a/archive/charts/system/csi-driver-smb/values.yaml +++ /dev/null @@ -1,20 +0,0 @@ -image: - pullPolicy: IfNotPresent - repository: oci.trueforge.org/tccr/alpine - tag: latest@sha256:783d7b4da265da6ee627fe54ee895a2cfe2a2ecd7bb7b53a0c7a703a924a8e82 -manifestManager: - enabled: false -operator: - register: true -portal: - open: - enabled: false -service: - main: - enabled: false - ports: - main: - enabled: false -workload: - main: - enabled: false diff --git a/archive/charts/system/descheduler/.helmignore b/archive/charts/system/descheduler/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/descheduler/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/descheduler/Chart.yaml b/archive/charts/system/descheduler/Chart.yaml deleted file mode 100644 index 0f41d60d4ee..00000000000 --- a/archive/charts/system/descheduler/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: descheduler - version: 0.31.0 - repository: https://kubernetes-sigs.github.io/descheduler - condition: "" - alias: descheduler - tags: [] - import-values: [] -deprecated: false -description: Automatically remove broken/stuck pods -home: https://truecharts.org/charts/system/descheduler -icon: https://truecharts.org/img/hotlink-ok/chart-icons/descheduler.webp -keywords: - - descheduler - - loadbalancer -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: descheduler -sources: - - https://descheduler.universe.tf - - https://github.com/descheduler/descheduler - - https://github.com/truecharts/charts/tree/master/charts/system/descheduler - - https://github.com/truecharts/containers/tree/master/apps/alpine -type: application -version: 0.1.0 diff --git a/archive/charts/system/descheduler/README.md b/archive/charts/system/descheduler/README.md deleted file mode 100644 index aeda46f2886..00000000000 --- a/archive/charts/system/descheduler/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/descheduler) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/descheduler` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/descheduler - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/descheduler/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/descheduler/icon-small.webp b/archive/charts/system/descheduler/icon-small.webp deleted file mode 100644 index 6380d00e9d62fa760f6263e0e3135095caa3f00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000V0018V06|PpNY?=X00EGzZQI&5 zZDKT6%2ho;8+ zH*pM-LsZ-ksm)DSLQ~RFQYkcO@)cfAIL(rM6fTuCJBe~s^OZTtGtFkKRCy^`Oi9&} zysYThlF`I@4Zdc>sJ=V@QSg00v!OZV1nJ+o>8WAMQ{wVQovxCTjn5U{H_IEzyzC&! z=m@Z~NRsPCUN*|SM#vAln*gA7>bUUhiitYx-*h=qs`#b&W$m~E09H^q uASM6+0MG&eodGH!03ZN9eJ+wmq@tmrH|PM64~c020ImZN0RH*{fB*oY@B|b9 diff --git a/archive/charts/system/descheduler/icon.webp b/archive/charts/system/descheduler/icon.webp deleted file mode 100644 index c876cb18cc1e1fee16a5b3bdc3384304d96955b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3732 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 diff --git a/archive/charts/system/descheduler/templates/NOTES.txt b/archive/charts/system/descheduler/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/descheduler/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/descheduler/templates/common.yaml b/archive/charts/system/descheduler/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/descheduler/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/descheduler/values.yaml b/archive/charts/system/descheduler/values.yaml deleted file mode 100644 index 45db201129f..00000000000 --- a/archive/charts/system/descheduler/values.yaml +++ /dev/null @@ -1,25 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/alpine - pullPolicy: IfNotPresent - tag: latest@sha256:ade0065e19edaa4f6903d464ee70605111a48394536deb94f31b661264704558 - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -manifestManager: - enabled: false diff --git a/archive/charts/system/intel-device-plugins-operator/.helmignore b/archive/charts/system/intel-device-plugins-operator/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/intel-device-plugins-operator/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/intel-device-plugins-operator/Chart.yaml b/archive/charts/system/intel-device-plugins-operator/Chart.yaml deleted file mode 100644 index 0ee19605f93..00000000000 --- a/archive/charts/system/intel-device-plugins-operator/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: intel-device-plugins-operator - version: 0.31.0 - repository: https://intel.github.io/helm-charts - condition: "" - alias: intel-device-plugins-operator - tags: [] - import-values: [] -deprecated: false -description: Add support for using Intel Devices in yoru cluster -home: https://truecharts.org/charts/system/intel-device-plugins-operator -icon: https://truecharts.org/img/hotlink-ok/chart-icons/intel-device-plugins-operator.webp -keywords: - - intel-device-plugins-operator - - loadbalancer -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: intel-device-plugins-operator -sources: - - https://github.com/intel-device-plugins-operator/intel-device-plugins-operator - - https://github.com/truecharts/charts/tree/master/charts/system/intel-device-plugins-operator - - https://github.com/truecharts/containers/tree/master/apps/alpine - - https://intel-device-plugins-operator.universe.tf -type: application -version: 0.1.0 diff --git a/archive/charts/system/intel-device-plugins-operator/README.md b/archive/charts/system/intel-device-plugins-operator/README.md deleted file mode 100644 index f6dd969191a..00000000000 --- a/archive/charts/system/intel-device-plugins-operator/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/intel-device-plugins-operator) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/intel-device-plugins-operator` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/intel-device-plugins-operator - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/intel-device-plugins-operator/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/intel-device-plugins-operator/icon-small.webp b/archive/charts/system/intel-device-plugins-operator/icon-small.webp deleted file mode 100644 index 6380d00e9d62fa760f6263e0e3135095caa3f00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000V0018V06|PpNY?=X00EGzZQI&5 zZDKT6%2ho;8+ zH*pM-LsZ-ksm)DSLQ~RFQYkcO@)cfAIL(rM6fTuCJBe~s^OZTtGtFkKRCy^`Oi9&} zysYThlF`I@4Zdc>sJ=V@QSg00v!OZV1nJ+o>8WAMQ{wVQovxCTjn5U{H_IEzyzC&! z=m@Z~NRsPCUN*|SM#vAln*gA7>bUUhiitYx-*h=qs`#b&W$m~E09H^q uASM6+0MG&eodGH!03ZN9eJ+wmq@tmrH|PM64~c020ImZN0RH*{fB*oY@B|b9 diff --git a/archive/charts/system/intel-device-plugins-operator/icon.webp b/archive/charts/system/intel-device-plugins-operator/icon.webp deleted file mode 100644 index c876cb18cc1e1fee16a5b3bdc3384304d96955b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3732 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 diff --git a/archive/charts/system/intel-device-plugins-operator/templates/NOTES.txt b/archive/charts/system/intel-device-plugins-operator/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/intel-device-plugins-operator/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/intel-device-plugins-operator/templates/common.yaml b/archive/charts/system/intel-device-plugins-operator/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/intel-device-plugins-operator/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/intel-device-plugins-operator/values.yaml b/archive/charts/system/intel-device-plugins-operator/values.yaml deleted file mode 100644 index 45db201129f..00000000000 --- a/archive/charts/system/intel-device-plugins-operator/values.yaml +++ /dev/null @@ -1,25 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/alpine - pullPolicy: IfNotPresent - tag: latest@sha256:ade0065e19edaa4f6903d464ee70605111a48394536deb94f31b661264704558 - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -manifestManager: - enabled: false diff --git a/archive/charts/system/kubeapps/.helmignore b/archive/charts/system/kubeapps/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/kubeapps/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/kubeapps/Chart.yaml b/archive/charts/system/kubeapps/Chart.yaml deleted file mode 100644 index 5305286b2c7..00000000000 --- a/archive/charts/system/kubeapps/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: 0.0.3 -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: kubeapps - version: 17.0.0 - repository: oci://registry-1.docker.io/bitnamicharts - condition: "" - alias: ogkubeapps - tags: [] - import-values: [] -deprecated: true -description: KubeApps is a Kubernetes-as-Apps solution -home: https://truecharts.org/charts/system/kubeapps -icon: https://truecharts.org/img/hotlink-ok/chart-icons/kubeapps.webp -keywords: - - kubeapps - - catalog -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: kubeapps -sources: - - https://cert-manager.io/ - - https://ghcr.io/xstar97/my-proxy-service - - https://github.com/cert-manager - - https://github.com/truecharts/charts/tree/master/charts/system/kubeapps -type: application -version: 6.1.0 diff --git a/archive/charts/system/kubeapps/README.md b/archive/charts/system/kubeapps/README.md deleted file mode 100644 index 5d8f49a34ac..00000000000 --- a/archive/charts/system/kubeapps/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/kubeapps) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/kubeapps` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/kubeapps - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/kubeapps/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/kubeapps/docs/token.md b/archive/charts/system/kubeapps/docs/token.md deleted file mode 100644 index d7d02f2cb0a..00000000000 --- a/archive/charts/system/kubeapps/docs/token.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Getting a Login Token for KubeApps ---- - -Currently KubeApps, by default, requires a kubernetes token to login. To acquire a temporary(!) token, enter the command given in the "notes" section (bottom right corner in SCALE WebUI) and copy the token given to the WebGUI of KubeApps. diff --git a/archive/charts/system/kubeapps/icon-small.webp b/archive/charts/system/kubeapps/icon-small.webp deleted file mode 100644 index ca25c373a00547a6288a43a6d06283189977a67e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W@^Nk&Gd0ssJ4MM6+kP&il$0000G0000V0018V06|PpNW%aC00D4YTW{7V z%wU$Fr-X`@%m+h+RYD0BB}>SD`LmHSK}0Zc+elHe%!iMVvUNKQZ7oJ`-MlG)?sH!m z7@rhf?^lEcKr;cBP^38^sgkLh;Al$m1dSAp3TGa|0h+ilDI8hn@*6E-`Q6ACAw?KP zq*_T4lQFSYB0VTZ6?&1`$0V}bBPg5H>O<=mAGCv)!H>Vn}X;+n!GPVfGJHo$Hv-T>$q^+`s)IPF)%G4a=^0RLX$d?SeFR2TxbxnzMp zWt6vUH^2IABLD#T*lzXc-DoG=1@y5P?pAvjM8DpU116S~e{^A%o5%kIf4^6AVN)Md z85cVOcl9I2&;9HuGixCXp&KGDu70Q9_yFlk-}nN10PQYHCE zu^-JngFbYQeJ6LGQ9Jljy5a-+Ha=D7Je)rqm6_VI&h-yZ9pybPS*$lRy`bzS97%i) zz(d7znbM}F3jl;E*8bE;^>wuH0rBX;W^2$hfl11LJ>}9-Z^jH9P+RFI5=mCGfR}f+ ziUoHKfMcRY&^tH`$h=X&o>HK&HpN5A1_Nl@jQ1(R diff --git a/archive/charts/system/kubeapps/icon.webp b/archive/charts/system/kubeapps/icon.webp deleted file mode 100644 index a7aa5dfa07a8804ee61e01e1fc41a64db55b654a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4424 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 ORLnfB;KkeC0001Ohm%(T diff --git a/archive/charts/system/kubeapps/templates/NOTES.txt b/archive/charts/system/kubeapps/templates/NOTES.txt deleted file mode 100644 index 6fdf5852919..00000000000 --- a/archive/charts/system/kubeapps/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} - -To generate a Login Token, run this in terminal: -{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" $ -}} -(k3s) kubectl create token {{ $fullname }} -n {{ .Release.Namespace }} diff --git a/archive/charts/system/kubeapps/templates/common.yaml b/archive/charts/system/kubeapps/templates/common.yaml deleted file mode 100644 index 4b5e888100c..00000000000 --- a/archive/charts/system/kubeapps/templates/common.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{- $overrideService := dict "name" "tckubeapps" "port" 8080 -}} -{{- $hosts := list -}} -{{- range $.Values.ingress.main.hosts -}} - {{- $paths := list -}} - {{- range .paths -}} - {{- $path := dict "path" .path "pathType" .pathType "overrideService" $overrideService -}} - {{- $paths = append $paths $path -}} - {{- end -}} - {{- $host := dict "host" .host "paths" $paths -}} - {{- $hosts = append $hosts $host -}} -{{- end -}} - -{{- $_ := set $.Values.ingress.main "hosts" $hosts -}} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/kubeapps/values.yaml b/archive/charts/system/kubeapps/values.yaml deleted file mode 100644 index bfa410cb47b..00000000000 --- a/archive/charts/system/kubeapps/values.yaml +++ /dev/null @@ -1,113 +0,0 @@ -image: - pullPolicy: IfNotPresent - repository: ghcr.io/xstar97/my-proxy-service - tag: v0.0.3@sha256:272f4af7f79fac47de413b9a756d2ca23df27df4fb5af2e41a2c9f8cfe6ce642 - -operator: - register: false - -portal: - open: - enabled: true - -podOptions: - automountServiceAccountToken: true - -workload: - ## TODO: Enable - main: - enabled: false - primary: true - type: Deployment - podSpec: - containers: - ## TODO: Enable - main: - enabled: false - primary: true - env: - PORT: 3000 - API_FILE: /var/run/secrets/kubernetes.io/serviceaccount/token - PROXY_TARGET: http://tckubeapps:8080 - probes: - liveness: - enabled: true - type: tcp - port: 3000 - readiness: - enabled: true - type: tcp - port: 3000 - startup: - enabled: true - type: tcp - port: 3000 - -service: - ## TODO: Enable - main: - enabled: false - primary: false - expandObjectName: false - ports: - main: - ## TODO: Enable - enabled: false - primary: false - port: 3000 - targetPort: 3000 - tckubeapps: - enabled: true - primary: true - labels: - truecharts.org/flagged: "true" - selectorLabels: - app.kubernetes.io/component: frontend - truecharts.org/kahack: frontend - ports: - tckubeapps: - enabled: true - primary: true - port: 8080 - targetPort: 8080 - -serviceAccount: - kubeapps-operator: - enabled: true - primary: true - targetSelectAll: true - -rbac: - kubeapps-operator: - enabled: true - primary: true - clusterWide: true - allServiceAccounts: true - rules: - - apiGroups: ["*"] - resources: ["*"] - verbs: ["*"] - -ogkubeapps: - ociCatalog: - enabled: false - frontend: - podLabels: - truecharts.org/kahack: frontend - apprepository: - initialRepos: - - name: truecharts - type: oci - url: oci://oci.trueforge.org/truecharts - ociRepositories: - - kubeapps - - metallb - - metallb-config - - openebs - - prometheus operator - - traefik - - traefik-crds - - volsync - - cert-manager - - cloudnative-pg - - snapshot-controller diff --git a/archive/charts/system/metallb/.helmignore b/archive/charts/system/metallb/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/metallb/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/metallb/Chart.yaml b/archive/charts/system/metallb/Chart.yaml deleted file mode 100644 index d31d7ac80cd..00000000000 --- a/archive/charts/system/metallb/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: metallb - version: 0.14.8 - repository: https://metallb.github.io/metallb - condition: "" - alias: metallb - tags: [] - import-values: [] -deprecated: false -description: A network load-balancer implementation for Kubernetes using standard routing protocols -home: https://truecharts.org/charts/system/metallb -icon: https://truecharts.org/img/hotlink-ok/chart-icons/metallb.webp -keywords: - - metallb - - loadbalancer -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: metallb -sources: - - https://github.com/metallb/metallb - - https://github.com/truecharts/charts/tree/master/charts/system/metallb - - https://github.com/truecharts/containers/tree/master/apps/alpine - - https://metallb.universe.tf -type: application -version: 16.2.0 diff --git a/archive/charts/system/metallb/README.md b/archive/charts/system/metallb/README.md deleted file mode 100644 index 529693f8057..00000000000 --- a/archive/charts/system/metallb/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/metallb) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/metallb` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/metallb - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/metallb/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/metallb/icon-small.webp b/archive/charts/system/metallb/icon-small.webp deleted file mode 100644 index 6380d00e9d62fa760f6263e0e3135095caa3f00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000V0018V06|PpNY?=X00EGzZQI&5 zZDKT6%2ho;8+ zH*pM-LsZ-ksm)DSLQ~RFQYkcO@)cfAIL(rM6fTuCJBe~s^OZTtGtFkKRCy^`Oi9&} zysYThlF`I@4Zdc>sJ=V@QSg00v!OZV1nJ+o>8WAMQ{wVQovxCTjn5U{H_IEzyzC&! z=m@Z~NRsPCUN*|SM#vAln*gA7>bUUhiitYx-*h=qs`#b&W$m~E09H^q uASM6+0MG&eodGH!03ZN9eJ+wmq@tmrH|PM64~c020ImZN0RH*{fB*oY@B|b9 diff --git a/archive/charts/system/metallb/icon.webp b/archive/charts/system/metallb/icon.webp deleted file mode 100644 index c876cb18cc1e1fee16a5b3bdc3384304d96955b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3732 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 diff --git a/archive/charts/system/metallb/templates/NOTES.txt b/archive/charts/system/metallb/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/metallb/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/metallb/templates/common.yaml b/archive/charts/system/metallb/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/metallb/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/metallb/values.yaml b/archive/charts/system/metallb/values.yaml deleted file mode 100644 index 033ae4b2168..00000000000 --- a/archive/charts/system/metallb/values.yaml +++ /dev/null @@ -1,25 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/alpine - pullPolicy: IfNotPresent - tag: latest@sha256:783d7b4da265da6ee627fe54ee895a2cfe2a2ecd7bb7b53a0c7a703a924a8e82 - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -manifestManager: - enabled: false diff --git a/archive/charts/system/metrics-server/.helmignore b/archive/charts/system/metrics-server/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/metrics-server/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/metrics-server/Chart.yaml b/archive/charts/system/metrics-server/Chart.yaml deleted file mode 100644 index defd42fc222..00000000000 --- a/archive/charts/system/metrics-server/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: metrics-server - version: 3.12.1 - repository: https://kubernetes-sigs.github.io/metrics-server - condition: "" - alias: metrics-server - tags: [] - import-values: [] -deprecated: false -description: Enable Internal kubernetes metrics -home: https://truecharts.org/charts/system/metrics-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/metrics-server.webp -keywords: - - metrics-server - - loadbalancer -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: metrics-server -sources: - - https://github.com/metrics-server/metrics-server - - https://github.com/truecharts/charts/tree/master/charts/system/metrics-server - - https://github.com/truecharts/containers/tree/master/apps/alpine - - https://metrics-server.universe.tf -type: application -version: 0.1.0 diff --git a/archive/charts/system/metrics-server/README.md b/archive/charts/system/metrics-server/README.md deleted file mode 100644 index 1f6b80e26f5..00000000000 --- a/archive/charts/system/metrics-server/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/metrics-server) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/metrics-server` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/metrics-server - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/metrics-server/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/metrics-server/icon-small.webp b/archive/charts/system/metrics-server/icon-small.webp deleted file mode 100644 index 6380d00e9d62fa760f6263e0e3135095caa3f00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000V0018V06|PpNY?=X00EGzZQI&5 zZDKT6%2ho;8+ zH*pM-LsZ-ksm)DSLQ~RFQYkcO@)cfAIL(rM6fTuCJBe~s^OZTtGtFkKRCy^`Oi9&} zysYThlF`I@4Zdc>sJ=V@QSg00v!OZV1nJ+o>8WAMQ{wVQovxCTjn5U{H_IEzyzC&! z=m@Z~NRsPCUN*|SM#vAln*gA7>bUUhiitYx-*h=qs`#b&W$m~E09H^q uASM6+0MG&eodGH!03ZN9eJ+wmq@tmrH|PM64~c020ImZN0RH*{fB*oY@B|b9 diff --git a/archive/charts/system/metrics-server/icon.webp b/archive/charts/system/metrics-server/icon.webp deleted file mode 100644 index c876cb18cc1e1fee16a5b3bdc3384304d96955b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3732 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 diff --git a/archive/charts/system/metrics-server/templates/NOTES.txt b/archive/charts/system/metrics-server/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/metrics-server/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/metrics-server/templates/common.yaml b/archive/charts/system/metrics-server/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/metrics-server/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/metrics-server/values.yaml b/archive/charts/system/metrics-server/values.yaml deleted file mode 100644 index 45db201129f..00000000000 --- a/archive/charts/system/metrics-server/values.yaml +++ /dev/null @@ -1,25 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/alpine - pullPolicy: IfNotPresent - tag: latest@sha256:ade0065e19edaa4f6903d464ee70605111a48394536deb94f31b661264704558 - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -manifestManager: - enabled: false diff --git a/archive/charts/system/node-feature-discovery/.helmignore b/archive/charts/system/node-feature-discovery/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/node-feature-discovery/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/node-feature-discovery/Chart.yaml b/archive/charts/system/node-feature-discovery/Chart.yaml deleted file mode 100644 index 28762f9df1c..00000000000 --- a/archive/charts/system/node-feature-discovery/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: node-feature-discovery - version: 0.16.4 - repository: https://kubernetes-sigs.github.io/node-feature-discovery/charts - condition: "" - alias: node-feature-discovery - tags: [] - import-values: [] -deprecated: false -description: Automatically tag all your nodes with devices available -home: https://truecharts.org/charts/system/node-feature-discovery -icon: https://truecharts.org/img/hotlink-ok/chart-icons/node-feature-discovery.webp -keywords: - - node-feature-discovery - - loadbalancer -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: node-feature-discovery -sources: - - https://github.com/node-feature-discovery/node-feature-discovery - - https://github.com/truecharts/charts/tree/master/charts/system/node-feature-discovery - - https://github.com/truecharts/containers/tree/master/apps/alpine - - https://node-feature-discovery.universe.tf -type: application -version: 0.1.0 diff --git a/archive/charts/system/node-feature-discovery/README.md b/archive/charts/system/node-feature-discovery/README.md deleted file mode 100644 index b05dbb66d0e..00000000000 --- a/archive/charts/system/node-feature-discovery/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/node-feature-discovery) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/node-feature-discovery` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/node-feature-discovery - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/node-feature-discovery/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/node-feature-discovery/icon-small.webp b/archive/charts/system/node-feature-discovery/icon-small.webp deleted file mode 100644 index 6380d00e9d62fa760f6263e0e3135095caa3f00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000V0018V06|PpNY?=X00EGzZQI&5 zZDKT6%2ho;8+ zH*pM-LsZ-ksm)DSLQ~RFQYkcO@)cfAIL(rM6fTuCJBe~s^OZTtGtFkKRCy^`Oi9&} zysYThlF`I@4Zdc>sJ=V@QSg00v!OZV1nJ+o>8WAMQ{wVQovxCTjn5U{H_IEzyzC&! z=m@Z~NRsPCUN*|SM#vAln*gA7>bUUhiitYx-*h=qs`#b&W$m~E09H^q uASM6+0MG&eodGH!03ZN9eJ+wmq@tmrH|PM64~c020ImZN0RH*{fB*oY@B|b9 diff --git a/archive/charts/system/node-feature-discovery/icon.webp b/archive/charts/system/node-feature-discovery/icon.webp deleted file mode 100644 index c876cb18cc1e1fee16a5b3bdc3384304d96955b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3732 zcmV;F4r}pJNk&GD4gdgGMM6+kP&il$0000G0001$005N$06|PpNL~#900HoaZQJrR z+V&k+5(utEDrkWgs6dgrPi+}@sh9daT6cFhsNXjopQ()d)E%Zb^#WC>0fmGlZD>NS z9FLsmB}cCQ9}yD(o-FuBCg(i={<57voVawm%51Y)s&8LD@%^r4@4uLn66G(zvsjnktr8I$qM@QoX^wgd^6tR58S zqkSR$mmaD|;`IlY^bgXu;1R!7I?w|hl|K&)(X61%ITh%^l?$>1waD1Hpwxv5yPcMr zifflIT)bL-=aJ2+6uQbbcQR^Ds|}?hDq4GH@7hU&d*@`fNlQ&lZ=2Dv|KKSb_7<6y zKy;O^OV$+c*7I#BTdXTPx^`4XumFk*q1mI>pDe2rWgwz$ek(7{2z|fUiE`_X=MT<` z0F|S%hipAzl7r5o_d_+J{l0pX=_*^-FEJ2E1||02bloKlv3_qmEoi!?4y8XS-QC>} zNc;8ttlTaMv2Jy=ry06@gVOD%r(_v{yie|o;s!~GUw1Wl*4S%}(oT&^Hh@QZwH{X_ zt?}Au57NbNLCKcCN9e$V^?66E5)g4~yv|d4{Nj)zUYythJX?tS_^PC*KlkvEZZ}*g z(UPB~2aos4-DQ)2t{dGv!GC-;O0*rx1&!=_`Y{i&db~e5!;ET_SUEoiG&5o0eF<1I z%RtO)ss$zf(>(w*G@$Pl322$_O)7ky9r@-hk)W~BJ1ji3ZwM!3SZziAg9)Laxe*^! z^U%7^n~Y(a9r>lN8$g4--n+%ahG_;OezPpd|GgbhjTpcG+|lK^Q~YJ{i4-)w#ld}nigTF~(^3!fy&^4^GS_a>kn{+U~e+r5av4i0YcmeaY6b1{=x_FYucx!i|X z&NWVHM;QSHZkA=7j@UL-_F8*l`VVX@cYc7h4&}%`(hO)fsZpr$6Jii^oQ35bq%9OV z!+`i$RQj@>7>wnJ^CSg5M0T-`Sc|iY;j7dPB`kaxC}kwF8}fj*Fsx3w13|=Ktb>Ka zBn14*Ig>&xY>%j1MPF*I|Ka=;z#DLvWuKxa*4Ko}y9)w|8KyR{D*JPMmO5EwSwMU% zs#(^a8040-9E**txI@U^V5`YHRBg7JQT+oU}1?}fwnLk)xG0S40?zxOMli{ zWZy6nYjIK~e21FPEf%h32p2dTfVMEqq}GoC#2}w@fzbxpbv=kR{Q=c}_?kehx0&Tm z`+ws&#}kPStW{0i7EG+=NfwR;0R0}8yC8sAA*x^AmRQgZH>*$wkaCe#HyCIqI0@hy zVldRix{w6Wzmip!MQkBbyc-$plUJ&-nh zWTSDc2`$*f5;yuq?ML=-S}}hh&8pXljbh<}sN^C}2U>%yL|og0Y2|XxB;`C{J@O}| z{}riLb*B|%W2RWIjhRd zx|B*MtCSp0Ce-E{tJcc8(3*@e(MIohG@aCoEQ^J8o{sJlJ3aFl9l82?)}=Hukn}A* z+#f|I?Fy@=npN6{4zyTPMXshBnKq@Yd$(D)GpIEEVn=WP407+~x6x;8zfZ?9UQc5(vUe=ytfKMWQy#jC zCk6+<@CzCD{wNx2Ig8(Sv-XiN97E|PFNFztr|mTG@$)qHvBWVi+F54>3YktBXxiCV zmps3M27X0CC}!CP<~(541yERnvYmHkH}&nguYrUumO`M3bw4|$h=o}M+Fg~0h_|OS z)AcxFC4g)61hSBQs%6vx&PeqPlO8LAjo-f&5HsZ;0{=}RkjMEp!f&ISwL!gRKcT{6 z)#t5@DLYK6Stsh$+sG2v`w3$$tYhJ-y=YSk5$jgAH)eibs}lYdt6KPRR(+lT{VG{y z*{XemYKkSV=>10>ZcxYanrb=atcpGW$ro95gVl<(se;G5=)n*_#iR=ES8Yfg>wF@B z{!^BFYoI#1g{Y$a@Eg9sOw7Nd2BxVLxXsNf)B(U)79LMjC+3WDV%hvy;QK%Kn@xpv zdUX;{AUh8Lpbe+4r#kP}Dz~GPFGy~lSE}6k*6Q>!v&5ADCtP6R22~>WqQd4M2Y~$G zr8k`l*{2&+*@)~CV6Ns|H>%OSN*S?aOf)EI?6$?E3?7MB!}lglrProZ3}Ap4Y^`h01q3KGZrHI&lr}^ z5+|!HOSzG#;4edhK;`shHxzJYDwk8vax5~kU_d3yK1r`s;BWHo&TXLw)dRABbIHOD zf>Qb^c2>o6!1e!$g{PC1dZSu~>)w(WplN*mug7w(cT_5+2-)BH@?bdU=}3hFHoK%* zzkERlWSdXF?2^_n%Uhwmr<}ncG3Wsci*(AQUq;E--is7~u(87?Q4$`GS4Llq?0bPy zV6Mo*;mXWGiQOBhlp8v|hxZY7-ft$0!AO{kj zu+Z90j`u z>4e&!F#wl#AwKZGYV zj{ptM=pgVy@{wDW3UE8i_Xh zk?Y#uOf6ma8$9vfk=hpZACY%8TTlz2b2SIuzolzg`mb)}-p>Gv6KXgp{++B{$p=N` z-X9Jm{byM?h<~)xs&;=M-#p2W1{kI{@bLPZ1}!qYUWRnOOijGHYDDnPqUwQytuQ&1#Ed^Ny&(miYSWsePX(o7Pw;!KM zK=I;-u^uMGOuQtbMEf_n;Gw$sd?|?5gClgFq#t?6f|6G@6+8t1Mqh1|fQYB^QoKFG zD`oTJX{Dm~MpP89!q-V^Ude)AT#ljAH&jN^AT`LLEUS8PKpO$~m!qO)w zy=p-OXkgpDW=V+Xy0N8yVi1kM#Qtl`Tqx7@c^YVA=)@wYG(W9xsa8bx(EJl7 zl5rb_OG2f zv`=nk+qBfww6>YKeFjfiyRWzo6>Yqs|nivJdlY6s6)eNw-XoA;l6@K{trwBA4c?Z%OP6ZP;+ z_K!-=d49sO?cbfaaI>n`QeSiL=7qz1w=WqpAUi3-4?G%HP&gn60RRBd6#$(9DwY72 z06uvxkw>JWp`kd40FVy}X>Q=a0~8CuAD|z=Bs>$Fo&f#<_yPI>`TO7DuJ;GpuIB>8 z=&<=j?NtO83uvx*UvMA*)1o@X&+2h3*f7r^ht41jUwcZgLm+oqTh=$WZ>}G!xo7p9 z|CNa~rplr|dyc0VhEJT-&j0}axjt~Oyy)Nm{Z!c~7pGdZZ+U;OU;q7767TZ%fzQ2> ydquK&>B@i{JUUy%O>CYm5&!@HRSx6-|Nm2>Q&xrVhIzVjE3=Gv)Q9c>0000fuQx;h diff --git a/archive/charts/system/node-feature-discovery/templates/NOTES.txt b/archive/charts/system/node-feature-discovery/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/node-feature-discovery/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/node-feature-discovery/templates/common.yaml b/archive/charts/system/node-feature-discovery/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/node-feature-discovery/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/node-feature-discovery/values.yaml b/archive/charts/system/node-feature-discovery/values.yaml deleted file mode 100644 index 45db201129f..00000000000 --- a/archive/charts/system/node-feature-discovery/values.yaml +++ /dev/null @@ -1,25 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/alpine - pullPolicy: IfNotPresent - tag: latest@sha256:ade0065e19edaa4f6903d464ee70605111a48394536deb94f31b661264704558 - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -manifestManager: - enabled: false diff --git a/archive/charts/system/nvidia-device-plugin/.helmignore b/archive/charts/system/nvidia-device-plugin/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/nvidia-device-plugin/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/nvidia-device-plugin/Chart.yaml b/archive/charts/system/nvidia-device-plugin/Chart.yaml deleted file mode 100644 index b5d120b5a29..00000000000 --- a/archive/charts/system/nvidia-device-plugin/Chart.yaml +++ /dev/null @@ -1,45 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/SCALE-support: "false" - truecharts.org/category: operators - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: nvidia-device-plugin - version: 0.16.2 - repository: https://nvidia.github.io/k8s-device-plugin - condition: "" - alias: nvdp - tags: [] - import-values: [] -deprecated: false -description: NVIDIA device plugin for Kubernetes -home: https://truecharts.org/charts/system/kubeapps -icon: https://truecharts.org/img/hotlink-ok/chart-icons/kubeapps.webp -keywords: - - nvidia - - plugins -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: kubeapps -sources: - - https://cert-manager.io/ - - https://github.com/NVIDIA/k8s-device-plugin?tab=readme-ov-file#deployment-via-helm - - https://github.com/truecharts/charts/tree/master/charts/system/kubeapps - - https://github.com/truecharts/containers/tree/master/apps/scratch -type: application -version: 2.2.0 diff --git a/archive/charts/system/nvidia-device-plugin/README.md b/archive/charts/system/nvidia-device-plugin/README.md deleted file mode 100644 index 5d8f49a34ac..00000000000 --- a/archive/charts/system/nvidia-device-plugin/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/kubeapps) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/kubeapps` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/kubeapps - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/kubeapps/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/nvidia-device-plugin/docs/installation.md b/archive/charts/system/nvidia-device-plugin/docs/installation.md deleted file mode 100644 index 63335d74c0b..00000000000 --- a/archive/charts/system/nvidia-device-plugin/docs/installation.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Nvidia Device Plugin Setup ---- - -## Talos Linux Setup - -## Enable NVIDIA kernel modules - -Before installing the device plugin, some initial steps need to be taken per -[Talos Documentation][1]. Please make sure you have installed the correct system -extensions through a combination of patches + the correct [factory image][2] for your -use case. - -example gpu-worker-patch.yaml - -```yaml -machine: - kernel: - modules: - - name: nvidia - - name: nvidia_uvm - - name: nvidia_drm - - name: nvidia_modeset - sysctls: - net.core.bpf_jit_harden: 1 -``` - -### Quick Sanity Check - -If running these commands does not produce similar output, you haven't set up base -system completely: - -``` -❯ talosctl read /proc/modules -nvidia_uvm 1482752 - - Live 0xffffffffc3b4e000 (PO) -nvidia_drm 73728 - - Live 0xffffffffc3b3b000 (PO) -nvidia_modeset 1290240 - - Live 0xffffffffc39dc000 (PO) -nvidia 56602624 - - Live 0xffffffffc03e0000 (PO) - -❯ talosctl get extensions -NODE NAMESPACE TYPE ID VERSION NAME VERSION -192.168.2.104 runtime ExtensionStatus 0 1 nonfree-kmod-nvidia 535.129.03-v1.6.7 -192.168.2.104 runtime ExtensionStatus 2 1 nvidia-container-toolkit 535.129.03-v1.13.5 -192.168.2.104 runtime ExtensionStatus 4 1 schematic a22f54cdf137d9d058e9a399adecf4bab2f3cc74b15b5bee00005811433e06b0 -192.168.2.104 runtime ExtensionStatus modules.dep 1 modules.dep 6.1.82-talos -``` - -## Create NVIDIA runtime class: - -You will need to add this runtime class to pods you wish to add GPU resources to. - -``` -❯ cat < zd~|%#|1;bR`1kfRGMK*l$ah?okUgxe5=i@jg_CU;&v!LwKmh*!F^f*z+rqgzz{OU7 zsyS}m^Uiw$p`Seu}HLbvIc{2SEn)1n&S%|kR zWyAZ?2`=6Rfp{%zk!-Qhv&*&4-qz2P4(a7?n$-O_^Ru~)-T~hdDI0pddq3`N<2A#X z+qnysxn#3Fqn@nf%ZDO6z`Hr$>m`zI(y Yy{&%s$qGoCOm@>xK?wawF(C~A0O4!dGynhq diff --git a/archive/charts/system/nvidia-device-plugin/icon.webp b/archive/charts/system/nvidia-device-plugin/icon.webp deleted file mode 100644 index bf56b95fc323ed60f2a619faf471075a91b4527a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3286 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.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: nvidia-gpu-operator -sources: - - https://github.com/nvidia-gpu-operator/nvidia-gpu-operator - - https://github.com/truecharts/charts/tree/master/charts/system/nvidia-gpu-operator - - https://github.com/truecharts/containers/tree/master/apps/alpine - - https://nvidia-gpu-operator.universe.tf -type: application -version: 0.1.0 diff --git a/archive/charts/system/nvidia-gpu-operator/README.md b/archive/charts/system/nvidia-gpu-operator/README.md deleted file mode 100644 index d00d6bd97d8..00000000000 --- a/archive/charts/system/nvidia-gpu-operator/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/nvidia-gpu-operator) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/nvidia-gpu-operator` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/nvidia-gpu-operator - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/nvidia-gpu-operator/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/nvidia-gpu-operator/icon-small.webp b/archive/charts/system/nvidia-gpu-operator/icon-small.webp deleted file mode 100644 index 6380d00e9d62fa760f6263e0e3135095caa3f00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9cNk&E_0ssJ4MM6+kP&il$0000G0000V0018V06|PpNY?=X00EGzZQI&5 zZDKT6%2ho;8+ zH*pM-LsZ-ksm)DSLQ~RFQYkcO@)cfAIL(rM6fTuCJBe~s^OZTtGtFkKRCy^`Oi9&} zysYThlF`I@4Zdc>sJ=V@QSg00v!OZV1nJ+o>8WAMQ{wVQovxCTjn5U{H_IEzyzC&! z=m@Z~NRsPCUN*|SM#vAln*gA7>bUUhiitYx-*h=qs`#b&W$m~E09H^q uASM6+0MG&eodGH!03ZN9eJ+wmq@tmrH|PM64~c020ImZN0RH*{fB*oY@B|b9 diff --git a/archive/charts/system/nvidia-gpu-operator/icon.webp b/archive/charts/system/nvidia-gpu-operator/icon.webp deleted file mode 100644 index c876cb18cc1e1fee16a5b3bdc3384304d96955b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3732 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 diff --git a/archive/charts/system/nvidia-gpu-operator/templates/NOTES.txt b/archive/charts/system/nvidia-gpu-operator/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/nvidia-gpu-operator/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/nvidia-gpu-operator/templates/common.yaml b/archive/charts/system/nvidia-gpu-operator/templates/common.yaml deleted file mode 100644 index 995efb03eb0..00000000000 --- a/archive/charts/system/nvidia-gpu-operator/templates/common.yaml +++ /dev/null @@ -1,5 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} - -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/nvidia-gpu-operator/values.yaml b/archive/charts/system/nvidia-gpu-operator/values.yaml deleted file mode 100644 index 45db201129f..00000000000 --- a/archive/charts/system/nvidia-gpu-operator/values.yaml +++ /dev/null @@ -1,25 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/alpine - pullPolicy: IfNotPresent - tag: latest@sha256:ade0065e19edaa4f6903d464ee70605111a48394536deb94f31b661264704558 - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -manifestManager: - enabled: false diff --git a/archive/charts/system/openebs/.helmignore b/archive/charts/system/openebs/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/openebs/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/openebs/Chart.yaml b/archive/charts/system/openebs/Chart.yaml deleted file mode 100644 index d3c2eaaad02..00000000000 --- a/archive/charts/system/openebs/Chart.yaml +++ /dev/null @@ -1,44 +0,0 @@ -annotations: - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: CSI - truecharts.org/max_helm_version: "3.15" - truecharts.org/min_helm_version: "3.11" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.0.0 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] - - name: localpv-provisioner - version: 4.1.1 - repository: https://openebs.github.io/dynamic-localpv-provisioner - condition: localpv-provisioner.enabled - alias: "" - tags: [] - import-values: [] -deprecated: false -description: OpenEBS is a umbrella chart for multiple container storage provisioners -home: https://truecharts.org/charts/system/openebs -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openebs.webp -keywords: - - openebs - - backup -kubeVersion: ">=1.24.0-0" -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: openebs -sources: - - https://cert-manager.io/ - - https://github.com/cert-manager - - https://github.com/truecharts/charts/tree/master/charts/system/openebs - - https://github.com/truecharts/containers/tree/master/apps/scratch -type: application -version: 8.1.0 diff --git a/archive/charts/system/openebs/README.md b/archive/charts/system/openebs/README.md deleted file mode 100644 index 90d4d3d6167..00000000000 --- a/archive/charts/system/openebs/README.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: README ---- - -## General Info - -TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. -Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/openebs) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/openebs` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - - -### TrueNAS SCALE Apps - -For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](/deprecated/scale). - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/openebs - -## Configuration Options - -Please note: For TrueNAS SCALE, only options available in the GUI are supported. -Hence most of these docs do not apply to TrueNAS SCALE - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/truecharts/charts/blob/master/charts/system/openebs/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/truecharts/library-charts/blob/main/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/openebs/icon-small.webp b/archive/charts/system/openebs/icon-small.webp deleted file mode 100644 index 5cb1c977f69716761f46bf3463fd636d6ba31fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmV;r0!95&Nk&Gp0ssJ4MM6+kP&il$0000G0000V0018V06|PpNIC%k00EG5YrAQ? z+P`bx*lumxM&+bRXZ0B=&DOS6*=Fy`HrD$TYwfdEL`;BXx1HI_GJ8&{Z_#<{oW6Dq zEp+-aHfn?eT`%yOeiwRM9kX75Yws-)purJ&J3KA&&IKk$*y_L@Gb?+C*Dq#f;6dKf ziLIRXt8PrQKLD?bXSD4vK)3Q@@-7SbR-;?xq`+c}p6UIY{o&y<2YhcBSN2j!UnD2c z7E8E52w&(=>lEcrkw8dnvXpuILB4}SMJZ+pkPyK91jWzs2;a<$Yb`JPmBn`^_a}LA zE&pc;IBD^-cI;FvGoH~)27<+=&Ti^{(xhr_lRElt#7Nkl{>l+tDy z3D%4Ez0Lpt{`zC4f5A}%M4=SSwh9S^UuWm12X$NP86LIYKmHgU3FNYs=~GF|Ghp%^ zKGQW~o~#)xsaf!CMNYKVl5e2cwLQPQ(C$s=SkAdkIL#jCy zMmW#RpWKi(FA~b6l*_~q1)Tib>BYUBGb_PR?%W1^fiH9r52ZRR)hBEh{!IdSYXy;p gw-e2d?*wuqNewSkYeX*QRQ9atKU3lnGz)rw0P}c3dH?_b diff --git a/archive/charts/system/openebs/icon.webp b/archive/charts/system/openebs/icon.webp deleted file mode 100644 index 31c794d120a90534975032dcc2dedfa4e67e428a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5462 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.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: prometheus-operator -sources: - - https://github.com/prometheus-operator - - https://github.com/truecharts/charts/tree/master/charts/system/prometheus-operator - - https://github.com/truecharts/containers/tree/master/apps/scratch -type: application -version: 11.5.1 diff --git a/archive/charts/system/prometheus-operator/README.md b/archive/charts/system/prometheus-operator/README.md deleted file mode 100644 index c93b0282d5b..00000000000 --- a/archive/charts/system/prometheus-operator/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/prometheus-operator) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/prometheus-operator` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/prometheus-operator - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/system/prometheus-operator/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/prometheus-operator/icon-small.webp b/archive/charts/system/prometheus-operator/icon-small.webp deleted file mode 100644 index f715e965c67da48e294afc372218afa16129cd44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmV+%0^|KsNk&E#0ssJ4MM6+kP&gn60ssI|2>_h|Dj)zL00ICsC9nc?$`Sqot+1~H z=E86spdO$%7;gY?CAaPH6Od)|J5W<6@tgGruo;$xG9t$+tMY{1iTe1B7ug*TYvEfp z>vC|Hpa1~={(AoUC-X#fZ*{xi%fVGlyc8tb%$3&w`y=&Mu3t#Dx$}K>=pl^mDE&RS zjVqt_$fRo(Xm+3HC@*=z&@lQb))rwGCahs|T|{Z=%*Z$wEw@F<%h*9pG(nBK_411> zM54{}N*l-6egx-@QVQ45+IUzWukM7I)-NKru#44-6`y7-7N2z1cA<)lIXE)iR6ZT=_I=bC|;y9N#ms4=_A|vvQQR|Iq&8v5K$7l`_+E7yX@#h!tIL7UjLd1we zMz?jw;Cenwr*}3|7MnfO{lA&J;q>2k|4!<5S{Of?j71uJJnW7kr|9ef@-NTTGU(k$ z!6oHO&w2)!j~hSdQthXzMc0?DspO1T;b`!w8io9xwDO2|B09kEw}lNkuccY`e^2Tg z(C0bU`z=tX4iYRhNNZXEDdoZaDckzbAde@f1g>?;=>OQ8_B^(?Q`fh~yTAT672-z< zjdw3-TcfXmy!RsBbxGU&V%x#3U1q%LuN0Q};s@M$6%Tw5$`gi90pVV)mnt0I74Pw= e@cuXJ{yzzU{U6O@7c64V;_7=l0#)&K)<6J)7!hdz diff --git a/archive/charts/system/prometheus-operator/icon.webp b/archive/charts/system/prometheus-operator/icon.webp deleted file mode 100644 index 2a86ab34483580dbef94f68f2f9887c3eb2a6799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2894 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 diff --git a/archive/charts/system/prometheus-operator/templates/NOTES.txt b/archive/charts/system/prometheus-operator/templates/NOTES.txt deleted file mode 100644 index efcb74cb772..00000000000 --- a/archive/charts/system/prometheus-operator/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/archive/charts/system/prometheus-operator/templates/common.yaml b/archive/charts/system/prometheus-operator/templates/common.yaml deleted file mode 100644 index 362fca94564..00000000000 --- a/archive/charts/system/prometheus-operator/templates/common.yaml +++ /dev/null @@ -1,4 +0,0 @@ -{{/* Make sure all variables are set properly */}} -{{- include "tc.v1.common.loader.init" . }} -{{/* Render the templates */}} -{{ include "tc.v1.common.loader.apply" . }} diff --git a/archive/charts/system/prometheus-operator/values.yaml b/archive/charts/system/prometheus-operator/values.yaml deleted file mode 100644 index 63bb1634e0e..00000000000 --- a/archive/charts/system/prometheus-operator/values.yaml +++ /dev/null @@ -1,146 +0,0 @@ -image: - repository: oci.trueforge.org/tccr/scratch - pullPolicy: IfNotPresent - tag: latest - -service: - main: - enabled: false - ports: - main: - enabled: false - -workload: - main: - enabled: false - -portal: - open: - enabled: false - -operator: - register: true - -kps: - ## Install Prometheus Operator CRDs - ## - crds: - enabled: true - - ## Manages Prometheus and Alertmanager components - ## - prometheusOperator: - enabled: true - - #### - ## - ## Everything down here, explicitly disables everything BUT the operator itself - ## - #### - - ## - global: - rbac: - create: true - - ## Create default rules for monitoring the cluster - ## - defaultRules: - create: false - - windowsMonitoring: - ## Deploys the windows-exporter and Windows-specific dashboards and rules (job name must be 'windows-exporter') - enabled: false - - ## Configuration for prometheus-windows-exporter - ## ref: https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-windows-exporter - ## - prometheus-windows-exporter: - ## Enable ServiceMonitor and set Kubernetes label to use as a job label - ## - prometheus: - monitor: - enabled: false - - ## Configuration for alertmanager - ## ref: https://prometheus.io/docs/alerting/alertmanager/ - ## - alertmanager: - ## Deploy alertmanager - ## - enabled: false - - ## Using default values from https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml - ## - grafana: - enabled: false - forceDeployDashboards: false - defaultDashboardsEnabled: false - - ## Flag to disable all the kubernetes component scrapers - ## - kubernetesServiceMonitors: - enabled: false - - ## Component scraping the kube api server - ## - kubeApiServer: - enabled: false - - ## Component scraping the kubelet and kubelet-hosted cAdvisor - ## - kubelet: - enabled: false - - ## Component scraping the kube controller manager - ## - kubeControllerManager: - enabled: false - - ## Component scraping coreDns. Use either this or kubeDns - ## - coreDns: - enabled: false - - ## Component scraping kubeDns. Use either this or coreDns - ## - kubeDns: - enabled: false - - ## Component scraping etcd - ## - kubeEtcd: - enabled: false - - ## Component scraping kube scheduler - ## - kubeScheduler: - enabled: false - - ## Component scraping kube proxy - ## - kubeProxy: - enabled: false - - ## Component scraping kube state metrics - ## - kubeStateMetrics: - enabled: false - - ## dontDeploy node exporter as a daemonset to all nodes - ## - nodeExporter: - enabled: false - - ## dont Deploy a Prometheus instance - ## - prometheus: - enabled: false - - ## Configuration for thanosRuler - ## ref: https://thanos.io/tip/components/rule.md/ - ## - thanosRuler: - ## Dont Deploy thanosRuler - ## - enabled: false diff --git a/archive/charts/system/traefik-crds/.helmignore b/archive/charts/system/traefik-crds/.helmignore deleted file mode 100644 index feb7464da6f..00000000000 --- a/archive/charts/system/traefik-crds/.helmignore +++ /dev/null @@ -1,32 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -# OWNERS file for Kubernetes -OWNERS -# helm-docs templates -*.gotmpl -# docs folder -/docs -# icon -icon.png -icon.webp -icon-small.webp diff --git a/archive/charts/system/traefik-crds/Chart.yaml b/archive/charts/system/traefik-crds/Chart.yaml deleted file mode 100644 index a912d7069c9..00000000000 --- a/archive/charts/system/traefik-crds/Chart.yaml +++ /dev/null @@ -1,41 +0,0 @@ -annotations: - artifacthub.io/links: |- - - name: support - url: https://discord.com/invite/tVsPTHWTtr - max_scale_version: 24.04.1 - min_scale_version: 24.04.0 - truecharts.org/category: network - truecharts.org/max_helm_version: "3.17" - truecharts.org/min_helm_version: "3.14" - truecharts.org/train: system -apiVersion: v2 -appVersion: latest -dependencies: - - name: common - version: 25.4.10 - repository: oci://oci.trueforge.org/truecharts - condition: "" - alias: "" - tags: [] - import-values: [] -deprecated: false -description: Traefik-CRDs contains the CRD's for Traefik -home: https://truecharts.org/charts/system/traefik-crds -icon: https://truecharts.org/img/hotlink-ok/chart-icons/traefik-crds.webp -keywords: - - traefik - - ingress -kubeVersion: '>=1.24.0-0' -maintainers: - - name: TrueCharts - email: info@truecharts.org - url: https://truecharts.org -name: traefik-crds -sources: - - https://github.com/traefik/traefik - - https://github.com/traefik/traefik-helm-chart - - https://github.com/truecharts/charts/tree/master/charts/system/traefik-crds - - https://github.com/truecharts/containers/tree/master/apps/scratch - - https://traefik.io/ -type: application -version: 3.5.1 diff --git a/archive/charts/system/traefik-crds/README.md b/archive/charts/system/traefik-crds/README.md deleted file mode 100644 index b064f12f3fd..00000000000 --- a/archive/charts/system/traefik-crds/README.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: README ---- - -## General Info - -For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/system/traefik-crds) - -**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** - -## Installation - -### Helm-Chart installation - -To install TrueCharts Helm charts using Helm, you can use our OCI Repository. - -`helm install mychart oci://oci.trueforge.org/truecharts/traefik-crds` - -For more information on how to install TrueCharts Helm charts, checkout the [instructions on the website](/guides) - -## Chart Specific Guides and information - -All our charts have dedicated documentation pages. -The documentation for this chart can be found here: -https://truecharts.org/charts/system/traefik-crds - -## Configuration Options - -To view the chart specific options, please view Values.yaml included in the chart. -The most recent version of which, is available here: https://github.com/trueforge/truecharts/blob/master/charts/system/traefik-crds/values.yaml - -All our Charts use a shared "common" library chart that contains most of the templating and options. -For the complete overview of all available options, please checkout the documentation for them on the [common docs on our website](/common) - -For information about the common chart and all defaults included with it, please review its values.yaml file available here: https://github.com/trueforge/truecharts/blob/master/charts/library/common/values.yaml - -## Support - -- See the [Website](https://truecharts.org) -- Check our [Discord](https://discord.gg/tVsPTHWTtr) -- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - ---- - -## Sponsor TrueCharts - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](/general/sponsor) or contributing back to the project any way you can! - -_All Rights Reserved - The TrueCharts Project_ diff --git a/archive/charts/system/traefik-crds/charts/common-25.4.10.tgz b/archive/charts/system/traefik-crds/charts/common-25.4.10.tgz deleted file mode 100644 index e13b07a14ae50c5efc6eb938da087366b061b19f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100673 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

m~s_s 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 diff --git a/archive/charts/system/traefik-crds/dashboard.json b/archive/charts/system/traefik-crds/dashboard.json deleted file mode 100644 index dccba9bde75..00000000000 --- a/archive/charts/system/traefik-crds/dashboard.json +++ /dev/null @@ -1,1568 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__elements": {}, - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "9.3.1" - }, - { - "type": "panel", - "id": "piechart", - "name": "Pie chart", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, - { - "type": "panel", - "id": "stat", - "name": "Stat", - "version": "" - }, - { - "type": "panel", - "id": "timeseries", - "name": "Time series", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "target": { - "limit": 100, - "matchAny": false, - "tags": [], - "type": "dashboard" - }, - "type": "dashboard" - } - ] - }, - "description": "Official dashboard for Traefik on Kubernetes", - "editable": false, - "fiscalYearStartMonth": 0, - "gnetId": 17347, - "graphTooltip": 0, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 9, - "panels": [], - "title": "General", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 2, - "w": 5, - "x": 0, - "y": 1 - }, - "id": 13, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.3.1", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "count(traefik_config_reloads_total)", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } - ], - "title": "Traefik Instances", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 7, - "x": 5, - "y": 1 - }, - "id": 7, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "sum(rate(traefik_entrypoint_requests_total{entrypoint=~\"$entrypoint\"}[1m])) by (entrypoint)", - "legendFormat": "{{entrypoint}}", - "range": true, - "refId": "A" - } - ], - "title": "Requests per Entrypoint", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "https://medium.com/@tristan_96324/prometheus-apdex-alerting-d17a065e39d0", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 6, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "(sum(rate(traefik_entrypoint_request_duration_seconds_bucket{le=\"0.3\",code=\"200\",entrypoint=~\"$entrypoint\"}[5m])) by (method) + \n sum(rate(traefik_entrypoint_request_duration_seconds_bucket{le=\"1.2\",code=\"200\",entrypoint=~\"$entrypoint\"}[5m])) by (method)) / 2 / \n sum(rate(traefik_entrypoint_request_duration_seconds_count{code=\"200\",entrypoint=~\"$entrypoint\"}[5m])) by (method)\n", - "legendFormat": "{{method}}", - "range": true, - "refId": "A" - } - ], - "title": "Apdex score", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "Mean Distribution", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - } - }, - "mappings": [], - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 5, - "x": 0, - "y": 3 - }, - "id": 14, - "options": { - "legend": { - "displayMode": "list", - "placement": "right", - "showLegend": true, - "values": ["percent"] - }, - "pieType": "pie", - "reduceOptions": { - "calcs": ["mean"], - "fields": "", - "values": false - }, - "tooltip": { - "mode": "multi", - "sort": "asc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "sum(rate(traefik_service_requests_total{service=~\"$service.*\",protocol=\"http\"}[1m])) by (method, code)", - "legendFormat": "{{method}}[{{code}}]", - "range": true, - "refId": "A" - } - ], - "title": "Http Code ", - "type": "piechart" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 23, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n traefik_service_request_duration_seconds_sum{service=~\"$service.*\",protocol=\"http\"} / \n traefik_service_request_duration_seconds_count{service=~\"$service.*\",protocol=\"http\"},\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)\n\n", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Top slow services", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 5, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", - "legendFormat": "[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Most requested services", - "type": "timeseries" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 17 - }, - "id": 11, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 18 - }, - "id": 3, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "label_replace(\n 1 - (sum by (service)\n (rate(traefik_service_request_duration_seconds_bucket{le=\"1.2\",service=~\"$service.*\"}[5m])) / sum by (service) \n (rate(traefik_service_request_duration_seconds_count{service=~\"$service.*\"}[5m]))\n ) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\"\n)", - "legendFormat": "{{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Services failing SLO of 1200ms", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 18 - }, - "id": 4, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "label_replace(\n 1 - (sum by (service)\n (rate(traefik_service_request_duration_seconds_bucket{le=\"0.3\",service=~\"$service.*\"}[5m])) / sum by (service) \n (rate(traefik_service_request_duration_seconds_count{service=~\"$service.*\"}[5m]))\n ) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\"\n)", - "legendFormat": "{{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Services failing SLO of 300ms", - "type": "timeseries" - } - ], - "title": "SLO", - "type": "row" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 18 - }, - "id": 16, - "panels": [], - "title": "HTTP Details", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 12, - "w": 8, - "x": 0, - "y": 19 - }, - "id": 17, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code=~\"2..\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "2xx over 5 min", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 12, - "w": 8, - "x": 8, - "y": 19 - }, - "id": 18, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code=~\"5..\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "5xx over 5 min", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "reqps" - }, - "overrides": [] - }, - "gridPos": { - "h": 12, - "w": 8, - "x": 16, - "y": 19 - }, - "id": 19, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "bottom", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method,code) \n (rate(traefik_service_requests_total{service=~\"$service.*\",code!~\"2..|5..\",protocol=\"http\"}[5m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", - "legendFormat": "{{method}}[{{code}}] on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Other codes over 5 min", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "binBps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 31 - }, - "id": 20, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method) \n (rate(traefik_service_requests_bytes_total{service=~\"$service.*\",protocol=\"http\"}[1m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", - "legendFormat": "{{method}} on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Requests Size", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "binBps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 31 - }, - "id": 24, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Mean", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "topk(15,\n label_replace(\n sum by (service,method) \n (rate(traefik_service_responses_bytes_total{service=~\"$service.*\",protocol=\"http\"}[1m])) > 0,\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")\n)", - "legendFormat": "{{method}} on {{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Responses Size", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 39 - }, - "id": 2, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "label_replace(\n sum(traefik_service_open_connections{service=~\"$service.*\"}) by (service),\n \"service\", \"$1\", \"service\", \"([^-]+-[^-]+).*\")", - "legendFormat": "{{service}}", - "range": true, - "refId": "A" - } - ], - "title": "Connections per Service", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 39 - }, - "id": 21, - "options": { - "legend": { - "calcs": ["mean", "max"], - "displayMode": "table", - "placement": "right", - "showLegend": true, - "sortBy": "Max", - "sortDesc": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "sum(traefik_entrypoint_open_connections{entrypoint=~\"$entrypoint\"}) by (entrypoint)\n", - "legendFormat": "{{entrypoint}}", - "range": true, - "refId": "A" - } - ], - "title": "Connections per Entrypoint", - "type": "timeseries" - } - ], - "refresh": false, - "schemaVersion": 37, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "includeAll": false, - "multi": false, - "name": "DS_PROMETHEUS", - "label": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "definition": "label_values(traefik_entrypoint_open_connections, entrypoint)", - "hide": 0, - "includeAll": true, - "multi": false, - "name": "entrypoint", - "options": [], - "query": { - "query": "label_values(traefik_entrypoint_open_connections, entrypoint)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - }, - { - "current": {}, - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "definition": "label_values(traefik_service_open_connections, service)", - "hide": 0, - "includeAll": true, - "multi": false, - "name": "service", - "options": [], - "query": { - "query": "label_values(traefik_service_open_connections, service)", - "refId": "StandardVariableQuery" - }, - "refresh": 2, - "regex": "/([^-]+-[^-]+).*/", - "skipUrlSync": false, - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Traefik Official Kubernetes Dashboard", - "uid": "n5bu_kv4k", - "version": 6, - "weekStart": "" -} diff --git a/archive/charts/system/traefik-crds/icon-small.webp b/archive/charts/system/traefik-crds/icon-small.webp deleted file mode 100644 index ef3f00d1dda30cf504e4f2ff44d8072732da6a7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gO*Nk&Fm0ssJ4MM6+kP&il$0000G0000V0018V06|PpNdEu;00DryZQJqZ z`C+zg+h($D+qSJ_uPIu6|H0Cly*2wy-}^mdj))0>|D~{op}w*Jo~OTut(m2}PpAcw zXPd89VpC(XQBH>}ioyx`d?SRAPeSHUTnOy}ipCSoHij~!Qk*G(61y3WAH^x~X4%F0 z^ivSWL?3nnlPxq}Qyg}XJ@Co&KIRIDx|bAWkBXKiNx_Hws&JqJfxL7f8}K2JU)$XyI2InTk@B_%2}E7KuE+Y!Uvxk)Ip zrnJ@Du_|*!48yvpMzFg++rrDCA}uHs1Jp!7TttS?=L-vSgi-!#09H^qAT$900B{8W zodGH!03ZMY05m1A0Za`*4tsB6587fi!u0)_s|m60W=<~=YGA>7bhY00h(;%D0092} zpd+?Kx)X1n3>7_( z#(=!YPJ`K$b6eIe&2RB{he^4A)}i*L%u!q3KR%#M6mZdnx3=df-IT_6-Fyr)xT~@~ z=vA`Rm-@4swZJG-odJ8x?Z0Qk^630?91!mmnrL3u&Lww zk}I_B-G1+wIcq?4ZHTK4o)za|B({c`2zRuv5C`Le`RXvZU#;2k-CumRr0Pj*DApigX diff --git a/archive/charts/system/traefik-crds/icon.webp b/archive/charts/system/traefik-crds/icon.webp deleted file mode 100644 index cc0dd77b0bbb48e91f08f4496cb3d65f8b2e7ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3696 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 OZHz@g000000001dCN# 0 || size(self.options) > 0 : true' - required: - - name - - port - - protocol - type: object - maxItems: 64 - minItems: 1 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - x-kubernetes-validations: - - message: tls must not be specified for protocols ['HTTP', 'TCP', - 'UDP'] - rule: 'self.all(l, l.protocol in [''HTTP'', ''TCP'', ''UDP''] ? - !has(l.tls) : true)' - - message: tls mode must be Terminate for protocol HTTPS - rule: 'self.all(l, (l.protocol == ''HTTPS'' && has(l.tls)) ? (l.tls.mode - == '''' || l.tls.mode == ''Terminate'') : true)' - - message: hostname must not be specified for protocols ['TCP', 'UDP'] - rule: 'self.all(l, l.protocol in [''TCP'', ''UDP''] ? (!has(l.hostname) - || l.hostname == '''') : true)' - - message: Listener name must be unique within the Gateway - rule: self.all(l1, self.exists_one(l2, l1.name == l2.name)) - - message: Combination of port, protocol and hostname must be unique - for each listener - rule: 'self.all(l1, self.exists_one(l2, l1.port == l2.port && l1.protocol - == l2.protocol && (has(l1.hostname) && has(l2.hostname) ? l1.hostname - == l2.hostname : !has(l1.hostname) && !has(l2.hostname))))' - required: - - gatewayClassName - - listeners - type: object - status: - default: - conditions: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Accepted - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: Status defines the current state of Gateway. - properties: - addresses: - description: |+ - Addresses lists the network addresses that have been bound to the - Gateway. - - - This list may differ from the addresses provided in the spec under some - conditions: - - - * no addresses are specified, all addresses are dynamically assigned - * a combination of specified and dynamic addresses are assigned - * a specified address was unusable (e.g. already in use) - - - items: - description: GatewayStatusAddress describes a network address that - is bound to a Gateway. - oneOf: - - properties: - type: - enum: - - IPAddress - value: - anyOf: - - format: ipv4 - - format: ipv6 - - properties: - type: - not: - enum: - - IPAddress - properties: - type: - default: IPAddress - description: Type of the address. - maxLength: 253 - minLength: 1 - pattern: ^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - value: - description: |- - Value of the address. The validity of the values will depend - on the type and support by the controller. - - - Examples: `1.2.3.4`, `128::1`, `my-ip-address`. - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - x-kubernetes-validations: - - message: Hostname value must only contain valid characters (matching - ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$) - rule: 'self.type == ''Hostname'' ? self.value.matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"""): - true' - maxItems: 16 - type: array - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Accepted - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the Gateway. - - - Implementations should prefer to express Gateway conditions - using the `GatewayConditionType` and `GatewayConditionReason` - constants so that operators and tools can converge on a common - vocabulary to describe Gateway state. - - - Known condition types are: - - - * "Accepted" - * "Programmed" - * "Ready" - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - listeners: - description: Listeners provide status for each unique listener port - defined in the Spec. - items: - description: ListenerStatus is the status associated with a Listener. - properties: - attachedRoutes: - description: |- - AttachedRoutes represents the total number of Routes that have been - successfully attached to this Listener. - - - Successful attachment of a Route to a Listener is based solely on the - combination of the AllowedRoutes field on the corresponding Listener - and the Route's ParentRefs field. A Route is successfully attached to - a Listener when it is selected by the Listener's AllowedRoutes field - AND the Route has a valid ParentRef selecting the whole Gateway - resource or a specific Listener as a parent resource (more detail on - attachment semantics can be found in the documentation on the various - Route kinds ParentRefs fields). Listener or Route status does not impact - successful attachment, i.e. the AttachedRoutes field count MUST be set - for Listeners with condition Accepted: false and MUST count successfully - attached Routes that may themselves have Accepted: false conditions. - - - Uses for this field include troubleshooting Route attachment and - measuring blast radius/impact of changes to a Listener. - format: int32 - type: integer - conditions: - description: Conditions describe the current condition of this - listener. - items: - description: "Condition contains details for one aspect of - the current state of this API Resource.\n---\nThis struct - is intended for direct use as an array at the field path - .status.conditions. For example,\n\n\n\ttype FooStatus - struct{\n\t // Represents the observations of a foo's - current state.\n\t // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // - +listType=map\n\t // +listMapKey=type\n\t Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - name: - description: Name is the name of the Listener that this status - corresponds to. - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - supportedKinds: - description: |- - SupportedKinds is the list indicating the Kinds supported by this - listener. This MUST represent the kinds an implementation supports for - that Listener configuration. - - - If kinds are specified in Spec that are not supported, they MUST NOT - appear in this list and an implementation MUST set the "ResolvedRefs" - condition to "False" with the "InvalidRouteKinds" reason. If both valid - and invalid Route kinds are specified, the implementation MUST - reference the valid Route kinds that have been specified. - items: - description: RouteGroupKind indicates the group and kind of - a Route resource. - properties: - group: - default: gateway.networking.k8s.io - description: Group is the group of the Route. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is the kind of the Route. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - required: - - kind - type: object - maxItems: 8 - type: array - required: - - attachedRoutes - - conditions - - name - - supportedKinds - type: object - maxItems: 64 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .spec.gatewayClassName - name: Class - type: string - - jsonPath: .status.addresses[*].value - name: Address - type: string - - jsonPath: .status.conditions[?(@.type=="Programmed")].status - name: Programmed - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: |- - Gateway represents an instance of a service-traffic handling infrastructure - by binding Listeners to a set of IP addresses. - 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: Spec defines the desired state of Gateway. - properties: - addresses: - description: |+ - Addresses requested for this Gateway. This is optional and behavior can - depend on the implementation. If a value is set in the spec and the - requested address is invalid or unavailable, the implementation MUST - indicate this in the associated entry in GatewayStatus.Addresses. - - - The Addresses field represents a request for the address(es) on the - "outside of the Gateway", that traffic bound for this Gateway will use. - This could be the IP address or hostname of an external load balancer or - other networking infrastructure, or some other address that traffic will - be sent to. - - - If no Addresses are specified, the implementation MAY schedule the - Gateway in an implementation-specific manner, assigning an appropriate - set of Addresses. - - - The implementation MUST bind all Listeners to every GatewayAddress that - it assigns to the Gateway and add a corresponding entry in - GatewayStatus.Addresses. - - - Support: Extended - - - items: - description: GatewayAddress describes an address that can be bound - to a Gateway. - oneOf: - - properties: - type: - enum: - - IPAddress - value: - anyOf: - - format: ipv4 - - format: ipv6 - - properties: - type: - not: - enum: - - IPAddress - properties: - type: - default: IPAddress - description: Type of the address. - maxLength: 253 - minLength: 1 - pattern: ^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - value: - description: |- - Value of the address. The validity of the values will depend - on the type and support by the controller. - - - Examples: `1.2.3.4`, `128::1`, `my-ip-address`. - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - x-kubernetes-validations: - - message: Hostname value must only contain valid characters (matching - ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$) - rule: 'self.type == ''Hostname'' ? self.value.matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"""): - true' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: IPAddress values must be unique - rule: 'self.all(a1, a1.type == ''IPAddress'' ? self.exists_one(a2, - a2.type == a1.type && a2.value == a1.value) : true )' - - message: Hostname values must be unique - rule: 'self.all(a1, a1.type == ''Hostname'' ? self.exists_one(a2, - a2.type == a1.type && a2.value == a1.value) : true )' - gatewayClassName: - description: |- - GatewayClassName used for this Gateway. This is the name of a - GatewayClass resource. - maxLength: 253 - minLength: 1 - type: string - listeners: - description: |- - Listeners associated with this Gateway. Listeners define - logical endpoints that are bound on this Gateway's addresses. - At least one Listener MUST be specified. - - - Each Listener in a set of Listeners (for example, in a single Gateway) - MUST be _distinct_, in that a traffic flow MUST be able to be assigned to - exactly one listener. (This section uses "set of Listeners" rather than - "Listeners in a single Gateway" because implementations MAY merge configuration - from multiple Gateways onto a single data plane, and these rules _also_ - apply in that case). - - - Practically, this means that each listener in a set MUST have a unique - combination of Port, Protocol, and, if supported by the protocol, Hostname. - - - Some combinations of port, protocol, and TLS settings are considered - Core support and MUST be supported by implementations based on their - targeted conformance profile: - - - HTTP Profile - - - 1. HTTPRoute, Port: 80, Protocol: HTTP - 2. HTTPRoute, Port: 443, Protocol: HTTPS, TLS Mode: Terminate, TLS keypair provided - - - TLS Profile - - - 1. TLSRoute, Port: 443, Protocol: TLS, TLS Mode: Passthrough - - - "Distinct" Listeners have the following property: - - - The implementation can match inbound requests to a single distinct - Listener. When multiple Listeners share values for fields (for - example, two Listeners with the same Port value), the implementation - can match requests to only one of the Listeners using other - Listener fields. - - - For example, the following Listener scenarios are distinct: - - - 1. Multiple Listeners with the same Port that all use the "HTTP" - Protocol that all have unique Hostname values. - 2. Multiple Listeners with the same Port that use either the "HTTPS" or - "TLS" Protocol that all have unique Hostname values. - 3. A mixture of "TCP" and "UDP" Protocol Listeners, where no Listener - with the same Protocol has the same Port value. - - - Some fields in the Listener struct have possible values that affect - whether the Listener is distinct. Hostname is particularly relevant - for HTTP or HTTPS protocols. - - - When using the Hostname value to select between same-Port, same-Protocol - Listeners, the Hostname value must be different on each Listener for the - Listener to be distinct. - - - When the Listeners are distinct based on Hostname, inbound request - hostnames MUST match from the most specific to least specific Hostname - values to choose the correct Listener and its associated set of Routes. - - - Exact matches must be processed before wildcard matches, and wildcard - matches must be processed before fallback (empty Hostname value) - matches. For example, `"foo.example.com"` takes precedence over - `"*.example.com"`, and `"*.example.com"` takes precedence over `""`. - - - Additionally, if there are multiple wildcard entries, more specific - wildcard entries must be processed before less specific wildcard entries. - For example, `"*.foo.example.com"` takes precedence over `"*.example.com"`. - The precise definition here is that the higher the number of dots in the - hostname to the right of the wildcard character, the higher the precedence. - - - The wildcard character will match any number of characters _and dots_ to - the left, however, so `"*.example.com"` will match both - `"foo.bar.example.com"` _and_ `"bar.example.com"`. - - - If a set of Listeners contains Listeners that are not distinct, then those - Listeners are Conflicted, and the implementation MUST set the "Conflicted" - condition in the Listener Status to "True". - - - Implementations MAY choose to accept a Gateway with some Conflicted - Listeners only if they only accept the partial Listener set that contains - no Conflicted Listeners. To put this another way, implementations may - accept a partial Listener set only if they throw out *all* the conflicting - Listeners. No picking one of the conflicting listeners as the winner. - This also means that the Gateway must have at least one non-conflicting - Listener in this case, otherwise it violates the requirement that at - least one Listener must be present. - - - The implementation MUST set a "ListenersNotValid" condition on the - Gateway Status when the Gateway contains Conflicted Listeners whether or - not they accept the Gateway. That Condition SHOULD clearly - indicate in the Message which Listeners are conflicted, and which are - Accepted. Additionally, the Listener status for those listeners SHOULD - indicate which Listeners are conflicted and not Accepted. - - - A Gateway's Listeners are considered "compatible" if: - - - 1. They are distinct. - 2. The implementation can serve them in compliance with the Addresses - requirement that all Listeners are available on all assigned - addresses. - - - Compatible combinations in Extended support are expected to vary across - implementations. A combination that is compatible for one implementation - may not be compatible for another. - - - For example, an implementation that cannot serve both TCP and UDP listeners - on the same address, or cannot mix HTTPS and generic TLS listens on the same port - would not consider those cases compatible, even though they are distinct. - - - Note that requests SHOULD match at most one Listener. For example, if - Listeners are defined for "foo.example.com" and "*.example.com", a - request to "foo.example.com" SHOULD only be routed using routes attached - to the "foo.example.com" Listener (and not the "*.example.com" Listener). - This concept is known as "Listener Isolation". Implementations that do - not support Listener Isolation MUST clearly document this. - - - Implementations MAY merge separate Gateways onto a single set of - Addresses if all Listeners across all Gateways are compatible. - - - Support: Core - items: - description: |- - Listener embodies the concept of a logical endpoint where a Gateway accepts - network connections. - properties: - allowedRoutes: - default: - namespaces: - from: Same - description: |- - AllowedRoutes defines the types of routes that MAY be attached to a - Listener and the trusted namespaces where those Route resources MAY be - present. - - - Although a client request may match multiple route rules, only one rule - may ultimately receive the request. Matching precedence MUST be - determined in order of the following criteria: - - - * The most specific match as defined by the Route type. - * The oldest Route based on creation timestamp. For example, a Route with - a creation timestamp of "2020-09-08 01:02:03" is given precedence over - a Route with a creation timestamp of "2020-09-08 01:02:04". - * If everything else is equivalent, the Route appearing first in - alphabetical order (namespace/name) should be given precedence. For - example, foo/bar is given precedence over foo/baz. - - - All valid rules within a Route attached to this Listener should be - implemented. Invalid Route rules can be ignored (sometimes that will mean - the full Route). If a Route rule transitions from valid to invalid, - support for that Route rule should be dropped to ensure consistency. For - example, even if a filter specified by a Route rule is invalid, the rest - of the rules within that Route should still be supported. - - - Support: Core - properties: - kinds: - description: |- - Kinds specifies the groups and kinds of Routes that are allowed to bind - to this Gateway Listener. When unspecified or empty, the kinds of Routes - selected are determined using the Listener protocol. - - - A RouteGroupKind MUST correspond to kinds of Routes that are compatible - with the application protocol specified in the Listener's Protocol field. - If an implementation does not support or recognize this resource type, it - MUST set the "ResolvedRefs" condition to False for this Listener with the - "InvalidRouteKinds" reason. - - - Support: Core - items: - description: RouteGroupKind indicates the group and kind - of a Route resource. - properties: - group: - default: gateway.networking.k8s.io - description: Group is the group of the Route. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is the kind of the Route. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - required: - - kind - type: object - maxItems: 8 - type: array - namespaces: - default: - from: Same - description: |- - Namespaces indicates namespaces from which Routes may be attached to this - Listener. This is restricted to the namespace of this Gateway by default. - - - Support: Core - properties: - from: - default: Same - description: |- - From indicates where Routes will be selected for this Gateway. Possible - values are: - - - * All: Routes in all namespaces may be used by this Gateway. - * Selector: Routes in namespaces selected by the selector may be used by - this Gateway. - * Same: Only Routes in the same namespace may be used by this Gateway. - - - Support: Core - enum: - - All - - Selector - - Same - type: string - selector: - description: |- - Selector must be specified when From is set to "Selector". In that case, - only Routes in Namespaces matching this Selector will be selected by this - Gateway. This field is ignored for other values of "From". - - - Support: Core - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - x-kubernetes-list-type: atomic - required: - - key - - operator - type: object - type: array - x-kubernetes-list-type: atomic - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - type: object - type: object - hostname: - description: |- - Hostname specifies the virtual hostname to match for protocol types that - define this concept. When unspecified, all hostnames are matched. This - field is ignored for protocols that don't require hostname based - matching. - - - Implementations MUST apply Hostname matching appropriately for each of - the following protocols: - - - * TLS: The Listener Hostname MUST match the SNI. - * HTTP: The Listener Hostname MUST match the Host header of the request. - * HTTPS: The Listener Hostname SHOULD match at both the TLS and HTTP - protocol layers as described above. If an implementation does not - ensure that both the SNI and Host header match the Listener hostname, - it MUST clearly document that. - - - For HTTPRoute and TLSRoute resources, there is an interaction with the - `spec.hostnames` array. When both listener and route specify hostnames, - there MUST be an intersection between the values for a Route to be - accepted. For more information, refer to the Route specific Hostnames - documentation. - - - Hostnames that are prefixed with a wildcard label (`*.`) are interpreted - as a suffix match. That means that a match for `*.example.com` would match - both `test.example.com`, and `foo.test.example.com`, but not `example.com`. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - name: - description: |- - Name is the name of the Listener. This name MUST be unique within a - Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - port: - description: |- - Port is the network port. Multiple listeners may use the - same port, subject to the Listener compatibility rules. - - - Support: Core - format: int32 - maximum: 65535 - minimum: 1 - type: integer - protocol: - description: |- - Protocol specifies the network protocol this listener expects to receive. - - - Support: Core - maxLength: 255 - minLength: 1 - pattern: ^[a-zA-Z0-9]([-a-zSA-Z0-9]*[a-zA-Z0-9])?$|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9]+$ - type: string - tls: - description: |- - TLS is the TLS configuration for the Listener. This field is required if - the Protocol field is "HTTPS" or "TLS". It is invalid to set this field - if the Protocol field is "HTTP", "TCP", or "UDP". - - - The association of SNIs to Certificate defined in GatewayTLSConfig is - defined based on the Hostname field for this listener. - - - The GatewayClass MUST use the longest matching SNI out of all - available certificates for any TLS handshake. - - - Support: Core - properties: - certificateRefs: - description: |- - CertificateRefs contains a series of references to Kubernetes objects that - contains TLS certificates and private keys. These certificates are used to - establish a TLS handshake for requests that match the hostname of the - associated listener. - - - A single CertificateRef to a Kubernetes Secret has "Core" support. - Implementations MAY choose to support attaching multiple certificates to - a Listener, but this behavior is implementation-specific. - - - References to a resource in different namespace are invalid UNLESS there - is a ReferenceGrant in the target namespace that allows the certificate - to be attached. If a ReferenceGrant does not allow this reference, the - "ResolvedRefs" condition MUST be set to False for this listener with the - "RefNotPermitted" reason. - - - This field is required to have at least one element when the mode is set - to "Terminate" (default) and is optional otherwise. - - - CertificateRefs can reference to standard Kubernetes resources, i.e. - Secret, or implementation-specific custom resources. - - - Support: Core - A single reference to a Kubernetes Secret of type kubernetes.io/tls - - - Support: Implementation-specific (More than one reference or other resource types) - items: - description: |- - SecretObjectReference identifies an API object including its namespace, - defaulting to Secret. - - - The API object must be valid in the cluster; the Group and Kind must - be registered in the cluster for this reference to be valid. - - - References to objects with invalid Group and Kind are not valid, and must - be rejected by the implementation, with appropriate Conditions set - on the containing object. - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Secret - description: Kind is kind of the referent. For example - "Secret". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referenced object. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - required: - - name - type: object - maxItems: 64 - type: array - mode: - default: Terminate - description: |- - Mode defines the TLS behavior for the TLS session initiated by the client. - There are two possible modes: - - - - Terminate: The TLS session between the downstream client and the - Gateway is terminated at the Gateway. This mode requires certificates - to be specified in some way, such as populating the certificateRefs - field. - - Passthrough: The TLS session is NOT terminated by the Gateway. This - implies that the Gateway can't decipher the TLS stream except for - the ClientHello message of the TLS protocol. The certificateRefs field - is ignored in this mode. - - - Support: Core - enum: - - Terminate - - Passthrough - type: string - options: - additionalProperties: - description: |- - AnnotationValue is the value of an annotation in Gateway API. This is used - for validation of maps such as TLS options. This roughly matches Kubernetes - annotation validation, although the length validation in that case is based - on the entire size of the annotations struct. - maxLength: 4096 - minLength: 0 - type: string - description: |- - Options are a list of key/value pairs to enable extended TLS - configuration for each implementation. For example, configuring the - minimum TLS version or supported cipher suites. - - - A set of common keys MAY be defined by the API in the future. To avoid - any ambiguity, implementation-specific definitions MUST use - domain-prefixed names, such as `example.com/my-custom-option`. - Un-prefixed names are reserved for key names defined by Gateway API. - - - Support: Implementation-specific - maxProperties: 16 - type: object - type: object - x-kubernetes-validations: - - message: certificateRefs or options must be specified when - mode is Terminate - rule: 'self.mode == ''Terminate'' ? size(self.certificateRefs) - > 0 || size(self.options) > 0 : true' - required: - - name - - port - - protocol - type: object - maxItems: 64 - minItems: 1 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - x-kubernetes-validations: - - message: tls must not be specified for protocols ['HTTP', 'TCP', - 'UDP'] - rule: 'self.all(l, l.protocol in [''HTTP'', ''TCP'', ''UDP''] ? - !has(l.tls) : true)' - - message: tls mode must be Terminate for protocol HTTPS - rule: 'self.all(l, (l.protocol == ''HTTPS'' && has(l.tls)) ? (l.tls.mode - == '''' || l.tls.mode == ''Terminate'') : true)' - - message: hostname must not be specified for protocols ['TCP', 'UDP'] - rule: 'self.all(l, l.protocol in [''TCP'', ''UDP''] ? (!has(l.hostname) - || l.hostname == '''') : true)' - - message: Listener name must be unique within the Gateway - rule: self.all(l1, self.exists_one(l2, l1.name == l2.name)) - - message: Combination of port, protocol and hostname must be unique - for each listener - rule: 'self.all(l1, self.exists_one(l2, l1.port == l2.port && l1.protocol - == l2.protocol && (has(l1.hostname) && has(l2.hostname) ? l1.hostname - == l2.hostname : !has(l1.hostname) && !has(l2.hostname))))' - required: - - gatewayClassName - - listeners - type: object - status: - default: - conditions: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Accepted - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: Status defines the current state of Gateway. - properties: - addresses: - description: |+ - Addresses lists the network addresses that have been bound to the - Gateway. - - - This list may differ from the addresses provided in the spec under some - conditions: - - - * no addresses are specified, all addresses are dynamically assigned - * a combination of specified and dynamic addresses are assigned - * a specified address was unusable (e.g. already in use) - - - items: - description: GatewayStatusAddress describes a network address that - is bound to a Gateway. - oneOf: - - properties: - type: - enum: - - IPAddress - value: - anyOf: - - format: ipv4 - - format: ipv6 - - properties: - type: - not: - enum: - - IPAddress - properties: - type: - default: IPAddress - description: Type of the address. - maxLength: 253 - minLength: 1 - pattern: ^Hostname|IPAddress|NamedAddress|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - value: - description: |- - Value of the address. The validity of the values will depend - on the type and support by the controller. - - - Examples: `1.2.3.4`, `128::1`, `my-ip-address`. - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - x-kubernetes-validations: - - message: Hostname value must only contain valid characters (matching - ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$) - rule: 'self.type == ''Hostname'' ? self.value.matches(r"""^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$"""): - true' - maxItems: 16 - type: array - conditions: - default: - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Accepted - - lastTransitionTime: "1970-01-01T00:00:00Z" - message: Waiting for controller - reason: Pending - status: Unknown - type: Programmed - description: |- - Conditions describe the current conditions of the Gateway. - - - Implementations should prefer to express Gateway conditions - using the `GatewayConditionType` and `GatewayConditionReason` - constants so that operators and tools can converge on a common - vocabulary to describe Gateway state. - - - Known condition types are: - - - * "Accepted" - * "Programmed" - * "Ready" - items: - description: "Condition contains details for one aspect of the current - state of this API Resource.\n---\nThis struct is intended for - direct use as an array at the field path .status.conditions. For - example,\n\n\n\ttype FooStatus struct{\n\t // Represents the - observations of a foo's current state.\n\t // Known .status.conditions.type - are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t - \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - listeners: - description: Listeners provide status for each unique listener port - defined in the Spec. - items: - description: ListenerStatus is the status associated with a Listener. - properties: - attachedRoutes: - description: |- - AttachedRoutes represents the total number of Routes that have been - successfully attached to this Listener. - - - Successful attachment of a Route to a Listener is based solely on the - combination of the AllowedRoutes field on the corresponding Listener - and the Route's ParentRefs field. A Route is successfully attached to - a Listener when it is selected by the Listener's AllowedRoutes field - AND the Route has a valid ParentRef selecting the whole Gateway - resource or a specific Listener as a parent resource (more detail on - attachment semantics can be found in the documentation on the various - Route kinds ParentRefs fields). Listener or Route status does not impact - successful attachment, i.e. the AttachedRoutes field count MUST be set - for Listeners with condition Accepted: false and MUST count successfully - attached Routes that may themselves have Accepted: false conditions. - - - Uses for this field include troubleshooting Route attachment and - measuring blast radius/impact of changes to a Listener. - format: int32 - type: integer - conditions: - description: Conditions describe the current condition of this - listener. - items: - description: "Condition contains details for one aspect of - the current state of this API Resource.\n---\nThis struct - is intended for direct use as an array at the field path - .status.conditions. For example,\n\n\n\ttype FooStatus - struct{\n\t // Represents the observations of a foo's - current state.\n\t // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // - +listType=map\n\t // +listMapKey=type\n\t Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - name: - description: Name is the name of the Listener that this status - corresponds to. - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - supportedKinds: - description: |- - SupportedKinds is the list indicating the Kinds supported by this - listener. This MUST represent the kinds an implementation supports for - that Listener configuration. - - - If kinds are specified in Spec that are not supported, they MUST NOT - appear in this list and an implementation MUST set the "ResolvedRefs" - condition to "False" with the "InvalidRouteKinds" reason. If both valid - and invalid Route kinds are specified, the implementation MUST - reference the valid Route kinds that have been specified. - items: - description: RouteGroupKind indicates the group and kind of - a Route resource. - properties: - group: - default: gateway.networking.k8s.io - description: Group is the group of the Route. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is the kind of the Route. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - required: - - kind - type: object - maxItems: 8 - type: array - required: - - attachedRoutes - - conditions - - name - - supportedKinds - type: object - maxItems: 64 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null ---- -# -# config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml -# -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/2997 - gateway.networking.k8s.io/bundle-version: v1.1.0 - gateway.networking.k8s.io/channel: standard - creationTimestamp: null - name: grpcroutes.gateway.networking.k8s.io -spec: - group: gateway.networking.k8s.io - names: - categories: - - gateway-api - kind: GRPCRoute - listKind: GRPCRouteList - plural: grpcroutes - singular: grpcroute - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.hostnames - name: Hostnames - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: |- - GRPCRoute provides a way to route gRPC requests. This includes the capability - to match requests by hostname, gRPC service, gRPC method, or HTTP/2 header. - Filters can be used to specify additional processing steps. Backends specify - where matching requests will be routed. - - - GRPCRoute falls under extended support within the Gateway API. Within the - following specification, the word "MUST" indicates that an implementation - supporting GRPCRoute must conform to the indicated requirement, but an - implementation not supporting this route type need not follow the requirement - unless explicitly indicated. - - - Implementations supporting `GRPCRoute` with the `HTTPS` `ProtocolType` MUST - accept HTTP/2 connections without an initial upgrade from HTTP/1.1, i.e. via - ALPN. If the implementation does not support this, then it MUST set the - "Accepted" condition to "False" for the affected listener with a reason of - "UnsupportedProtocol". Implementations MAY also accept HTTP/2 connections - with an upgrade from HTTP/1. - - - Implementations supporting `GRPCRoute` with the `HTTP` `ProtocolType` MUST - support HTTP/2 over cleartext TCP (h2c, - https://www.rfc-editor.org/rfc/rfc7540#section-3.1) without an initial - upgrade from HTTP/1.1, i.e. with prior knowledge - (https://www.rfc-editor.org/rfc/rfc7540#section-3.4). If the implementation - does not support this, then it MUST set the "Accepted" condition to "False" - for the affected listener with a reason of "UnsupportedProtocol". - Implementations MAY also accept HTTP/2 connections with an upgrade from - HTTP/1, i.e. without prior knowledge. - 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: Spec defines the desired state of GRPCRoute. - properties: - hostnames: - description: |- - Hostnames defines a set of hostnames to match against the GRPC - Host header to select a GRPCRoute to process the request. This matches - the RFC 1123 definition of a hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label MUST appear by itself as the first label. - - - If a hostname is specified by both the Listener and GRPCRoute, there - MUST be at least one intersecting hostname for the GRPCRoute to be - attached to the Listener. For example: - - - * A Listener with `test.example.com` as the hostname matches GRPCRoutes - that have either not specified any hostnames, or have specified at - least one of `test.example.com` or `*.example.com`. - * A Listener with `*.example.com` as the hostname matches GRPCRoutes - that have either not specified any hostnames or have specified at least - one hostname that matches the Listener hostname. For example, - `test.example.com` and `*.example.com` would both match. On the other - hand, `example.com` and `test.example.net` would not match. - - - Hostnames that are prefixed with a wildcard label (`*.`) are interpreted - as a suffix match. That means that a match for `*.example.com` would match - both `test.example.com`, and `foo.test.example.com`, but not `example.com`. - - - If both the Listener and GRPCRoute have specified hostnames, any - GRPCRoute hostnames that do not match the Listener hostname MUST be - ignored. For example, if a Listener specified `*.example.com`, and the - GRPCRoute specified `test.example.com` and `test.example.net`, - `test.example.net` MUST NOT be considered for a match. - - - If both the Listener and GRPCRoute have specified hostnames, and none - match with the criteria above, then the GRPCRoute MUST NOT be accepted by - the implementation. The implementation MUST raise an 'Accepted' Condition - with a status of `False` in the corresponding RouteParentStatus. - - - If a Route (A) of type HTTPRoute or GRPCRoute is attached to a - Listener and that listener already has another Route (B) of the other - type attached and the intersection of the hostnames of A and B is - non-empty, then the implementation MUST accept exactly one of these two - routes, determined by the following criteria, in order: - - - * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order by - "{namespace}/{name}". - - - The rejected Route MUST raise an 'Accepted' condition with a status of - 'False' in the corresponding RouteParentStatus. - - - Support: Core - items: - description: |- - Hostname is the fully qualified domain name of a network host. This matches - the RFC 1123 definition of a hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label must appear by itself as the first label. - - - Hostname can be "precise" which is a domain name without the terminating - dot of a network host (e.g. "foo.example.com") or "wildcard", which is a - domain name prefixed with a single wildcard label (e.g. `*.example.com`). - - - Note that as per RFC1035 and RFC1123, a *label* must consist of lower case - alphanumeric characters or '-', and must start and end with an alphanumeric - character. No other punctuation is allowed. - maxLength: 253 - minLength: 1 - pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - maxItems: 16 - type: array - parentRefs: - description: |+ - ParentRefs references the resources (usually Gateways) that a Route wants - to be attached to. Note that the referenced parent resource needs to - allow this for the attachment to be complete. For Gateways, that means - the Gateway needs to allow attachment from Routes of this kind and - namespace. For Services, that means the Service must either be in the same - namespace for a "producer" route, or the mesh implementation must support - and allow "consumer" routes for the referenced Service. ReferenceGrant is - not applicable for governing ParentRefs to Services - it is not possible to - create a "producer" route for a Service in a different namespace from the - Route. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - ParentRefs must be _distinct_. This means either that: - - - * They select different objects. If this is the case, then parentRef - entries are distinct. In terms of fields, this means that the - multi-part key defined by `group`, `kind`, `namespace`, and `name` must - be unique across all parentRef entries in the Route. - * They do not select different objects, but for each optional field used, - each ParentRef that selects the same object must set the same set of - optional fields to different values. If one ParentRef sets a - combination of optional fields, all must set the same combination. - - - Some examples: - - - * If one ParentRef sets `sectionName`, all ParentRefs referencing the - same object must also set `sectionName`. - * If one ParentRef sets `port`, all ParentRefs referencing the same - object must also set `port`. - * If one ParentRef sets `sectionName` and `port`, all ParentRefs - referencing the same object must also set `sectionName` and `port`. - - - It is possible to separately reference multiple distinct objects that may - be collapsed by an implementation. For example, some implementations may - choose to merge compatible Gateway Listeners together. If that is the - case, the list of routes attached to those resources should also be - merged. - - - Note that for ParentRefs that cross namespace boundaries, there are specific - rules. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example, - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable other kinds of cross-namespace reference. - - items: - description: |- - ParentReference identifies an API object (usually a Gateway) that can be considered - a parent of this resource (usually a route). There are two kinds of parent resources - with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - The API object must be valid in the cluster; the Group and Kind must - be registered in the cluster for this reference to be valid. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - maxItems: 32 - type: array - x-kubernetes-validations: - - message: sectionName must be specified when parentRefs includes - 2 or more references to the same parent - rule: 'self.all(p1, self.all(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '''') && (!has(p2.__namespace__) || p2.__namespace__ - == '''')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) - || p1.sectionName == '''') == (!has(p2.sectionName) || p2.sectionName - == '''')) : true))' - - message: sectionName must be unique when parentRefs includes 2 or - more references to the same parent - rule: self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ - == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) - || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName - == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName - == p2.sectionName)))) - rules: - description: Rules are a list of GRPC matchers, filters and actions. - items: - description: |- - GRPCRouteRule defines the semantics for matching a gRPC request based on - conditions (matches), processing it (filters), and forwarding the request to - an API object (backendRefs). - properties: - backendRefs: - description: |- - BackendRefs defines the backend(s) where matching requests should be - sent. - - - Failure behavior here depends on how many BackendRefs are specified and - how many are invalid. - - - If *all* entries in BackendRefs are invalid, and there are also no filters - specified in this route rule, *all* traffic which matches this rule MUST - receive an `UNAVAILABLE` status. - - - See the GRPCBackendRef definition for the rules about what makes a single - GRPCBackendRef invalid. - - - When a GRPCBackendRef is invalid, `UNAVAILABLE` statuses MUST be returned for - requests that would have otherwise been routed to an invalid backend. If - multiple backends are specified, and some are invalid, the proportion of - requests that would otherwise have been routed to an invalid backend - MUST receive an `UNAVAILABLE` status. - - - For example, if two backends are specified with equal weights, and one is - invalid, 50 percent of traffic MUST receive an `UNAVAILABLE` status. - Implementations may choose how that 50 percent is determined. - - - Support: Core for Kubernetes Service - - - Support: Implementation-specific for any other resource - - - Support for weight: Core - items: - description: |- - GRPCBackendRef defines how a GRPCRoute forwards a gRPC request. - - - Note that when a namespace different than the local namespace is specified, a - ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - - - - When the BackendRef points to a Kubernetes Service, implementations SHOULD - honor the appProtocol field if it is set for the target Service Port. - - - Implementations supporting appProtocol SHOULD recognize the Kubernetes - Standard Application Protocols defined in KEP-3726. - - - If a Service appProtocol isn't specified, an implementation MAY infer the - backend protocol through its own means. Implementations MAY infer the - protocol from the Route type referring to the backend Service. - - - If a Route is not able to send traffic to the backend using the specified - protocol then the backend is considered invalid. Implementations MUST set the - "ResolvedRefs" condition to "False" with the "UnsupportedProtocol" reason. - - - - properties: - filters: - description: |- - Filters defined at this level MUST be executed if and only if the - request is being forwarded to the backend defined here. - - - Support: Implementation-specific (For broader support of filters, use the - Filters field in GRPCRouteRule.) - items: - description: |- - GRPCRouteFilter defines processing steps that must be completed during the - request or response lifecycle. GRPCRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - Support: Implementation-specific - - - This filter can be used multiple times within the same rule. - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For - example "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind - == ''Service'') ? has(self.port) : true' - required: - - backendRef - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |+ - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations supporting GRPCRoute MUST support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` MUST be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - enum: - - ResponseHeaderModifier - - RequestHeaderModifier - - RequestMirror - - ExtensionRef - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil - if the filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type - != ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type - == ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil - if the filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type - != ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for - RequestMirror filter.type - rule: '!(!has(self.requestMirror) && self.type == - ''RequestMirror'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for - ExtensionRef filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - weight: - default: 1 - description: |- - Weight specifies the proportion of requests forwarded to the referenced - backend. This is computed as weight/(sum of all weights in this - BackendRefs list). For non-zero values, there may be some epsilon from - the exact proportion defined here depending on the precision an - implementation supports. Weight is not a percentage and the sum of - weights does not need to equal 100. - - - If only one backend is specified and it has a weight greater than 0, 100% - of the traffic is forwarded to that backend. If weight is set to 0, no - traffic should be forwarded for this entry. If unspecified, weight - defaults to 1. - - - Support for this field varies based on the context where used. - format: int32 - maximum: 1000000 - minimum: 0 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - maxItems: 16 - type: array - filters: - description: |- - Filters define the filters that are applied to requests that match - this rule. - - - The effects of ordering of multiple behaviors are currently unspecified. - This can change in the future based on feedback during the alpha stage. - - - Conformance-levels at this level are defined based on the type of filter: - - - - ALL core filters MUST be supported by all implementations that support - GRPCRoute. - - Implementers are encouraged to support extended filters. - - Implementation-specific custom filters have no API guarantees across - implementations. - - - Specifying the same filter multiple times is not supported unless explicitly - indicated in the filter. - - - If an implementation can not support a combination of filters, it must clearly - document that limitation. In cases where incompatible or unsupported - filters are specified and cause the `Accepted` condition to be set to status - `False`, implementations may use the `IncompatibleFilters` reason to specify - this configuration error. - - - Support: Core - items: - description: |- - GRPCRouteFilter defines processing steps that must be completed during the - request or response lifecycle. GRPCRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - Support: Implementation-specific - - - This filter can be used multiple times within the same rule. - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For example - "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - required: - - backendRef - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |+ - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations supporting GRPCRoute MUST support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` MUST be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - enum: - - ResponseHeaderModifier - - RequestHeaderModifier - - RequestMirror - - ExtensionRef - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil if the - filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type != - ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type == - ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil if the - filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type != - ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for RequestMirror - filter.type - rule: '!(!has(self.requestMirror) && self.type == ''RequestMirror'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for ExtensionRef - filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - matches: - description: |- - Matches define conditions used for matching the rule against incoming - gRPC requests. Each match is independent, i.e. this rule will be matched - if **any** one of the matches is satisfied. - - - For example, take the following matches configuration: - - - ``` - matches: - - method: - service: foo.bar - headers: - values: - version: 2 - - method: - service: foo.bar.v2 - ``` - - - For a request to match against this rule, it MUST satisfy - EITHER of the two conditions: - - - - service of foo.bar AND contains the header `version: 2` - - service of foo.bar.v2 - - - See the documentation for GRPCRouteMatch on how to specify multiple - match conditions to be ANDed together. - - - If no matches are specified, the implementation MUST match every gRPC request. - - - Proxy or Load Balancer routing configuration generated from GRPCRoutes - MUST prioritize rules based on the following criteria, continuing on - ties. Merging MUST not be done between GRPCRoutes and HTTPRoutes. - Precedence MUST be given to the rule with the largest number of: - - - * Characters in a matching non-wildcard hostname. - * Characters in a matching hostname. - * Characters in a matching service. - * Characters in a matching method. - * Header matches. - - - If ties still exist across multiple Routes, matching precedence MUST be - determined in order of the following criteria, continuing on ties: - - - * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order by - "{namespace}/{name}". - - - If ties still exist within the Route that has been given precedence, - matching precedence MUST be granted to the first matching rule meeting - the above criteria. - items: - description: |- - GRPCRouteMatch defines the predicate used to match requests to a given - action. Multiple match types are ANDed together, i.e. the match will - evaluate to true only if all conditions are satisfied. - - - For example, the match below will match a gRPC request only if its service - is `foo` AND it contains the `version: v1` header: - - - ``` - matches: - - method: - type: Exact - service: "foo" - headers: - - name: "version" - value "v1" - - - ``` - properties: - headers: - description: |- - Headers specifies gRPC request header matchers. Multiple match values are - ANDed together, meaning, a request MUST match all the specified headers - to select the route. - items: - description: |- - GRPCHeaderMatch describes how to select a gRPC route by matching gRPC request - headers. - properties: - name: - description: |- - Name is the name of the gRPC Header to be matched. - - - If multiple entries specify equivalent header names, only the first - entry with an equivalent name MUST be considered for a match. Subsequent - entries with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - type: - default: Exact - description: Type specifies how to match against - the value of the header. - enum: - - Exact - - RegularExpression - type: string - value: - description: Value is the value of the gRPC Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - method: - description: |- - Method specifies a gRPC request service/method matcher. If this field is - not specified, all services and methods will match. - properties: - method: - description: |- - Value of the method to match against. If left empty or omitted, will - match all services. - - - At least one of Service and Method MUST be a non-empty string. - maxLength: 1024 - type: string - service: - description: |- - Value of the service to match against. If left empty or omitted, will - match any service. - - - At least one of Service and Method MUST be a non-empty string. - maxLength: 1024 - type: string - type: - default: Exact - description: |- - Type specifies how to match against the service and/or method. - Support: Core (Exact with service and method specified) - - - Support: Implementation-specific (Exact with method specified but no service specified) - - - Support: Implementation-specific (RegularExpression) - enum: - - Exact - - RegularExpression - type: string - type: object - x-kubernetes-validations: - - message: One or both of 'service' or 'method' must be - specified - rule: 'has(self.type) ? has(self.service) || has(self.method) - : true' - - message: service must only contain valid characters - (matching ^(?i)\.?[a-z_][a-z_0-9]*(\.[a-z_][a-z_0-9]*)*$) - rule: '(!has(self.type) || self.type == ''Exact'') && - has(self.service) ? self.service.matches(r"""^(?i)\.?[a-z_][a-z_0-9]*(\.[a-z_][a-z_0-9]*)*$"""): - true' - - message: method must only contain valid characters (matching - ^[A-Za-z_][A-Za-z_0-9]*$) - rule: '(!has(self.type) || self.type == ''Exact'') && - has(self.method) ? self.method.matches(r"""^[A-Za-z_][A-Za-z_0-9]*$"""): - true' - type: object - maxItems: 8 - type: array - type: object - maxItems: 16 - type: array - type: object - status: - description: Status defines the current state of GRPCRoute. - properties: - parents: - description: |- - Parents is a list of parent resources (usually Gateways) that are - associated with the route, and the status of the route with respect to - each parent. When this route attaches to a parent, the controller that - manages the parent must add an entry to this list when the controller - first sees the route and should update the entry as appropriate when the - route or gateway is modified. - - - Note that parent references that cannot be resolved by an implementation - of this API will not be added to this list. Implementations of this API - can only populate Route status for the Gateways/parent resources they are - responsible for. - - - A maximum of 32 Gateways will be represented in this list. An empty list - means the route has not been attached to any Gateway. - items: - description: |- - RouteParentStatus describes the status of a route with respect to an - associated Parent. - properties: - conditions: - description: |- - Conditions describes the status of the route with respect to the Gateway. - Note that the route's availability is also subject to the Gateway's own - status conditions and listener status. - - - If the Route's ParentRef specifies an existing Gateway that supports - Routes of this kind AND that Gateway's controller has sufficient access, - then that Gateway's controller MUST set the "Accepted" condition on the - Route, to indicate whether the route has been accepted or rejected by the - Gateway, and why. - - - A Route MUST be considered "Accepted" if at least one of the Route's - rules is implemented by the Gateway. - - - There are a number of cases where the "Accepted" condition may not be set - due to lack of controller visibility, that includes when: - - - * The Route refers to a non-existent parent. - * The Route is of a type that the controller does not support. - * The Route is in a namespace the controller does not have access to. - items: - description: "Condition contains details for one aspect of - the current state of this API Resource.\n---\nThis struct - is intended for direct use as an array at the field path - .status.conditions. For example,\n\n\n\ttype FooStatus - struct{\n\t // Represents the observations of a foo's - current state.\n\t // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // - +listType=map\n\t // +listMapKey=type\n\t Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - minItems: 1 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - controllerName: - description: |- - ControllerName is a domain/path string that indicates the name of the - controller that wrote this status. This corresponds with the - controllerName field on GatewayClass. - - - Example: "example.net/gateway-controller". - - - The format of this field is DOMAIN "/" PATH, where DOMAIN and PATH are - valid Kubernetes names - (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). - - - Controllers MUST populate this field when writing status. Controllers should ensure that - entries to status populated with their ControllerName are cleaned up when they are no - longer necessary. - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - parentRef: - description: |- - ParentRef corresponds with a ParentRef in the spec that this - RouteParentStatus struct describes the status of. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - required: - - controllerName - - parentRef - type: object - maxItems: 32 - type: array - required: - - parents - type: object - type: object - served: true - storage: true - subresources: - status: {} - - deprecated: true - deprecationWarning: The v1alpha2 version of GRPCRoute has been deprecated and - will be removed in a future release of the API. Please upgrade to v1. - name: v1alpha2 - schema: - openAPIV3Schema: - description: |- - GRPCRoute provides a way to route gRPC requests. This includes the capability - to match requests by hostname, gRPC service, gRPC method, or HTTP/2 header. - Filters can be used to specify additional processing steps. Backends specify - where matching requests will be routed. - - - GRPCRoute falls under extended support within the Gateway API. Within the - following specification, the word "MUST" indicates that an implementation - supporting GRPCRoute must conform to the indicated requirement, but an - implementation not supporting this route type need not follow the requirement - unless explicitly indicated. - - - Implementations supporting `GRPCRoute` with the `HTTPS` `ProtocolType` MUST - accept HTTP/2 connections without an initial upgrade from HTTP/1.1, i.e. via - ALPN. If the implementation does not support this, then it MUST set the - "Accepted" condition to "False" for the affected listener with a reason of - "UnsupportedProtocol". Implementations MAY also accept HTTP/2 connections - with an upgrade from HTTP/1. - - - Implementations supporting `GRPCRoute` with the `HTTP` `ProtocolType` MUST - support HTTP/2 over cleartext TCP (h2c, - https://www.rfc-editor.org/rfc/rfc7540#section-3.1) without an initial - upgrade from HTTP/1.1, i.e. with prior knowledge - (https://www.rfc-editor.org/rfc/rfc7540#section-3.4). If the implementation - does not support this, then it MUST set the "Accepted" condition to "False" - for the affected listener with a reason of "UnsupportedProtocol". - Implementations MAY also accept HTTP/2 connections with an upgrade from - HTTP/1, i.e. without prior knowledge. - 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: Spec defines the desired state of GRPCRoute. - properties: - hostnames: - description: |- - Hostnames defines a set of hostnames to match against the GRPC - Host header to select a GRPCRoute to process the request. This matches - the RFC 1123 definition of a hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label MUST appear by itself as the first label. - - - If a hostname is specified by both the Listener and GRPCRoute, there - MUST be at least one intersecting hostname for the GRPCRoute to be - attached to the Listener. For example: - - - * A Listener with `test.example.com` as the hostname matches GRPCRoutes - that have either not specified any hostnames, or have specified at - least one of `test.example.com` or `*.example.com`. - * A Listener with `*.example.com` as the hostname matches GRPCRoutes - that have either not specified any hostnames or have specified at least - one hostname that matches the Listener hostname. For example, - `test.example.com` and `*.example.com` would both match. On the other - hand, `example.com` and `test.example.net` would not match. - - - Hostnames that are prefixed with a wildcard label (`*.`) are interpreted - as a suffix match. That means that a match for `*.example.com` would match - both `test.example.com`, and `foo.test.example.com`, but not `example.com`. - - - If both the Listener and GRPCRoute have specified hostnames, any - GRPCRoute hostnames that do not match the Listener hostname MUST be - ignored. For example, if a Listener specified `*.example.com`, and the - GRPCRoute specified `test.example.com` and `test.example.net`, - `test.example.net` MUST NOT be considered for a match. - - - If both the Listener and GRPCRoute have specified hostnames, and none - match with the criteria above, then the GRPCRoute MUST NOT be accepted by - the implementation. The implementation MUST raise an 'Accepted' Condition - with a status of `False` in the corresponding RouteParentStatus. - - - If a Route (A) of type HTTPRoute or GRPCRoute is attached to a - Listener and that listener already has another Route (B) of the other - type attached and the intersection of the hostnames of A and B is - non-empty, then the implementation MUST accept exactly one of these two - routes, determined by the following criteria, in order: - - - * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order by - "{namespace}/{name}". - - - The rejected Route MUST raise an 'Accepted' condition with a status of - 'False' in the corresponding RouteParentStatus. - - - Support: Core - items: - description: |- - Hostname is the fully qualified domain name of a network host. This matches - the RFC 1123 definition of a hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label must appear by itself as the first label. - - - Hostname can be "precise" which is a domain name without the terminating - dot of a network host (e.g. "foo.example.com") or "wildcard", which is a - domain name prefixed with a single wildcard label (e.g. `*.example.com`). - - - Note that as per RFC1035 and RFC1123, a *label* must consist of lower case - alphanumeric characters or '-', and must start and end with an alphanumeric - character. No other punctuation is allowed. - maxLength: 253 - minLength: 1 - pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - maxItems: 16 - type: array - parentRefs: - description: |+ - ParentRefs references the resources (usually Gateways) that a Route wants - to be attached to. Note that the referenced parent resource needs to - allow this for the attachment to be complete. For Gateways, that means - the Gateway needs to allow attachment from Routes of this kind and - namespace. For Services, that means the Service must either be in the same - namespace for a "producer" route, or the mesh implementation must support - and allow "consumer" routes for the referenced Service. ReferenceGrant is - not applicable for governing ParentRefs to Services - it is not possible to - create a "producer" route for a Service in a different namespace from the - Route. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - ParentRefs must be _distinct_. This means either that: - - - * They select different objects. If this is the case, then parentRef - entries are distinct. In terms of fields, this means that the - multi-part key defined by `group`, `kind`, `namespace`, and `name` must - be unique across all parentRef entries in the Route. - * They do not select different objects, but for each optional field used, - each ParentRef that selects the same object must set the same set of - optional fields to different values. If one ParentRef sets a - combination of optional fields, all must set the same combination. - - - Some examples: - - - * If one ParentRef sets `sectionName`, all ParentRefs referencing the - same object must also set `sectionName`. - * If one ParentRef sets `port`, all ParentRefs referencing the same - object must also set `port`. - * If one ParentRef sets `sectionName` and `port`, all ParentRefs - referencing the same object must also set `sectionName` and `port`. - - - It is possible to separately reference multiple distinct objects that may - be collapsed by an implementation. For example, some implementations may - choose to merge compatible Gateway Listeners together. If that is the - case, the list of routes attached to those resources should also be - merged. - - - Note that for ParentRefs that cross namespace boundaries, there are specific - rules. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example, - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable other kinds of cross-namespace reference. - - items: - description: |- - ParentReference identifies an API object (usually a Gateway) that can be considered - a parent of this resource (usually a route). There are two kinds of parent resources - with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - The API object must be valid in the cluster; the Group and Kind must - be registered in the cluster for this reference to be valid. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - maxItems: 32 - type: array - x-kubernetes-validations: - - message: sectionName must be specified when parentRefs includes - 2 or more references to the same parent - rule: 'self.all(p1, self.all(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '''') && (!has(p2.__namespace__) || p2.__namespace__ - == '''')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) - || p1.sectionName == '''') == (!has(p2.sectionName) || p2.sectionName - == '''')) : true))' - - message: sectionName must be unique when parentRefs includes 2 or - more references to the same parent - rule: self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ - == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) - || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName - == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName - == p2.sectionName)))) - rules: - description: Rules are a list of GRPC matchers, filters and actions. - items: - description: |- - GRPCRouteRule defines the semantics for matching a gRPC request based on - conditions (matches), processing it (filters), and forwarding the request to - an API object (backendRefs). - properties: - backendRefs: - description: |- - BackendRefs defines the backend(s) where matching requests should be - sent. - - - Failure behavior here depends on how many BackendRefs are specified and - how many are invalid. - - - If *all* entries in BackendRefs are invalid, and there are also no filters - specified in this route rule, *all* traffic which matches this rule MUST - receive an `UNAVAILABLE` status. - - - See the GRPCBackendRef definition for the rules about what makes a single - GRPCBackendRef invalid. - - - When a GRPCBackendRef is invalid, `UNAVAILABLE` statuses MUST be returned for - requests that would have otherwise been routed to an invalid backend. If - multiple backends are specified, and some are invalid, the proportion of - requests that would otherwise have been routed to an invalid backend - MUST receive an `UNAVAILABLE` status. - - - For example, if two backends are specified with equal weights, and one is - invalid, 50 percent of traffic MUST receive an `UNAVAILABLE` status. - Implementations may choose how that 50 percent is determined. - - - Support: Core for Kubernetes Service - - - Support: Implementation-specific for any other resource - - - Support for weight: Core - items: - description: |- - GRPCBackendRef defines how a GRPCRoute forwards a gRPC request. - - - Note that when a namespace different than the local namespace is specified, a - ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - - - - When the BackendRef points to a Kubernetes Service, implementations SHOULD - honor the appProtocol field if it is set for the target Service Port. - - - Implementations supporting appProtocol SHOULD recognize the Kubernetes - Standard Application Protocols defined in KEP-3726. - - - If a Service appProtocol isn't specified, an implementation MAY infer the - backend protocol through its own means. Implementations MAY infer the - protocol from the Route type referring to the backend Service. - - - If a Route is not able to send traffic to the backend using the specified - protocol then the backend is considered invalid. Implementations MUST set the - "ResolvedRefs" condition to "False" with the "UnsupportedProtocol" reason. - - - - properties: - filters: - description: |- - Filters defined at this level MUST be executed if and only if the - request is being forwarded to the backend defined here. - - - Support: Implementation-specific (For broader support of filters, use the - Filters field in GRPCRouteRule.) - items: - description: |- - GRPCRouteFilter defines processing steps that must be completed during the - request or response lifecycle. GRPCRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - Support: Implementation-specific - - - This filter can be used multiple times within the same rule. - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For - example "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind - == ''Service'') ? has(self.port) : true' - required: - - backendRef - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |+ - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations supporting GRPCRoute MUST support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` MUST be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - enum: - - ResponseHeaderModifier - - RequestHeaderModifier - - RequestMirror - - ExtensionRef - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil - if the filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type - != ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type - == ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil - if the filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type - != ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for - RequestMirror filter.type - rule: '!(!has(self.requestMirror) && self.type == - ''RequestMirror'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for - ExtensionRef filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - weight: - default: 1 - description: |- - Weight specifies the proportion of requests forwarded to the referenced - backend. This is computed as weight/(sum of all weights in this - BackendRefs list). For non-zero values, there may be some epsilon from - the exact proportion defined here depending on the precision an - implementation supports. Weight is not a percentage and the sum of - weights does not need to equal 100. - - - If only one backend is specified and it has a weight greater than 0, 100% - of the traffic is forwarded to that backend. If weight is set to 0, no - traffic should be forwarded for this entry. If unspecified, weight - defaults to 1. - - - Support for this field varies based on the context where used. - format: int32 - maximum: 1000000 - minimum: 0 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - maxItems: 16 - type: array - filters: - description: |- - Filters define the filters that are applied to requests that match - this rule. - - - The effects of ordering of multiple behaviors are currently unspecified. - This can change in the future based on feedback during the alpha stage. - - - Conformance-levels at this level are defined based on the type of filter: - - - - ALL core filters MUST be supported by all implementations that support - GRPCRoute. - - Implementers are encouraged to support extended filters. - - Implementation-specific custom filters have no API guarantees across - implementations. - - - Specifying the same filter multiple times is not supported unless explicitly - indicated in the filter. - - - If an implementation can not support a combination of filters, it must clearly - document that limitation. In cases where incompatible or unsupported - filters are specified and cause the `Accepted` condition to be set to status - `False`, implementations may use the `IncompatibleFilters` reason to specify - this configuration error. - - - Support: Core - items: - description: |- - GRPCRouteFilter defines processing steps that must be completed during the - request or response lifecycle. GRPCRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - Support: Implementation-specific - - - This filter can be used multiple times within the same rule. - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For example - "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - required: - - backendRef - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |+ - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations supporting GRPCRoute MUST support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` MUST be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - enum: - - ResponseHeaderModifier - - RequestHeaderModifier - - RequestMirror - - ExtensionRef - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil if the - filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type != - ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type == - ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil if the - filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type != - ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for RequestMirror - filter.type - rule: '!(!has(self.requestMirror) && self.type == ''RequestMirror'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for ExtensionRef - filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - matches: - description: |- - Matches define conditions used for matching the rule against incoming - gRPC requests. Each match is independent, i.e. this rule will be matched - if **any** one of the matches is satisfied. - - - For example, take the following matches configuration: - - - ``` - matches: - - method: - service: foo.bar - headers: - values: - version: 2 - - method: - service: foo.bar.v2 - ``` - - - For a request to match against this rule, it MUST satisfy - EITHER of the two conditions: - - - - service of foo.bar AND contains the header `version: 2` - - service of foo.bar.v2 - - - See the documentation for GRPCRouteMatch on how to specify multiple - match conditions to be ANDed together. - - - If no matches are specified, the implementation MUST match every gRPC request. - - - Proxy or Load Balancer routing configuration generated from GRPCRoutes - MUST prioritize rules based on the following criteria, continuing on - ties. Merging MUST not be done between GRPCRoutes and HTTPRoutes. - Precedence MUST be given to the rule with the largest number of: - - - * Characters in a matching non-wildcard hostname. - * Characters in a matching hostname. - * Characters in a matching service. - * Characters in a matching method. - * Header matches. - - - If ties still exist across multiple Routes, matching precedence MUST be - determined in order of the following criteria, continuing on ties: - - - * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order by - "{namespace}/{name}". - - - If ties still exist within the Route that has been given precedence, - matching precedence MUST be granted to the first matching rule meeting - the above criteria. - items: - description: |- - GRPCRouteMatch defines the predicate used to match requests to a given - action. Multiple match types are ANDed together, i.e. the match will - evaluate to true only if all conditions are satisfied. - - - For example, the match below will match a gRPC request only if its service - is `foo` AND it contains the `version: v1` header: - - - ``` - matches: - - method: - type: Exact - service: "foo" - headers: - - name: "version" - value "v1" - - - ``` - properties: - headers: - description: |- - Headers specifies gRPC request header matchers. Multiple match values are - ANDed together, meaning, a request MUST match all the specified headers - to select the route. - items: - description: |- - GRPCHeaderMatch describes how to select a gRPC route by matching gRPC request - headers. - properties: - name: - description: |- - Name is the name of the gRPC Header to be matched. - - - If multiple entries specify equivalent header names, only the first - entry with an equivalent name MUST be considered for a match. Subsequent - entries with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - type: - default: Exact - description: Type specifies how to match against - the value of the header. - enum: - - Exact - - RegularExpression - type: string - value: - description: Value is the value of the gRPC Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - method: - description: |- - Method specifies a gRPC request service/method matcher. If this field is - not specified, all services and methods will match. - properties: - method: - description: |- - Value of the method to match against. If left empty or omitted, will - match all services. - - - At least one of Service and Method MUST be a non-empty string. - maxLength: 1024 - type: string - service: - description: |- - Value of the service to match against. If left empty or omitted, will - match any service. - - - At least one of Service and Method MUST be a non-empty string. - maxLength: 1024 - type: string - type: - default: Exact - description: |- - Type specifies how to match against the service and/or method. - Support: Core (Exact with service and method specified) - - - Support: Implementation-specific (Exact with method specified but no service specified) - - - Support: Implementation-specific (RegularExpression) - enum: - - Exact - - RegularExpression - type: string - type: object - x-kubernetes-validations: - - message: One or both of 'service' or 'method' must be - specified - rule: 'has(self.type) ? has(self.service) || has(self.method) - : true' - - message: service must only contain valid characters - (matching ^(?i)\.?[a-z_][a-z_0-9]*(\.[a-z_][a-z_0-9]*)*$) - rule: '(!has(self.type) || self.type == ''Exact'') && - has(self.service) ? self.service.matches(r"""^(?i)\.?[a-z_][a-z_0-9]*(\.[a-z_][a-z_0-9]*)*$"""): - true' - - message: method must only contain valid characters (matching - ^[A-Za-z_][A-Za-z_0-9]*$) - rule: '(!has(self.type) || self.type == ''Exact'') && - has(self.method) ? self.method.matches(r"""^[A-Za-z_][A-Za-z_0-9]*$"""): - true' - type: object - maxItems: 8 - type: array - type: object - maxItems: 16 - type: array - type: object - status: - description: Status defines the current state of GRPCRoute. - properties: - parents: - description: |- - Parents is a list of parent resources (usually Gateways) that are - associated with the route, and the status of the route with respect to - each parent. When this route attaches to a parent, the controller that - manages the parent must add an entry to this list when the controller - first sees the route and should update the entry as appropriate when the - route or gateway is modified. - - - Note that parent references that cannot be resolved by an implementation - of this API will not be added to this list. Implementations of this API - can only populate Route status for the Gateways/parent resources they are - responsible for. - - - A maximum of 32 Gateways will be represented in this list. An empty list - means the route has not been attached to any Gateway. - items: - description: |- - RouteParentStatus describes the status of a route with respect to an - associated Parent. - properties: - conditions: - description: |- - Conditions describes the status of the route with respect to the Gateway. - Note that the route's availability is also subject to the Gateway's own - status conditions and listener status. - - - If the Route's ParentRef specifies an existing Gateway that supports - Routes of this kind AND that Gateway's controller has sufficient access, - then that Gateway's controller MUST set the "Accepted" condition on the - Route, to indicate whether the route has been accepted or rejected by the - Gateway, and why. - - - A Route MUST be considered "Accepted" if at least one of the Route's - rules is implemented by the Gateway. - - - There are a number of cases where the "Accepted" condition may not be set - due to lack of controller visibility, that includes when: - - - * The Route refers to a non-existent parent. - * The Route is of a type that the controller does not support. - * The Route is in a namespace the controller does not have access to. - items: - description: "Condition contains details for one aspect of - the current state of this API Resource.\n---\nThis struct - is intended for direct use as an array at the field path - .status.conditions. For example,\n\n\n\ttype FooStatus - struct{\n\t // Represents the observations of a foo's - current state.\n\t // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // - +listType=map\n\t // +listMapKey=type\n\t Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - minItems: 1 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - controllerName: - description: |- - ControllerName is a domain/path string that indicates the name of the - controller that wrote this status. This corresponds with the - controllerName field on GatewayClass. - - - Example: "example.net/gateway-controller". - - - The format of this field is DOMAIN "/" PATH, where DOMAIN and PATH are - valid Kubernetes names - (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). - - - Controllers MUST populate this field when writing status. Controllers should ensure that - entries to status populated with their ControllerName are cleaned up when they are no - longer necessary. - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - parentRef: - description: |- - ParentRef corresponds with a ParentRef in the spec that this - RouteParentStatus struct describes the status of. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - required: - - controllerName - - parentRef - type: object - maxItems: 32 - type: array - required: - - parents - type: object - type: object - served: false - storage: false -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null ---- -# -# config/crd/standard/gateway.networking.k8s.io_httproutes.yaml -# -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/2997 - gateway.networking.k8s.io/bundle-version: v1.1.0 - gateway.networking.k8s.io/channel: standard - creationTimestamp: null - name: httproutes.gateway.networking.k8s.io -spec: - group: gateway.networking.k8s.io - names: - categories: - - gateway-api - kind: HTTPRoute - listKind: HTTPRouteList - plural: httproutes - singular: httproute - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.hostnames - name: Hostnames - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: |- - HTTPRoute provides a way to route HTTP requests. This includes the capability - to match requests by hostname, path, header, or query param. Filters can be - used to specify additional processing steps. Backends specify where matching - requests should be routed. - 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: Spec defines the desired state of HTTPRoute. - properties: - hostnames: - description: |- - Hostnames defines a set of hostnames that should match against the HTTP Host - header to select a HTTPRoute used to process the request. Implementations - MUST ignore any port value specified in the HTTP Host header while - performing a match and (absent of any applicable header modification - configuration) MUST forward this header unmodified to the backend. - - - Valid values for Hostnames are determined by RFC 1123 definition of a - hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label must appear by itself as the first label. - - - If a hostname is specified by both the Listener and HTTPRoute, there - must be at least one intersecting hostname for the HTTPRoute to be - attached to the Listener. For example: - - - * A Listener with `test.example.com` as the hostname matches HTTPRoutes - that have either not specified any hostnames, or have specified at - least one of `test.example.com` or `*.example.com`. - * A Listener with `*.example.com` as the hostname matches HTTPRoutes - that have either not specified any hostnames or have specified at least - one hostname that matches the Listener hostname. For example, - `*.example.com`, `test.example.com`, and `foo.test.example.com` would - all match. On the other hand, `example.com` and `test.example.net` would - not match. - - - Hostnames that are prefixed with a wildcard label (`*.`) are interpreted - as a suffix match. That means that a match for `*.example.com` would match - both `test.example.com`, and `foo.test.example.com`, but not `example.com`. - - - If both the Listener and HTTPRoute have specified hostnames, any - HTTPRoute hostnames that do not match the Listener hostname MUST be - ignored. For example, if a Listener specified `*.example.com`, and the - HTTPRoute specified `test.example.com` and `test.example.net`, - `test.example.net` must not be considered for a match. - - - If both the Listener and HTTPRoute have specified hostnames, and none - match with the criteria above, then the HTTPRoute is not accepted. The - implementation must raise an 'Accepted' Condition with a status of - `False` in the corresponding RouteParentStatus. - - - In the event that multiple HTTPRoutes specify intersecting hostnames (e.g. - overlapping wildcard matching and exact matching hostnames), precedence must - be given to rules from the HTTPRoute with the largest number of: - - - * Characters in a matching non-wildcard hostname. - * Characters in a matching hostname. - - - If ties exist across multiple Routes, the matching precedence rules for - HTTPRouteMatches takes over. - - - Support: Core - items: - description: |- - Hostname is the fully qualified domain name of a network host. This matches - the RFC 1123 definition of a hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label must appear by itself as the first label. - - - Hostname can be "precise" which is a domain name without the terminating - dot of a network host (e.g. "foo.example.com") or "wildcard", which is a - domain name prefixed with a single wildcard label (e.g. `*.example.com`). - - - Note that as per RFC1035 and RFC1123, a *label* must consist of lower case - alphanumeric characters or '-', and must start and end with an alphanumeric - character. No other punctuation is allowed. - maxLength: 253 - minLength: 1 - pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - maxItems: 16 - type: array - parentRefs: - description: |+ - ParentRefs references the resources (usually Gateways) that a Route wants - to be attached to. Note that the referenced parent resource needs to - allow this for the attachment to be complete. For Gateways, that means - the Gateway needs to allow attachment from Routes of this kind and - namespace. For Services, that means the Service must either be in the same - namespace for a "producer" route, or the mesh implementation must support - and allow "consumer" routes for the referenced Service. ReferenceGrant is - not applicable for governing ParentRefs to Services - it is not possible to - create a "producer" route for a Service in a different namespace from the - Route. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - ParentRefs must be _distinct_. This means either that: - - - * They select different objects. If this is the case, then parentRef - entries are distinct. In terms of fields, this means that the - multi-part key defined by `group`, `kind`, `namespace`, and `name` must - be unique across all parentRef entries in the Route. - * They do not select different objects, but for each optional field used, - each ParentRef that selects the same object must set the same set of - optional fields to different values. If one ParentRef sets a - combination of optional fields, all must set the same combination. - - - Some examples: - - - * If one ParentRef sets `sectionName`, all ParentRefs referencing the - same object must also set `sectionName`. - * If one ParentRef sets `port`, all ParentRefs referencing the same - object must also set `port`. - * If one ParentRef sets `sectionName` and `port`, all ParentRefs - referencing the same object must also set `sectionName` and `port`. - - - It is possible to separately reference multiple distinct objects that may - be collapsed by an implementation. For example, some implementations may - choose to merge compatible Gateway Listeners together. If that is the - case, the list of routes attached to those resources should also be - merged. - - - Note that for ParentRefs that cross namespace boundaries, there are specific - rules. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example, - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable other kinds of cross-namespace reference. - - items: - description: |- - ParentReference identifies an API object (usually a Gateway) that can be considered - a parent of this resource (usually a route). There are two kinds of parent resources - with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - The API object must be valid in the cluster; the Group and Kind must - be registered in the cluster for this reference to be valid. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - maxItems: 32 - type: array - x-kubernetes-validations: - - message: sectionName must be specified when parentRefs includes - 2 or more references to the same parent - rule: 'self.all(p1, self.all(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '''') && (!has(p2.__namespace__) || p2.__namespace__ - == '''')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) - || p1.sectionName == '''') == (!has(p2.sectionName) || p2.sectionName - == '''')) : true))' - - message: sectionName must be unique when parentRefs includes 2 or - more references to the same parent - rule: self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ - == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) - || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName - == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName - == p2.sectionName)))) - rules: - default: - - matches: - - path: - type: PathPrefix - value: / - description: Rules are a list of HTTP matchers, filters and actions. - items: - description: |- - HTTPRouteRule defines semantics for matching an HTTP request based on - conditions (matches), processing it (filters), and forwarding the request to - an API object (backendRefs). - properties: - backendRefs: - description: |- - BackendRefs defines the backend(s) where matching requests should be - sent. - - - Failure behavior here depends on how many BackendRefs are specified and - how many are invalid. - - - If *all* entries in BackendRefs are invalid, and there are also no filters - specified in this route rule, *all* traffic which matches this rule MUST - receive a 500 status code. - - - See the HTTPBackendRef definition for the rules about what makes a single - HTTPBackendRef invalid. - - - When a HTTPBackendRef is invalid, 500 status codes MUST be returned for - requests that would have otherwise been routed to an invalid backend. If - multiple backends are specified, and some are invalid, the proportion of - requests that would otherwise have been routed to an invalid backend - MUST receive a 500 status code. - - - For example, if two backends are specified with equal weights, and one is - invalid, 50 percent of traffic must receive a 500. Implementations may - choose how that 50 percent is determined. - - - Support: Core for Kubernetes Service - - - Support: Extended for Kubernetes ServiceImport - - - Support: Implementation-specific for any other resource - - - Support for weight: Core - items: - description: |- - HTTPBackendRef defines how a HTTPRoute forwards a HTTP request. - - - Note that when a namespace different than the local namespace is specified, a - ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - - - - When the BackendRef points to a Kubernetes Service, implementations SHOULD - honor the appProtocol field if it is set for the target Service Port. - - - Implementations supporting appProtocol SHOULD recognize the Kubernetes - Standard Application Protocols defined in KEP-3726. - - - If a Service appProtocol isn't specified, an implementation MAY infer the - backend protocol through its own means. Implementations MAY infer the - protocol from the Route type referring to the backend Service. - - - If a Route is not able to send traffic to the backend using the specified - protocol then the backend is considered invalid. Implementations MUST set the - "ResolvedRefs" condition to "False" with the "UnsupportedProtocol" reason. - - - - properties: - filters: - description: |- - Filters defined at this level should be executed if and only if the - request is being forwarded to the backend defined here. - - - Support: Implementation-specific (For broader support of filters, use the - Filters field in HTTPRouteRule.) - items: - description: |- - HTTPRouteFilter defines processing steps that must be completed during the - request or response lifecycle. HTTPRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - This filter can be used multiple times within the same rule. - - - Support: Implementation-specific - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For - example "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind - == ''Service'') ? has(self.port) : true' - required: - - backendRef - type: object - requestRedirect: - description: |- - RequestRedirect defines a schema for a filter that responds to the - request with an HTTP redirection. - - - Support: Core - properties: - hostname: - description: |- - Hostname is the hostname to be used in the value of the `Location` - header in the response. - When empty, the hostname in the `Host` header of the request is used. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines parameters used to modify the path of the incoming request. - The modified path is then used to construct the `Location` header. When - empty, the request path is used as-is. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified - when type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? - has(self.replaceFullPath) : true' - - message: type must be 'ReplaceFullPath' when - replaceFullPath is set - rule: 'has(self.replaceFullPath) ? self.type - == ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified - when type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' - ? has(self.replacePrefixMatch) : true' - - message: type must be 'ReplacePrefixMatch' - when replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - port: - description: |- - Port is the port to be used in the value of the `Location` - header in the response. - - - If no port is specified, the redirect port MUST be derived using the - following rules: - - - * If redirect scheme is not-empty, the redirect port MUST be the well-known - port associated with the redirect scheme. Specifically "http" to port 80 - and "https" to port 443. If the redirect scheme does not have a - well-known port, the listener port of the Gateway SHOULD be used. - * If redirect scheme is empty, the redirect port MUST be the Gateway - Listener port. - - - Implementations SHOULD NOT add the port number in the 'Location' - header in the following cases: - - - * A Location header that will use HTTP (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 80. - * A Location header that will use HTTPS (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 443. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - scheme: - description: |- - Scheme is the scheme to be used in the value of the `Location` header in - the response. When empty, the scheme of the request is used. - - - Scheme redirects can affect the port of the redirect, for more information, - refer to the documentation for the port field of this filter. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Extended - enum: - - http - - https - type: string - statusCode: - default: 302 - description: |- - StatusCode is the HTTP status code to be used in response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Core - enum: - - 301 - - 302 - type: integer - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |- - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations must support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by - specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` should be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - RequestHeaderModifier - - ResponseHeaderModifier - - RequestMirror - - RequestRedirect - - URLRewrite - - ExtensionRef - type: string - urlRewrite: - description: |- - URLRewrite defines a schema for a filter that modifies a request during forwarding. - - - Support: Extended - properties: - hostname: - description: |- - Hostname is the value to be used to replace the Host header value during - forwarding. - - - Support: Extended - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines a path rewrite. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified - when type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? - has(self.replaceFullPath) : true' - - message: type must be 'ReplaceFullPath' when - replaceFullPath is set - rule: 'has(self.replaceFullPath) ? self.type - == ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified - when type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' - ? has(self.replacePrefixMatch) : true' - - message: type must be 'ReplacePrefixMatch' - when replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - type: object - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil - if the filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type - != ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type - == ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil - if the filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type - != ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for - RequestMirror filter.type - rule: '!(!has(self.requestMirror) && self.type == - ''RequestMirror'')' - - message: filter.requestRedirect must be nil if the - filter.type is not RequestRedirect - rule: '!(has(self.requestRedirect) && self.type != - ''RequestRedirect'')' - - message: filter.requestRedirect must be specified - for RequestRedirect filter.type - rule: '!(!has(self.requestRedirect) && self.type == - ''RequestRedirect'')' - - message: filter.urlRewrite must be nil if the filter.type - is not URLRewrite - rule: '!(has(self.urlRewrite) && self.type != ''URLRewrite'')' - - message: filter.urlRewrite must be specified for URLRewrite - filter.type - rule: '!(!has(self.urlRewrite) && self.type == ''URLRewrite'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for - ExtensionRef filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: May specify either httpRouteFilterRequestRedirect - or httpRouteFilterRequestRewrite, but not both - rule: '!(self.exists(f, f.type == ''RequestRedirect'') - && self.exists(f, f.type == ''URLRewrite''))' - - message: May specify either httpRouteFilterRequestRedirect - or httpRouteFilterRequestRewrite, but not both - rule: '!(self.exists(f, f.type == ''RequestRedirect'') - && self.exists(f, f.type == ''URLRewrite''))' - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - - message: RequestRedirect filter cannot be repeated - rule: self.filter(f, f.type == 'RequestRedirect').size() - <= 1 - - message: URLRewrite filter cannot be repeated - rule: self.filter(f, f.type == 'URLRewrite').size() - <= 1 - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - weight: - default: 1 - description: |- - Weight specifies the proportion of requests forwarded to the referenced - backend. This is computed as weight/(sum of all weights in this - BackendRefs list). For non-zero values, there may be some epsilon from - the exact proportion defined here depending on the precision an - implementation supports. Weight is not a percentage and the sum of - weights does not need to equal 100. - - - If only one backend is specified and it has a weight greater than 0, 100% - of the traffic is forwarded to that backend. If weight is set to 0, no - traffic should be forwarded for this entry. If unspecified, weight - defaults to 1. - - - Support for this field varies based on the context where used. - format: int32 - maximum: 1000000 - minimum: 0 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - maxItems: 16 - type: array - filters: - description: |- - Filters define the filters that are applied to requests that match - this rule. - - - Wherever possible, implementations SHOULD implement filters in the order - they are specified. - - - Implementations MAY choose to implement this ordering strictly, rejecting - any combination or order of filters that can not be supported. If implementations - choose a strict interpretation of filter ordering, they MUST clearly document - that behavior. - - - To reject an invalid combination or order of filters, implementations SHOULD - consider the Route Rules with this configuration invalid. If all Route Rules - in a Route are invalid, the entire Route would be considered invalid. If only - a portion of Route Rules are invalid, implementations MUST set the - "PartiallyInvalid" condition for the Route. - - - Conformance-levels at this level are defined based on the type of filter: - - - - ALL core filters MUST be supported by all implementations. - - Implementers are encouraged to support extended filters. - - Implementation-specific custom filters have no API guarantees across - implementations. - - - Specifying the same filter multiple times is not supported unless explicitly - indicated in the filter. - - - All filters are expected to be compatible with each other except for the - URLRewrite and RequestRedirect filters, which may not be combined. If an - implementation can not support other combinations of filters, they must clearly - document that limitation. In cases where incompatible or unsupported - filters are specified and cause the `Accepted` condition to be set to status - `False`, implementations may use the `IncompatibleFilters` reason to specify - this configuration error. - - - Support: Core - items: - description: |- - HTTPRouteFilter defines processing steps that must be completed during the - request or response lifecycle. HTTPRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - This filter can be used multiple times within the same rule. - - - Support: Implementation-specific - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For example - "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - required: - - backendRef - type: object - requestRedirect: - description: |- - RequestRedirect defines a schema for a filter that responds to the - request with an HTTP redirection. - - - Support: Core - properties: - hostname: - description: |- - Hostname is the hostname to be used in the value of the `Location` - header in the response. - When empty, the hostname in the `Host` header of the request is used. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines parameters used to modify the path of the incoming request. - The modified path is then used to construct the `Location` header. When - empty, the request path is used as-is. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified when - type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? has(self.replaceFullPath) - : true' - - message: type must be 'ReplaceFullPath' when replaceFullPath - is set - rule: 'has(self.replaceFullPath) ? self.type == - ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified when - type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' ? has(self.replacePrefixMatch) - : true' - - message: type must be 'ReplacePrefixMatch' when - replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - port: - description: |- - Port is the port to be used in the value of the `Location` - header in the response. - - - If no port is specified, the redirect port MUST be derived using the - following rules: - - - * If redirect scheme is not-empty, the redirect port MUST be the well-known - port associated with the redirect scheme. Specifically "http" to port 80 - and "https" to port 443. If the redirect scheme does not have a - well-known port, the listener port of the Gateway SHOULD be used. - * If redirect scheme is empty, the redirect port MUST be the Gateway - Listener port. - - - Implementations SHOULD NOT add the port number in the 'Location' - header in the following cases: - - - * A Location header that will use HTTP (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 80. - * A Location header that will use HTTPS (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 443. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - scheme: - description: |- - Scheme is the scheme to be used in the value of the `Location` header in - the response. When empty, the scheme of the request is used. - - - Scheme redirects can affect the port of the redirect, for more information, - refer to the documentation for the port field of this filter. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Extended - enum: - - http - - https - type: string - statusCode: - default: 302 - description: |- - StatusCode is the HTTP status code to be used in response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Core - enum: - - 301 - - 302 - type: integer - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |- - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations must support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by - specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` should be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - RequestHeaderModifier - - ResponseHeaderModifier - - RequestMirror - - RequestRedirect - - URLRewrite - - ExtensionRef - type: string - urlRewrite: - description: |- - URLRewrite defines a schema for a filter that modifies a request during forwarding. - - - Support: Extended - properties: - hostname: - description: |- - Hostname is the value to be used to replace the Host header value during - forwarding. - - - Support: Extended - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines a path rewrite. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified when - type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? has(self.replaceFullPath) - : true' - - message: type must be 'ReplaceFullPath' when replaceFullPath - is set - rule: 'has(self.replaceFullPath) ? self.type == - ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified when - type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' ? has(self.replacePrefixMatch) - : true' - - message: type must be 'ReplacePrefixMatch' when - replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - type: object - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil if the - filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type != - ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type == - ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil if the - filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type != - ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for RequestMirror - filter.type - rule: '!(!has(self.requestMirror) && self.type == ''RequestMirror'')' - - message: filter.requestRedirect must be nil if the filter.type - is not RequestRedirect - rule: '!(has(self.requestRedirect) && self.type != ''RequestRedirect'')' - - message: filter.requestRedirect must be specified for RequestRedirect - filter.type - rule: '!(!has(self.requestRedirect) && self.type == ''RequestRedirect'')' - - message: filter.urlRewrite must be nil if the filter.type - is not URLRewrite - rule: '!(has(self.urlRewrite) && self.type != ''URLRewrite'')' - - message: filter.urlRewrite must be specified for URLRewrite - filter.type - rule: '!(!has(self.urlRewrite) && self.type == ''URLRewrite'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for ExtensionRef - filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: May specify either httpRouteFilterRequestRedirect - or httpRouteFilterRequestRewrite, but not both - rule: '!(self.exists(f, f.type == ''RequestRedirect'') && - self.exists(f, f.type == ''URLRewrite''))' - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - - message: RequestRedirect filter cannot be repeated - rule: self.filter(f, f.type == 'RequestRedirect').size() <= - 1 - - message: URLRewrite filter cannot be repeated - rule: self.filter(f, f.type == 'URLRewrite').size() <= 1 - matches: - default: - - path: - type: PathPrefix - value: / - description: |- - Matches define conditions used for matching the rule against incoming - HTTP requests. Each match is independent, i.e. this rule will be matched - if **any** one of the matches is satisfied. - - - For example, take the following matches configuration: - - - ``` - matches: - - path: - value: "/foo" - headers: - - name: "version" - value: "v2" - - path: - value: "/v2/foo" - ``` - - - For a request to match against this rule, a request must satisfy - EITHER of the two conditions: - - - - path prefixed with `/foo` AND contains the header `version: v2` - - path prefix of `/v2/foo` - - - See the documentation for HTTPRouteMatch on how to specify multiple - match conditions that should be ANDed together. - - - If no matches are specified, the default is a prefix - path match on "/", which has the effect of matching every - HTTP request. - - - Proxy or Load Balancer routing configuration generated from HTTPRoutes - MUST prioritize matches based on the following criteria, continuing on - ties. Across all rules specified on applicable Routes, precedence must be - given to the match having: - - - * "Exact" path match. - * "Prefix" path match with largest number of characters. - * Method match. - * Largest number of header matches. - * Largest number of query param matches. - - - Note: The precedence of RegularExpression path matches are implementation-specific. - - - If ties still exist across multiple Routes, matching precedence MUST be - determined in order of the following criteria, continuing on ties: - - - * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order by - "{namespace}/{name}". - - - If ties still exist within an HTTPRoute, matching precedence MUST be granted - to the FIRST matching rule (in list order) with a match meeting the above - criteria. - - - When no rules matching a request have been successfully attached to the - parent a request is coming from, a HTTP 404 status code MUST be returned. - items: - description: "HTTPRouteMatch defines the predicate used to - match requests to a given\naction. Multiple match types - are ANDed together, i.e. the match will\nevaluate to true - only if all conditions are satisfied.\n\n\nFor example, - the match below will match a HTTP request only if its path\nstarts - with `/foo` AND it contains the `version: v1` header:\n\n\n```\nmatch:\n\n\n\tpath:\n\t - \ value: \"/foo\"\n\theaders:\n\t- name: \"version\"\n\t - \ value \"v1\"\n\n\n```" - properties: - headers: - description: |- - Headers specifies HTTP request header matchers. Multiple match values are - ANDed together, meaning, a request must match all the specified headers - to select the route. - items: - description: |- - HTTPHeaderMatch describes how to select a HTTP route by matching HTTP request - headers. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, only the first - entry with an equivalent name MUST be considered for a match. Subsequent - entries with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - - - When a header is repeated in an HTTP request, it is - implementation-specific behavior as to how this is represented. - Generally, proxies should follow the guidance from the RFC: - https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 regarding - processing a repeated header, with special handling for "Set-Cookie". - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - type: - default: Exact - description: |- - Type specifies how to match against the value of the header. - - - Support: Core (Exact) - - - Support: Implementation-specific (RegularExpression) - - - Since RegularExpression HeaderMatchType has implementation-specific - conformance, implementations can support POSIX, PCRE or any other dialects - of regular expressions. Please read the implementation's documentation to - determine the supported dialect. - enum: - - Exact - - RegularExpression - type: string - value: - description: Value is the value of HTTP Header to - be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - method: - description: |- - Method specifies HTTP method matcher. - When specified, this route will be matched only if the request has the - specified method. - - - Support: Extended - enum: - - GET - - HEAD - - POST - - PUT - - DELETE - - CONNECT - - OPTIONS - - TRACE - - PATCH - type: string - path: - default: - type: PathPrefix - value: / - description: |- - Path specifies a HTTP request path matcher. If this field is not - specified, a default prefix match on the "/" path is provided. - properties: - type: - default: PathPrefix - description: |- - Type specifies how to match against the path Value. - - - Support: Core (Exact, PathPrefix) - - - Support: Implementation-specific (RegularExpression) - enum: - - Exact - - PathPrefix - - RegularExpression - type: string - value: - default: / - description: Value of the HTTP path to match against. - maxLength: 1024 - type: string - type: object - x-kubernetes-validations: - - message: value must be an absolute path and start with - '/' when type one of ['Exact', 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? self.value.startsWith(''/'') - : true' - - message: must not contain '//' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''//'') - : true' - - message: must not contain '/./' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''/./'') - : true' - - message: must not contain '/../' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''/../'') - : true' - - message: must not contain '%2f' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''%2f'') - : true' - - message: must not contain '%2F' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''%2F'') - : true' - - message: must not contain '#' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''#'') - : true' - - message: must not end with '/..' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.endsWith(''/..'') - : true' - - message: must not end with '/.' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.endsWith(''/.'') - : true' - - message: type must be one of ['Exact', 'PathPrefix', - 'RegularExpression'] - rule: self.type in ['Exact','PathPrefix'] || self.type - == 'RegularExpression' - - message: must only contain valid characters (matching - ^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$) - for types ['Exact', 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? self.value.matches(r"""^(?:[-A-Za-z0-9/._~!$&''()*+,;=:@]|[%][0-9a-fA-F]{2})+$""") - : true' - queryParams: - description: |- - QueryParams specifies HTTP query parameter matchers. Multiple match - values are ANDed together, meaning, a request must match all the - specified query parameters to select the route. - - - Support: Extended - items: - description: |- - HTTPQueryParamMatch describes how to select a HTTP route by matching HTTP - query parameters. - properties: - name: - description: |- - Name is the name of the HTTP query param to be matched. This must be an - exact string match. (See - https://tools.ietf.org/html/rfc7230#section-2.7.3). - - - If multiple entries specify equivalent query param names, only the first - entry with an equivalent name MUST be considered for a match. Subsequent - entries with an equivalent query param name MUST be ignored. - - - If a query param is repeated in an HTTP request, the behavior is - purposely left undefined, since different data planes have different - capabilities. However, it is *recommended* that implementations should - match against the first value of the param if the data plane supports it, - as this behavior is expected in other load balancing contexts outside of - the Gateway API. - - - Users SHOULD NOT route traffic based on repeated query params to guard - themselves against potential differences in the implementations. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - type: - default: Exact - description: |- - Type specifies how to match against the value of the query parameter. - - - Support: Extended (Exact) - - - Support: Implementation-specific (RegularExpression) - - - Since RegularExpression QueryParamMatchType has Implementation-specific - conformance, implementations can support POSIX, PCRE or any other - dialects of regular expressions. Please read the implementation's - documentation to determine the supported dialect. - enum: - - Exact - - RegularExpression - type: string - value: - description: Value is the value of HTTP query param - to be matched. - maxLength: 1024 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - maxItems: 8 - type: array - type: object - x-kubernetes-validations: - - message: RequestRedirect filter must not be used together with - backendRefs - rule: '(has(self.backendRefs) && size(self.backendRefs) > 0) ? - (!has(self.filters) || self.filters.all(f, !has(f.requestRedirect))): - true' - - message: When using RequestRedirect filter with path.replacePrefixMatch, - exactly one PathPrefix match must be specified - rule: '(has(self.filters) && self.filters.exists_one(f, has(f.requestRedirect) - && has(f.requestRedirect.path) && f.requestRedirect.path.type - == ''ReplacePrefixMatch'' && has(f.requestRedirect.path.replacePrefixMatch))) - ? ((size(self.matches) != 1 || !has(self.matches[0].path) || - self.matches[0].path.type != ''PathPrefix'') ? false : true) - : true' - - message: When using URLRewrite filter with path.replacePrefixMatch, - exactly one PathPrefix match must be specified - rule: '(has(self.filters) && self.filters.exists_one(f, has(f.urlRewrite) - && has(f.urlRewrite.path) && f.urlRewrite.path.type == ''ReplacePrefixMatch'' - && has(f.urlRewrite.path.replacePrefixMatch))) ? ((size(self.matches) - != 1 || !has(self.matches[0].path) || self.matches[0].path.type - != ''PathPrefix'') ? false : true) : true' - - message: Within backendRefs, when using RequestRedirect filter - with path.replacePrefixMatch, exactly one PathPrefix match must - be specified - rule: '(has(self.backendRefs) && self.backendRefs.exists_one(b, - (has(b.filters) && b.filters.exists_one(f, has(f.requestRedirect) - && has(f.requestRedirect.path) && f.requestRedirect.path.type - == ''ReplacePrefixMatch'' && has(f.requestRedirect.path.replacePrefixMatch))) - )) ? ((size(self.matches) != 1 || !has(self.matches[0].path) - || self.matches[0].path.type != ''PathPrefix'') ? false : true) - : true' - - message: Within backendRefs, When using URLRewrite filter with - path.replacePrefixMatch, exactly one PathPrefix match must be - specified - rule: '(has(self.backendRefs) && self.backendRefs.exists_one(b, - (has(b.filters) && b.filters.exists_one(f, has(f.urlRewrite) - && has(f.urlRewrite.path) && f.urlRewrite.path.type == ''ReplacePrefixMatch'' - && has(f.urlRewrite.path.replacePrefixMatch))) )) ? ((size(self.matches) - != 1 || !has(self.matches[0].path) || self.matches[0].path.type - != ''PathPrefix'') ? false : true) : true' - maxItems: 16 - type: array - type: object - status: - description: Status defines the current state of HTTPRoute. - properties: - parents: - description: |- - Parents is a list of parent resources (usually Gateways) that are - associated with the route, and the status of the route with respect to - each parent. When this route attaches to a parent, the controller that - manages the parent must add an entry to this list when the controller - first sees the route and should update the entry as appropriate when the - route or gateway is modified. - - - Note that parent references that cannot be resolved by an implementation - of this API will not be added to this list. Implementations of this API - can only populate Route status for the Gateways/parent resources they are - responsible for. - - - A maximum of 32 Gateways will be represented in this list. An empty list - means the route has not been attached to any Gateway. - items: - description: |- - RouteParentStatus describes the status of a route with respect to an - associated Parent. - properties: - conditions: - description: |- - Conditions describes the status of the route with respect to the Gateway. - Note that the route's availability is also subject to the Gateway's own - status conditions and listener status. - - - If the Route's ParentRef specifies an existing Gateway that supports - Routes of this kind AND that Gateway's controller has sufficient access, - then that Gateway's controller MUST set the "Accepted" condition on the - Route, to indicate whether the route has been accepted or rejected by the - Gateway, and why. - - - A Route MUST be considered "Accepted" if at least one of the Route's - rules is implemented by the Gateway. - - - There are a number of cases where the "Accepted" condition may not be set - due to lack of controller visibility, that includes when: - - - * The Route refers to a non-existent parent. - * The Route is of a type that the controller does not support. - * The Route is in a namespace the controller does not have access to. - items: - description: "Condition contains details for one aspect of - the current state of this API Resource.\n---\nThis struct - is intended for direct use as an array at the field path - .status.conditions. For example,\n\n\n\ttype FooStatus - struct{\n\t // Represents the observations of a foo's - current state.\n\t // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // - +listType=map\n\t // +listMapKey=type\n\t Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - minItems: 1 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - controllerName: - description: |- - ControllerName is a domain/path string that indicates the name of the - controller that wrote this status. This corresponds with the - controllerName field on GatewayClass. - - - Example: "example.net/gateway-controller". - - - The format of this field is DOMAIN "/" PATH, where DOMAIN and PATH are - valid Kubernetes names - (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). - - - Controllers MUST populate this field when writing status. Controllers should ensure that - entries to status populated with their ControllerName are cleaned up when they are no - longer necessary. - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - parentRef: - description: |- - ParentRef corresponds with a ParentRef in the spec that this - RouteParentStatus struct describes the status of. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - required: - - controllerName - - parentRef - type: object - maxItems: 32 - type: array - required: - - parents - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .spec.hostnames - name: Hostnames - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: |- - HTTPRoute provides a way to route HTTP requests. This includes the capability - to match requests by hostname, path, header, or query param. Filters can be - used to specify additional processing steps. Backends specify where matching - requests should be routed. - 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: Spec defines the desired state of HTTPRoute. - properties: - hostnames: - description: |- - Hostnames defines a set of hostnames that should match against the HTTP Host - header to select a HTTPRoute used to process the request. Implementations - MUST ignore any port value specified in the HTTP Host header while - performing a match and (absent of any applicable header modification - configuration) MUST forward this header unmodified to the backend. - - - Valid values for Hostnames are determined by RFC 1123 definition of a - hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label must appear by itself as the first label. - - - If a hostname is specified by both the Listener and HTTPRoute, there - must be at least one intersecting hostname for the HTTPRoute to be - attached to the Listener. For example: - - - * A Listener with `test.example.com` as the hostname matches HTTPRoutes - that have either not specified any hostnames, or have specified at - least one of `test.example.com` or `*.example.com`. - * A Listener with `*.example.com` as the hostname matches HTTPRoutes - that have either not specified any hostnames or have specified at least - one hostname that matches the Listener hostname. For example, - `*.example.com`, `test.example.com`, and `foo.test.example.com` would - all match. On the other hand, `example.com` and `test.example.net` would - not match. - - - Hostnames that are prefixed with a wildcard label (`*.`) are interpreted - as a suffix match. That means that a match for `*.example.com` would match - both `test.example.com`, and `foo.test.example.com`, but not `example.com`. - - - If both the Listener and HTTPRoute have specified hostnames, any - HTTPRoute hostnames that do not match the Listener hostname MUST be - ignored. For example, if a Listener specified `*.example.com`, and the - HTTPRoute specified `test.example.com` and `test.example.net`, - `test.example.net` must not be considered for a match. - - - If both the Listener and HTTPRoute have specified hostnames, and none - match with the criteria above, then the HTTPRoute is not accepted. The - implementation must raise an 'Accepted' Condition with a status of - `False` in the corresponding RouteParentStatus. - - - In the event that multiple HTTPRoutes specify intersecting hostnames (e.g. - overlapping wildcard matching and exact matching hostnames), precedence must - be given to rules from the HTTPRoute with the largest number of: - - - * Characters in a matching non-wildcard hostname. - * Characters in a matching hostname. - - - If ties exist across multiple Routes, the matching precedence rules for - HTTPRouteMatches takes over. - - - Support: Core - items: - description: |- - Hostname is the fully qualified domain name of a network host. This matches - the RFC 1123 definition of a hostname with 2 notable exceptions: - - - 1. IPs are not allowed. - 2. A hostname may be prefixed with a wildcard label (`*.`). The wildcard - label must appear by itself as the first label. - - - Hostname can be "precise" which is a domain name without the terminating - dot of a network host (e.g. "foo.example.com") or "wildcard", which is a - domain name prefixed with a single wildcard label (e.g. `*.example.com`). - - - Note that as per RFC1035 and RFC1123, a *label* must consist of lower case - alphanumeric characters or '-', and must start and end with an alphanumeric - character. No other punctuation is allowed. - maxLength: 253 - minLength: 1 - pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - maxItems: 16 - type: array - parentRefs: - description: |+ - ParentRefs references the resources (usually Gateways) that a Route wants - to be attached to. Note that the referenced parent resource needs to - allow this for the attachment to be complete. For Gateways, that means - the Gateway needs to allow attachment from Routes of this kind and - namespace. For Services, that means the Service must either be in the same - namespace for a "producer" route, or the mesh implementation must support - and allow "consumer" routes for the referenced Service. ReferenceGrant is - not applicable for governing ParentRefs to Services - it is not possible to - create a "producer" route for a Service in a different namespace from the - Route. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - ParentRefs must be _distinct_. This means either that: - - - * They select different objects. If this is the case, then parentRef - entries are distinct. In terms of fields, this means that the - multi-part key defined by `group`, `kind`, `namespace`, and `name` must - be unique across all parentRef entries in the Route. - * They do not select different objects, but for each optional field used, - each ParentRef that selects the same object must set the same set of - optional fields to different values. If one ParentRef sets a - combination of optional fields, all must set the same combination. - - - Some examples: - - - * If one ParentRef sets `sectionName`, all ParentRefs referencing the - same object must also set `sectionName`. - * If one ParentRef sets `port`, all ParentRefs referencing the same - object must also set `port`. - * If one ParentRef sets `sectionName` and `port`, all ParentRefs - referencing the same object must also set `sectionName` and `port`. - - - It is possible to separately reference multiple distinct objects that may - be collapsed by an implementation. For example, some implementations may - choose to merge compatible Gateway Listeners together. If that is the - case, the list of routes attached to those resources should also be - merged. - - - Note that for ParentRefs that cross namespace boundaries, there are specific - rules. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example, - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable other kinds of cross-namespace reference. - - items: - description: |- - ParentReference identifies an API object (usually a Gateway) that can be considered - a parent of this resource (usually a route). There are two kinds of parent resources - with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - This API may be extended in the future to support additional kinds of parent - resources. - - - The API object must be valid in the cluster; the Group and Kind must - be registered in the cluster for this reference to be valid. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - maxItems: 32 - type: array - x-kubernetes-validations: - - message: sectionName must be specified when parentRefs includes - 2 or more references to the same parent - rule: 'self.all(p1, self.all(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '''') && (!has(p2.__namespace__) || p2.__namespace__ - == '''')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) ? ((!has(p1.sectionName) - || p1.sectionName == '''') == (!has(p2.sectionName) || p2.sectionName - == '''')) : true))' - - message: sectionName must be unique when parentRefs includes 2 or - more references to the same parent - rule: self.all(p1, self.exists_one(p2, p1.group == p2.group && p1.kind - == p2.kind && p1.name == p2.name && (((!has(p1.__namespace__) - || p1.__namespace__ == '') && (!has(p2.__namespace__) || p2.__namespace__ - == '')) || (has(p1.__namespace__) && has(p2.__namespace__) && - p1.__namespace__ == p2.__namespace__ )) && (((!has(p1.sectionName) - || p1.sectionName == '') && (!has(p2.sectionName) || p2.sectionName - == '')) || (has(p1.sectionName) && has(p2.sectionName) && p1.sectionName - == p2.sectionName)))) - rules: - default: - - matches: - - path: - type: PathPrefix - value: / - description: Rules are a list of HTTP matchers, filters and actions. - items: - description: |- - HTTPRouteRule defines semantics for matching an HTTP request based on - conditions (matches), processing it (filters), and forwarding the request to - an API object (backendRefs). - properties: - backendRefs: - description: |- - BackendRefs defines the backend(s) where matching requests should be - sent. - - - Failure behavior here depends on how many BackendRefs are specified and - how many are invalid. - - - If *all* entries in BackendRefs are invalid, and there are also no filters - specified in this route rule, *all* traffic which matches this rule MUST - receive a 500 status code. - - - See the HTTPBackendRef definition for the rules about what makes a single - HTTPBackendRef invalid. - - - When a HTTPBackendRef is invalid, 500 status codes MUST be returned for - requests that would have otherwise been routed to an invalid backend. If - multiple backends are specified, and some are invalid, the proportion of - requests that would otherwise have been routed to an invalid backend - MUST receive a 500 status code. - - - For example, if two backends are specified with equal weights, and one is - invalid, 50 percent of traffic must receive a 500. Implementations may - choose how that 50 percent is determined. - - - Support: Core for Kubernetes Service - - - Support: Extended for Kubernetes ServiceImport - - - Support: Implementation-specific for any other resource - - - Support for weight: Core - items: - description: |- - HTTPBackendRef defines how a HTTPRoute forwards a HTTP request. - - - Note that when a namespace different than the local namespace is specified, a - ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - - - - When the BackendRef points to a Kubernetes Service, implementations SHOULD - honor the appProtocol field if it is set for the target Service Port. - - - Implementations supporting appProtocol SHOULD recognize the Kubernetes - Standard Application Protocols defined in KEP-3726. - - - If a Service appProtocol isn't specified, an implementation MAY infer the - backend protocol through its own means. Implementations MAY infer the - protocol from the Route type referring to the backend Service. - - - If a Route is not able to send traffic to the backend using the specified - protocol then the backend is considered invalid. Implementations MUST set the - "ResolvedRefs" condition to "False" with the "UnsupportedProtocol" reason. - - - - properties: - filters: - description: |- - Filters defined at this level should be executed if and only if the - request is being forwarded to the backend defined here. - - - Support: Implementation-specific (For broader support of filters, use the - Filters field in HTTPRouteRule.) - items: - description: |- - HTTPRouteFilter defines processing steps that must be completed during the - request or response lifecycle. HTTPRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - This filter can be used multiple times within the same rule. - - - Support: Implementation-specific - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For - example "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind - == ''Service'') ? has(self.port) : true' - required: - - backendRef - type: object - requestRedirect: - description: |- - RequestRedirect defines a schema for a filter that responds to the - request with an HTTP redirection. - - - Support: Core - properties: - hostname: - description: |- - Hostname is the hostname to be used in the value of the `Location` - header in the response. - When empty, the hostname in the `Host` header of the request is used. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines parameters used to modify the path of the incoming request. - The modified path is then used to construct the `Location` header. When - empty, the request path is used as-is. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified - when type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? - has(self.replaceFullPath) : true' - - message: type must be 'ReplaceFullPath' when - replaceFullPath is set - rule: 'has(self.replaceFullPath) ? self.type - == ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified - when type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' - ? has(self.replacePrefixMatch) : true' - - message: type must be 'ReplacePrefixMatch' - when replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - port: - description: |- - Port is the port to be used in the value of the `Location` - header in the response. - - - If no port is specified, the redirect port MUST be derived using the - following rules: - - - * If redirect scheme is not-empty, the redirect port MUST be the well-known - port associated with the redirect scheme. Specifically "http" to port 80 - and "https" to port 443. If the redirect scheme does not have a - well-known port, the listener port of the Gateway SHOULD be used. - * If redirect scheme is empty, the redirect port MUST be the Gateway - Listener port. - - - Implementations SHOULD NOT add the port number in the 'Location' - header in the following cases: - - - * A Location header that will use HTTP (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 80. - * A Location header that will use HTTPS (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 443. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - scheme: - description: |- - Scheme is the scheme to be used in the value of the `Location` header in - the response. When empty, the scheme of the request is used. - - - Scheme redirects can affect the port of the redirect, for more information, - refer to the documentation for the port field of this filter. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Extended - enum: - - http - - https - type: string - statusCode: - default: 302 - description: |- - StatusCode is the HTTP status code to be used in response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Core - enum: - - 301 - - 302 - type: integer - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP - Header to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |- - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations must support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by - specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` should be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - RequestHeaderModifier - - ResponseHeaderModifier - - RequestMirror - - RequestRedirect - - URLRewrite - - ExtensionRef - type: string - urlRewrite: - description: |- - URLRewrite defines a schema for a filter that modifies a request during forwarding. - - - Support: Extended - properties: - hostname: - description: |- - Hostname is the value to be used to replace the Host header value during - forwarding. - - - Support: Extended - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines a path rewrite. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified - when type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? - has(self.replaceFullPath) : true' - - message: type must be 'ReplaceFullPath' when - replaceFullPath is set - rule: 'has(self.replaceFullPath) ? self.type - == ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified - when type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' - ? has(self.replacePrefixMatch) : true' - - message: type must be 'ReplacePrefixMatch' - when replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - type: object - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil - if the filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type - != ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type - == ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil - if the filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type - != ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for - RequestMirror filter.type - rule: '!(!has(self.requestMirror) && self.type == - ''RequestMirror'')' - - message: filter.requestRedirect must be nil if the - filter.type is not RequestRedirect - rule: '!(has(self.requestRedirect) && self.type != - ''RequestRedirect'')' - - message: filter.requestRedirect must be specified - for RequestRedirect filter.type - rule: '!(!has(self.requestRedirect) && self.type == - ''RequestRedirect'')' - - message: filter.urlRewrite must be nil if the filter.type - is not URLRewrite - rule: '!(has(self.urlRewrite) && self.type != ''URLRewrite'')' - - message: filter.urlRewrite must be specified for URLRewrite - filter.type - rule: '!(!has(self.urlRewrite) && self.type == ''URLRewrite'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for - ExtensionRef filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: May specify either httpRouteFilterRequestRedirect - or httpRouteFilterRequestRewrite, but not both - rule: '!(self.exists(f, f.type == ''RequestRedirect'') - && self.exists(f, f.type == ''URLRewrite''))' - - message: May specify either httpRouteFilterRequestRedirect - or httpRouteFilterRequestRewrite, but not both - rule: '!(self.exists(f, f.type == ''RequestRedirect'') - && self.exists(f, f.type == ''URLRewrite''))' - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - - message: RequestRedirect filter cannot be repeated - rule: self.filter(f, f.type == 'RequestRedirect').size() - <= 1 - - message: URLRewrite filter cannot be repeated - rule: self.filter(f, f.type == 'URLRewrite').size() - <= 1 - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - weight: - default: 1 - description: |- - Weight specifies the proportion of requests forwarded to the referenced - backend. This is computed as weight/(sum of all weights in this - BackendRefs list). For non-zero values, there may be some epsilon from - the exact proportion defined here depending on the precision an - implementation supports. Weight is not a percentage and the sum of - weights does not need to equal 100. - - - If only one backend is specified and it has a weight greater than 0, 100% - of the traffic is forwarded to that backend. If weight is set to 0, no - traffic should be forwarded for this entry. If unspecified, weight - defaults to 1. - - - Support for this field varies based on the context where used. - format: int32 - maximum: 1000000 - minimum: 0 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - maxItems: 16 - type: array - filters: - description: |- - Filters define the filters that are applied to requests that match - this rule. - - - Wherever possible, implementations SHOULD implement filters in the order - they are specified. - - - Implementations MAY choose to implement this ordering strictly, rejecting - any combination or order of filters that can not be supported. If implementations - choose a strict interpretation of filter ordering, they MUST clearly document - that behavior. - - - To reject an invalid combination or order of filters, implementations SHOULD - consider the Route Rules with this configuration invalid. If all Route Rules - in a Route are invalid, the entire Route would be considered invalid. If only - a portion of Route Rules are invalid, implementations MUST set the - "PartiallyInvalid" condition for the Route. - - - Conformance-levels at this level are defined based on the type of filter: - - - - ALL core filters MUST be supported by all implementations. - - Implementers are encouraged to support extended filters. - - Implementation-specific custom filters have no API guarantees across - implementations. - - - Specifying the same filter multiple times is not supported unless explicitly - indicated in the filter. - - - All filters are expected to be compatible with each other except for the - URLRewrite and RequestRedirect filters, which may not be combined. If an - implementation can not support other combinations of filters, they must clearly - document that limitation. In cases where incompatible or unsupported - filters are specified and cause the `Accepted` condition to be set to status - `False`, implementations may use the `IncompatibleFilters` reason to specify - this configuration error. - - - Support: Core - items: - description: |- - HTTPRouteFilter defines processing steps that must be completed during the - request or response lifecycle. HTTPRouteFilters are meant as an extension - point to express processing that may be done in Gateway implementations. Some - examples include request or response modification, implementing - authentication strategies, rate-limiting, and traffic shaping. API - guarantee/conformance is defined based on the type of the filter. - properties: - extensionRef: - description: |- - ExtensionRef is an optional, implementation-specific extension to the - "filter" behavior. For example, resource "myroutefilter" in group - "networking.example.net"). ExtensionRef MUST NOT be used for core and - extended filters. - - - This filter can be used multiple times within the same rule. - - - Support: Implementation-specific - properties: - group: - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: Kind is kind of the referent. For example - "HTTPRoute" or "Service". - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - - name - type: object - requestHeaderModifier: - description: |- - RequestHeaderModifier defines a schema for a filter that modifies request - headers. - - - Support: Core - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - requestMirror: - description: |- - RequestMirror defines a schema for a filter that mirrors requests. - Requests are sent to the specified destination, but responses from - that destination are ignored. - - - This filter can be used multiple times within the same rule. Note that - not all implementations will be able to support mirroring to multiple - backends. - - - Support: Extended - properties: - backendRef: - description: |- - BackendRef references a resource where mirrored requests are sent. - - - Mirrored requests must be sent only to a single destination endpoint - within this BackendRef, irrespective of how many endpoints are present - within this BackendRef. - - - If the referent cannot be found, this BackendRef is invalid and must be - dropped from the Gateway. The controller must ensure the "ResolvedRefs" - condition on the Route status is set to `status: False` and not configure - this backend in the underlying implementation. - - - If there is a cross-namespace reference to an *existing* object - that is not allowed by a ReferenceGrant, the controller must ensure the - "ResolvedRefs" condition on the Route is set to `status: False`, - with the "RefNotPermitted" reason and not configure this backend in the - underlying implementation. - - - In either error case, the Message of the `ResolvedRefs` Condition - should be used to provide more detail about the problem. - - - Support: Extended for Kubernetes Service - - - Support: Implementation-specific for any other resource - properties: - group: - default: "" - description: |- - Group is the group of the referent. For example, "gateway.networking.k8s.io". - When unspecified or empty string, core API group is inferred. - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Service - description: |- - Kind is the Kubernetes resource kind of the referent. For example - "Service". - - - Defaults to "Service" when not specified. - - - ExternalName services can refer to CNAME DNS records that may live - outside of the cluster and as such are difficult to reason about in - terms of conformance. They also may not be safe to forward to (see - CVE-2021-25740 for more information). Implementations SHOULD NOT - support ExternalName Services. - - - Support: Core (Services with a type other than ExternalName) - - - Support: Implementation-specific (Services with type ExternalName) - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: Name is the name of the referent. - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the backend. When unspecified, the local - namespace is inferred. - - - Note that when a namespace different than the local namespace is specified, - a ReferenceGrant object is required in the referent namespace to allow that - namespace's owner to accept the reference. See the ReferenceGrant - documentation for details. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port specifies the destination port number to use for this resource. - Port is required when the referent is a Kubernetes Service. In this - case, the port number is the service port number, not the target port. - For other resources, destination port might be derived from the referent - resource or this field. - format: int32 - maximum: 65535 - minimum: 1 - type: integer - required: - - name - type: object - x-kubernetes-validations: - - message: Must have port for Service reference - rule: '(size(self.group) == 0 && self.kind == ''Service'') - ? has(self.port) : true' - required: - - backendRef - type: object - requestRedirect: - description: |- - RequestRedirect defines a schema for a filter that responds to the - request with an HTTP redirection. - - - Support: Core - properties: - hostname: - description: |- - Hostname is the hostname to be used in the value of the `Location` - header in the response. - When empty, the hostname in the `Host` header of the request is used. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines parameters used to modify the path of the incoming request. - The modified path is then used to construct the `Location` header. When - empty, the request path is used as-is. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified when - type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? has(self.replaceFullPath) - : true' - - message: type must be 'ReplaceFullPath' when replaceFullPath - is set - rule: 'has(self.replaceFullPath) ? self.type == - ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified when - type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' ? has(self.replacePrefixMatch) - : true' - - message: type must be 'ReplacePrefixMatch' when - replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - port: - description: |- - Port is the port to be used in the value of the `Location` - header in the response. - - - If no port is specified, the redirect port MUST be derived using the - following rules: - - - * If redirect scheme is not-empty, the redirect port MUST be the well-known - port associated with the redirect scheme. Specifically "http" to port 80 - and "https" to port 443. If the redirect scheme does not have a - well-known port, the listener port of the Gateway SHOULD be used. - * If redirect scheme is empty, the redirect port MUST be the Gateway - Listener port. - - - Implementations SHOULD NOT add the port number in the 'Location' - header in the following cases: - - - * A Location header that will use HTTP (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 80. - * A Location header that will use HTTPS (whether that is determined via - the Listener protocol or the Scheme field) _and_ use port 443. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - scheme: - description: |- - Scheme is the scheme to be used in the value of the `Location` header in - the response. When empty, the scheme of the request is used. - - - Scheme redirects can affect the port of the redirect, for more information, - refer to the documentation for the port field of this filter. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Extended - enum: - - http - - https - type: string - statusCode: - default: 302 - description: |- - StatusCode is the HTTP status code to be used in response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - - - Support: Core - enum: - - 301 - - 302 - type: integer - type: object - responseHeaderModifier: - description: |- - ResponseHeaderModifier defines a schema for a filter that modifies response - headers. - - - Support: Extended - properties: - add: - description: |- - Add adds the given header(s) (name, value) to the request - before the action. It appends to any existing values associated - with the header name. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - add: - - name: "my-header" - value: "bar,baz" - - - Output: - GET /foo HTTP/1.1 - my-header: foo,bar,baz - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - remove: - description: |- - Remove the given header(s) from the HTTP request before the action. The - value of Remove is a list of HTTP header names. Note that the header - names are case-insensitive (see - https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - - - Input: - GET /foo HTTP/1.1 - my-header1: foo - my-header2: bar - my-header3: baz - - - Config: - remove: ["my-header1", "my-header3"] - - - Output: - GET /foo HTTP/1.1 - my-header2: bar - items: - type: string - maxItems: 16 - type: array - x-kubernetes-list-type: set - set: - description: |- - Set overwrites the request with the given header (name, value) - before the action. - - - Input: - GET /foo HTTP/1.1 - my-header: foo - - - Config: - set: - - name: "my-header" - value: "bar" - - - Output: - GET /foo HTTP/1.1 - my-header: bar - items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, the first entry with - an equivalent name MUST be considered for a match. Subsequent entries - with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - value: - description: Value is the value of HTTP Header - to be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - type: - description: |- - Type identifies the type of filter to apply. As with other API fields, - types are classified into three conformance levels: - - - - Core: Filter types and their corresponding configuration defined by - "Support: Core" in this package, e.g. "RequestHeaderModifier". All - implementations must support core filters. - - - - Extended: Filter types and their corresponding configuration defined by - "Support: Extended" in this package, e.g. "RequestMirror". Implementers - are encouraged to support extended filters. - - - - Implementation-specific: Filters that are defined and supported by - specific vendors. - In the future, filters showing convergence in behavior across multiple - implementations will be considered for inclusion in extended or core - conformance levels. Filter-specific configuration for such filters - is specified using the ExtensionRef field. `Type` should be set to - "ExtensionRef" for custom filters. - - - Implementers are encouraged to define custom implementation types to - extend the core API with implementation-specific behavior. - - - If a reference to a custom filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests that would have been processed by - that filter MUST receive a HTTP error response. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - RequestHeaderModifier - - ResponseHeaderModifier - - RequestMirror - - RequestRedirect - - URLRewrite - - ExtensionRef - type: string - urlRewrite: - description: |- - URLRewrite defines a schema for a filter that modifies a request during forwarding. - - - Support: Extended - properties: - hostname: - description: |- - Hostname is the value to be used to replace the Host header value during - forwarding. - - - Support: Extended - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - path: - description: |- - Path defines a path rewrite. - - - Support: Extended - properties: - replaceFullPath: - description: |- - ReplaceFullPath specifies the value with which to replace the full path - of a request during a rewrite or redirect. - maxLength: 1024 - type: string - replacePrefixMatch: - description: |- - ReplacePrefixMatch specifies the value with which to replace the prefix - match of a request during a rewrite or redirect. For example, a request - to "/foo/bar" with a prefix match of "/foo" and a ReplacePrefixMatch - of "/xyz" would be modified to "/xyz/bar". - - - Note that this matches the behavior of the PathPrefix match type. This - matches full path elements. A path element refers to the list of labels - in the path split by the `/` separator. When specified, a trailing `/` is - ignored. For example, the paths `/abc`, `/abc/`, and `/abc/def` would all - match the prefix `/abc`, but the path `/abcd` would not. - - - ReplacePrefixMatch is only compatible with a `PathPrefix` HTTPRouteMatch. - Using any other HTTPRouteMatch type on the same HTTPRouteRule will result in - the implementation setting the Accepted Condition for the Route to `status: False`. - - - Request Path | Prefix Match | Replace Prefix | Modified Path - -------------|--------------|----------------|---------- - /foo/bar | /foo | /xyz | /xyz/bar - /foo/bar | /foo | /xyz/ | /xyz/bar - /foo/bar | /foo/ | /xyz | /xyz/bar - /foo/bar | /foo/ | /xyz/ | /xyz/bar - /foo | /foo | /xyz | /xyz - /foo/ | /foo | /xyz | /xyz/ - /foo/bar | /foo | | /bar - /foo/ | /foo | | / - /foo | /foo | | / - /foo/ | /foo | / | / - /foo | /foo | / | / - maxLength: 1024 - type: string - type: - description: |- - Type defines the type of path modifier. Additional types may be - added in a future release of the API. - - - Note that values may be added to this enum, implementations - must ensure that unknown values will not cause a crash. - - - Unknown values here must result in the implementation setting the - Accepted Condition for the Route to `status: False`, with a - Reason of `UnsupportedValue`. - enum: - - ReplaceFullPath - - ReplacePrefixMatch - type: string - required: - - type - type: object - x-kubernetes-validations: - - message: replaceFullPath must be specified when - type is set to 'ReplaceFullPath' - rule: 'self.type == ''ReplaceFullPath'' ? has(self.replaceFullPath) - : true' - - message: type must be 'ReplaceFullPath' when replaceFullPath - is set - rule: 'has(self.replaceFullPath) ? self.type == - ''ReplaceFullPath'' : true' - - message: replacePrefixMatch must be specified when - type is set to 'ReplacePrefixMatch' - rule: 'self.type == ''ReplacePrefixMatch'' ? has(self.replacePrefixMatch) - : true' - - message: type must be 'ReplacePrefixMatch' when - replacePrefixMatch is set - rule: 'has(self.replacePrefixMatch) ? self.type - == ''ReplacePrefixMatch'' : true' - type: object - required: - - type - type: object - x-kubernetes-validations: - - message: filter.requestHeaderModifier must be nil if the - filter.type is not RequestHeaderModifier - rule: '!(has(self.requestHeaderModifier) && self.type != - ''RequestHeaderModifier'')' - - message: filter.requestHeaderModifier must be specified - for RequestHeaderModifier filter.type - rule: '!(!has(self.requestHeaderModifier) && self.type == - ''RequestHeaderModifier'')' - - message: filter.responseHeaderModifier must be nil if the - filter.type is not ResponseHeaderModifier - rule: '!(has(self.responseHeaderModifier) && self.type != - ''ResponseHeaderModifier'')' - - message: filter.responseHeaderModifier must be specified - for ResponseHeaderModifier filter.type - rule: '!(!has(self.responseHeaderModifier) && self.type - == ''ResponseHeaderModifier'')' - - message: filter.requestMirror must be nil if the filter.type - is not RequestMirror - rule: '!(has(self.requestMirror) && self.type != ''RequestMirror'')' - - message: filter.requestMirror must be specified for RequestMirror - filter.type - rule: '!(!has(self.requestMirror) && self.type == ''RequestMirror'')' - - message: filter.requestRedirect must be nil if the filter.type - is not RequestRedirect - rule: '!(has(self.requestRedirect) && self.type != ''RequestRedirect'')' - - message: filter.requestRedirect must be specified for RequestRedirect - filter.type - rule: '!(!has(self.requestRedirect) && self.type == ''RequestRedirect'')' - - message: filter.urlRewrite must be nil if the filter.type - is not URLRewrite - rule: '!(has(self.urlRewrite) && self.type != ''URLRewrite'')' - - message: filter.urlRewrite must be specified for URLRewrite - filter.type - rule: '!(!has(self.urlRewrite) && self.type == ''URLRewrite'')' - - message: filter.extensionRef must be nil if the filter.type - is not ExtensionRef - rule: '!(has(self.extensionRef) && self.type != ''ExtensionRef'')' - - message: filter.extensionRef must be specified for ExtensionRef - filter.type - rule: '!(!has(self.extensionRef) && self.type == ''ExtensionRef'')' - maxItems: 16 - type: array - x-kubernetes-validations: - - message: May specify either httpRouteFilterRequestRedirect - or httpRouteFilterRequestRewrite, but not both - rule: '!(self.exists(f, f.type == ''RequestRedirect'') && - self.exists(f, f.type == ''URLRewrite''))' - - message: RequestHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'RequestHeaderModifier').size() - <= 1 - - message: ResponseHeaderModifier filter cannot be repeated - rule: self.filter(f, f.type == 'ResponseHeaderModifier').size() - <= 1 - - message: RequestRedirect filter cannot be repeated - rule: self.filter(f, f.type == 'RequestRedirect').size() <= - 1 - - message: URLRewrite filter cannot be repeated - rule: self.filter(f, f.type == 'URLRewrite').size() <= 1 - matches: - default: - - path: - type: PathPrefix - value: / - description: |- - Matches define conditions used for matching the rule against incoming - HTTP requests. Each match is independent, i.e. this rule will be matched - if **any** one of the matches is satisfied. - - - For example, take the following matches configuration: - - - ``` - matches: - - path: - value: "/foo" - headers: - - name: "version" - value: "v2" - - path: - value: "/v2/foo" - ``` - - - For a request to match against this rule, a request must satisfy - EITHER of the two conditions: - - - - path prefixed with `/foo` AND contains the header `version: v2` - - path prefix of `/v2/foo` - - - See the documentation for HTTPRouteMatch on how to specify multiple - match conditions that should be ANDed together. - - - If no matches are specified, the default is a prefix - path match on "/", which has the effect of matching every - HTTP request. - - - Proxy or Load Balancer routing configuration generated from HTTPRoutes - MUST prioritize matches based on the following criteria, continuing on - ties. Across all rules specified on applicable Routes, precedence must be - given to the match having: - - - * "Exact" path match. - * "Prefix" path match with largest number of characters. - * Method match. - * Largest number of header matches. - * Largest number of query param matches. - - - Note: The precedence of RegularExpression path matches are implementation-specific. - - - If ties still exist across multiple Routes, matching precedence MUST be - determined in order of the following criteria, continuing on ties: - - - * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order by - "{namespace}/{name}". - - - If ties still exist within an HTTPRoute, matching precedence MUST be granted - to the FIRST matching rule (in list order) with a match meeting the above - criteria. - - - When no rules matching a request have been successfully attached to the - parent a request is coming from, a HTTP 404 status code MUST be returned. - items: - description: "HTTPRouteMatch defines the predicate used to - match requests to a given\naction. Multiple match types - are ANDed together, i.e. the match will\nevaluate to true - only if all conditions are satisfied.\n\n\nFor example, - the match below will match a HTTP request only if its path\nstarts - with `/foo` AND it contains the `version: v1` header:\n\n\n```\nmatch:\n\n\n\tpath:\n\t - \ value: \"/foo\"\n\theaders:\n\t- name: \"version\"\n\t - \ value \"v1\"\n\n\n```" - properties: - headers: - description: |- - Headers specifies HTTP request header matchers. Multiple match values are - ANDed together, meaning, a request must match all the specified headers - to select the route. - items: - description: |- - HTTPHeaderMatch describes how to select a HTTP route by matching HTTP request - headers. - properties: - name: - description: |- - Name is the name of the HTTP Header to be matched. Name matching MUST be - case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - - - If multiple entries specify equivalent header names, only the first - entry with an equivalent name MUST be considered for a match. Subsequent - entries with an equivalent header name MUST be ignored. Due to the - case-insensitivity of header names, "foo" and "Foo" are considered - equivalent. - - - When a header is repeated in an HTTP request, it is - implementation-specific behavior as to how this is represented. - Generally, proxies should follow the guidance from the RFC: - https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 regarding - processing a repeated header, with special handling for "Set-Cookie". - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - type: - default: Exact - description: |- - Type specifies how to match against the value of the header. - - - Support: Core (Exact) - - - Support: Implementation-specific (RegularExpression) - - - Since RegularExpression HeaderMatchType has implementation-specific - conformance, implementations can support POSIX, PCRE or any other dialects - of regular expressions. Please read the implementation's documentation to - determine the supported dialect. - enum: - - Exact - - RegularExpression - type: string - value: - description: Value is the value of HTTP Header to - be matched. - maxLength: 4096 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - method: - description: |- - Method specifies HTTP method matcher. - When specified, this route will be matched only if the request has the - specified method. - - - Support: Extended - enum: - - GET - - HEAD - - POST - - PUT - - DELETE - - CONNECT - - OPTIONS - - TRACE - - PATCH - type: string - path: - default: - type: PathPrefix - value: / - description: |- - Path specifies a HTTP request path matcher. If this field is not - specified, a default prefix match on the "/" path is provided. - properties: - type: - default: PathPrefix - description: |- - Type specifies how to match against the path Value. - - - Support: Core (Exact, PathPrefix) - - - Support: Implementation-specific (RegularExpression) - enum: - - Exact - - PathPrefix - - RegularExpression - type: string - value: - default: / - description: Value of the HTTP path to match against. - maxLength: 1024 - type: string - type: object - x-kubernetes-validations: - - message: value must be an absolute path and start with - '/' when type one of ['Exact', 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? self.value.startsWith(''/'') - : true' - - message: must not contain '//' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''//'') - : true' - - message: must not contain '/./' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''/./'') - : true' - - message: must not contain '/../' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''/../'') - : true' - - message: must not contain '%2f' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''%2f'') - : true' - - message: must not contain '%2F' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''%2F'') - : true' - - message: must not contain '#' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.contains(''#'') - : true' - - message: must not end with '/..' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.endsWith(''/..'') - : true' - - message: must not end with '/.' when type one of ['Exact', - 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? !self.value.endsWith(''/.'') - : true' - - message: type must be one of ['Exact', 'PathPrefix', - 'RegularExpression'] - rule: self.type in ['Exact','PathPrefix'] || self.type - == 'RegularExpression' - - message: must only contain valid characters (matching - ^(?:[-A-Za-z0-9/._~!$&'()*+,;=:@]|[%][0-9a-fA-F]{2})+$) - for types ['Exact', 'PathPrefix'] - rule: '(self.type in [''Exact'',''PathPrefix'']) ? self.value.matches(r"""^(?:[-A-Za-z0-9/._~!$&''()*+,;=:@]|[%][0-9a-fA-F]{2})+$""") - : true' - queryParams: - description: |- - QueryParams specifies HTTP query parameter matchers. Multiple match - values are ANDed together, meaning, a request must match all the - specified query parameters to select the route. - - - Support: Extended - items: - description: |- - HTTPQueryParamMatch describes how to select a HTTP route by matching HTTP - query parameters. - properties: - name: - description: |- - Name is the name of the HTTP query param to be matched. This must be an - exact string match. (See - https://tools.ietf.org/html/rfc7230#section-2.7.3). - - - If multiple entries specify equivalent query param names, only the first - entry with an equivalent name MUST be considered for a match. Subsequent - entries with an equivalent query param name MUST be ignored. - - - If a query param is repeated in an HTTP request, the behavior is - purposely left undefined, since different data planes have different - capabilities. However, it is *recommended* that implementations should - match against the first value of the param if the data plane supports it, - as this behavior is expected in other load balancing contexts outside of - the Gateway API. - - - Users SHOULD NOT route traffic based on repeated query params to guard - themselves against potential differences in the implementations. - maxLength: 256 - minLength: 1 - pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ - type: string - type: - default: Exact - description: |- - Type specifies how to match against the value of the query parameter. - - - Support: Extended (Exact) - - - Support: Implementation-specific (RegularExpression) - - - Since RegularExpression QueryParamMatchType has Implementation-specific - conformance, implementations can support POSIX, PCRE or any other - dialects of regular expressions. Please read the implementation's - documentation to determine the supported dialect. - enum: - - Exact - - RegularExpression - type: string - value: - description: Value is the value of HTTP query param - to be matched. - maxLength: 1024 - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 16 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - type: object - maxItems: 8 - type: array - type: object - x-kubernetes-validations: - - message: RequestRedirect filter must not be used together with - backendRefs - rule: '(has(self.backendRefs) && size(self.backendRefs) > 0) ? - (!has(self.filters) || self.filters.all(f, !has(f.requestRedirect))): - true' - - message: When using RequestRedirect filter with path.replacePrefixMatch, - exactly one PathPrefix match must be specified - rule: '(has(self.filters) && self.filters.exists_one(f, has(f.requestRedirect) - && has(f.requestRedirect.path) && f.requestRedirect.path.type - == ''ReplacePrefixMatch'' && has(f.requestRedirect.path.replacePrefixMatch))) - ? ((size(self.matches) != 1 || !has(self.matches[0].path) || - self.matches[0].path.type != ''PathPrefix'') ? false : true) - : true' - - message: When using URLRewrite filter with path.replacePrefixMatch, - exactly one PathPrefix match must be specified - rule: '(has(self.filters) && self.filters.exists_one(f, has(f.urlRewrite) - && has(f.urlRewrite.path) && f.urlRewrite.path.type == ''ReplacePrefixMatch'' - && has(f.urlRewrite.path.replacePrefixMatch))) ? ((size(self.matches) - != 1 || !has(self.matches[0].path) || self.matches[0].path.type - != ''PathPrefix'') ? false : true) : true' - - message: Within backendRefs, when using RequestRedirect filter - with path.replacePrefixMatch, exactly one PathPrefix match must - be specified - rule: '(has(self.backendRefs) && self.backendRefs.exists_one(b, - (has(b.filters) && b.filters.exists_one(f, has(f.requestRedirect) - && has(f.requestRedirect.path) && f.requestRedirect.path.type - == ''ReplacePrefixMatch'' && has(f.requestRedirect.path.replacePrefixMatch))) - )) ? ((size(self.matches) != 1 || !has(self.matches[0].path) - || self.matches[0].path.type != ''PathPrefix'') ? false : true) - : true' - - message: Within backendRefs, When using URLRewrite filter with - path.replacePrefixMatch, exactly one PathPrefix match must be - specified - rule: '(has(self.backendRefs) && self.backendRefs.exists_one(b, - (has(b.filters) && b.filters.exists_one(f, has(f.urlRewrite) - && has(f.urlRewrite.path) && f.urlRewrite.path.type == ''ReplacePrefixMatch'' - && has(f.urlRewrite.path.replacePrefixMatch))) )) ? ((size(self.matches) - != 1 || !has(self.matches[0].path) || self.matches[0].path.type - != ''PathPrefix'') ? false : true) : true' - maxItems: 16 - type: array - type: object - status: - description: Status defines the current state of HTTPRoute. - properties: - parents: - description: |- - Parents is a list of parent resources (usually Gateways) that are - associated with the route, and the status of the route with respect to - each parent. When this route attaches to a parent, the controller that - manages the parent must add an entry to this list when the controller - first sees the route and should update the entry as appropriate when the - route or gateway is modified. - - - Note that parent references that cannot be resolved by an implementation - of this API will not be added to this list. Implementations of this API - can only populate Route status for the Gateways/parent resources they are - responsible for. - - - A maximum of 32 Gateways will be represented in this list. An empty list - means the route has not been attached to any Gateway. - items: - description: |- - RouteParentStatus describes the status of a route with respect to an - associated Parent. - properties: - conditions: - description: |- - Conditions describes the status of the route with respect to the Gateway. - Note that the route's availability is also subject to the Gateway's own - status conditions and listener status. - - - If the Route's ParentRef specifies an existing Gateway that supports - Routes of this kind AND that Gateway's controller has sufficient access, - then that Gateway's controller MUST set the "Accepted" condition on the - Route, to indicate whether the route has been accepted or rejected by the - Gateway, and why. - - - A Route MUST be considered "Accepted" if at least one of the Route's - rules is implemented by the Gateway. - - - There are a number of cases where the "Accepted" condition may not be set - due to lack of controller visibility, that includes when: - - - * The Route refers to a non-existent parent. - * The Route is of a type that the controller does not support. - * The Route is in a namespace the controller does not have access to. - items: - description: "Condition contains details for one aspect of - the current state of this API Resource.\n---\nThis struct - is intended for direct use as an array at the field path - .status.conditions. For example,\n\n\n\ttype FooStatus - struct{\n\t // Represents the observations of a foo's - current state.\n\t // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\"\n\t // - +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // - +listType=map\n\t // +listMapKey=type\n\t Conditions - []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" - patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t - \ // other fields\n\t}" - properties: - lastTransitionTime: - description: |- - lastTransitionTime is the last time the condition transitioned from one status to another. - This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. - format: date-time - type: string - message: - description: |- - message is a human readable message indicating details about the transition. - This may be an empty string. - maxLength: 32768 - type: string - observedGeneration: - description: |- - observedGeneration represents the .metadata.generation that the condition was set based upon. - For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date - with respect to the current state of the instance. - format: int64 - minimum: 0 - type: integer - reason: - description: |- - reason contains a programmatic identifier indicating the reason for the condition's last transition. - Producers of specific condition types may define expected values and meanings for this field, - and whether the values are considered a guaranteed API. - The value should be a CamelCase string. - This field may not be empty. - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - description: status of the condition, one of True, False, - Unknown. - enum: - - "True" - - "False" - - Unknown - type: string - type: - description: |- - type of condition in CamelCase or in foo.example.com/CamelCase. - --- - Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict is important. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - maxLength: 316 - pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ - type: string - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - maxItems: 8 - minItems: 1 - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - controllerName: - description: |- - ControllerName is a domain/path string that indicates the name of the - controller that wrote this status. This corresponds with the - controllerName field on GatewayClass. - - - Example: "example.net/gateway-controller". - - - The format of this field is DOMAIN "/" PATH, where DOMAIN and PATH are - valid Kubernetes names - (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names). - - - Controllers MUST populate this field when writing status. Controllers should ensure that - entries to status populated with their ControllerName are cleaned up when they are no - longer necessary. - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$ - type: string - parentRef: - description: |- - ParentRef corresponds with a ParentRef in the spec that this - RouteParentStatus struct describes the status of. - properties: - group: - default: gateway.networking.k8s.io - description: |- - Group is the group of the referent. - When unspecified, "gateway.networking.k8s.io" is inferred. - To set the core API group (such as for a "Service" kind referent), - Group must be explicitly set to "" (empty string). - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - default: Gateway - description: |- - Kind is kind of the referent. - - - There are two kinds of parent resources with "Core" support: - - - * Gateway (Gateway conformance profile) - * Service (Mesh conformance profile, ClusterIP Services only) - - - Support for other resources is Implementation-Specific. - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. - - - Support: Core - maxLength: 253 - minLength: 1 - type: string - namespace: - description: |- - Namespace is the namespace of the referent. When unspecified, this refers - to the local namespace of the Route. - - - Note that there are specific rules for ParentRefs which cross namespace - boundaries. Cross-namespace references are only valid if they are explicitly - allowed by something in the namespace they are referring to. For example: - Gateway has the AllowedRoutes field, and ReferenceGrant provides a - generic way to enable any other kind of cross-namespace reference. - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - port: - description: |- - Port is the network port this Route targets. It can be interpreted - differently based on the type of parent resource. - - - When the parent resource is a Gateway, this targets all listeners - listening on the specified port that also support this kind of Route(and - select this Route). It's not recommended to set `Port` unless the - networking behaviors specified in a Route must apply to a specific port - as opposed to a listener(s) whose port(s) may be changed. When both Port - and SectionName are specified, the name and port of the selected listener - must match both specified values. - - Implementations MAY choose to support other parent resources. - Implementations supporting other types of parent resources MUST clearly - document how/if Port is interpreted. - - - For the purpose of status, an attachment is considered successful as - long as the parent resource accepts it partially. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment - from the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, - the Route MUST be considered detached from the Gateway. - - - Support: Extended - format: int32 - maximum: 65535 - minimum: 1 - type: integer - sectionName: - description: |- - SectionName is the name of a section within the target resource. In the - following resources, SectionName is interpreted as the following: - - - * Gateway: Listener name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - * Service: Port name. When both Port (experimental) and SectionName - are specified, the name and port of the selected listener must match - both specified values. - - - Implementations MAY choose to support attaching Routes to other resources. - If that is the case, they MUST clearly document how SectionName is - interpreted. - - - When unspecified (empty string), this will reference the entire resource. - For the purpose of status, an attachment is considered successful if at - least one section in the parent resource accepts it. For example, Gateway - listeners can restrict which Routes can attach to them by Route kind, - namespace, or hostname. If 1 of 2 Gateway listeners accept attachment from - the referencing Route, the Route MUST be considered successfully - attached. If no Gateway listeners accept attachment from this Route, the - Route MUST be considered detached from the Gateway. - - - Support: Core - maxLength: 253 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - required: - - name - type: object - required: - - controllerName - - parentRef - type: object - maxItems: 32 - type: array - required: - - parents - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null ---- -# -# config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml -# -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - api-approved.kubernetes.io: https://github.com/kubernetes-sigs/gateway-api/pull/2997 - gateway.networking.k8s.io/bundle-version: v1.1.0 - gateway.networking.k8s.io/channel: standard - creationTimestamp: null - name: referencegrants.gateway.networking.k8s.io -spec: - group: gateway.networking.k8s.io - names: - categories: - - gateway-api - kind: ReferenceGrant - listKind: ReferenceGrantList - plural: referencegrants - shortNames: - - refgrant - singular: referencegrant - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - deprecated: true - deprecationWarning: The v1alpha2 version of ReferenceGrant has been deprecated - and will be removed in a future release of the API. Please upgrade to v1beta1. - name: v1alpha2 - schema: - openAPIV3Schema: - description: |- - ReferenceGrant identifies kinds of resources in other namespaces that are - trusted to reference the specified kinds of resources in the same namespace - as the policy. - - - Each ReferenceGrant can be used to represent a unique trust relationship. - Additional Reference Grants can be used to add to the set of trusted - sources of inbound references for the namespace they are defined within. - - - A ReferenceGrant is required for all cross-namespace references in Gateway API - (with the exception of cross-namespace Route-Gateway attachment, which is - governed by the AllowedRoutes configuration on the Gateway, and cross-namespace - Service ParentRefs on a "consumer" mesh Route, which defines routing rules - applicable only to workloads in the Route namespace). ReferenceGrants allowing - a reference from a Route to a Service are only applicable to BackendRefs. - - - ReferenceGrant is a form of runtime verification allowing users to assert - which cross-namespace object references are permitted. Implementations that - support ReferenceGrant MUST NOT permit cross-namespace references which have - no grant, and MUST respond to the removal of a grant by revoking the access - that the grant allowed. - 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: Spec defines the desired state of ReferenceGrant. - properties: - from: - description: |- - From describes the trusted namespaces and kinds that can reference the - resources described in "To". Each entry in this list MUST be considered - to be an additional place that references can be valid from, or to put - this another way, entries MUST be combined using OR. - - - Support: Core - items: - description: ReferenceGrantFrom describes trusted namespaces and - kinds. - properties: - group: - description: |- - Group is the group of the referent. - When empty, the Kubernetes core API group is inferred. - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: |- - Kind is the kind of the referent. Although implementations may support - additional resources, the following types are part of the "Core" - support level for this field. - - - When used to permit a SecretObjectReference: - - - * Gateway - - - When used to permit a BackendObjectReference: - - - * GRPCRoute - * HTTPRoute - * TCPRoute - * TLSRoute - * UDPRoute - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - namespace: - description: |- - Namespace is the namespace of the referent. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - required: - - group - - kind - - namespace - type: object - maxItems: 16 - minItems: 1 - type: array - to: - description: |- - To describes the resources that may be referenced by the resources - described in "From". Each entry in this list MUST be considered to be an - additional place that references can be valid to, or to put this another - way, entries MUST be combined using OR. - - - Support: Core - items: - description: |- - ReferenceGrantTo describes what Kinds are allowed as targets of the - references. - properties: - group: - description: |- - Group is the group of the referent. - When empty, the Kubernetes core API group is inferred. - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: |- - Kind is the kind of the referent. Although implementations may support - additional resources, the following types are part of the "Core" - support level for this field: - - - * Secret when used to permit a SecretObjectReference - * Service when used to permit a BackendObjectReference - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. When unspecified, this policy - refers to all resources of the specified Group and Kind in the local - namespace. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - type: object - maxItems: 16 - minItems: 1 - type: array - required: - - from - - to - type: object - type: object - served: false - storage: false - subresources: {} - - additionalPrinterColumns: - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: |- - ReferenceGrant identifies kinds of resources in other namespaces that are - trusted to reference the specified kinds of resources in the same namespace - as the policy. - - - Each ReferenceGrant can be used to represent a unique trust relationship. - Additional Reference Grants can be used to add to the set of trusted - sources of inbound references for the namespace they are defined within. - - - All cross-namespace references in Gateway API (with the exception of cross-namespace - Gateway-route attachment) require a ReferenceGrant. - - - ReferenceGrant is a form of runtime verification allowing users to assert - which cross-namespace object references are permitted. Implementations that - support ReferenceGrant MUST NOT permit cross-namespace references which have - no grant, and MUST respond to the removal of a grant by revoking the access - that the grant allowed. - 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: Spec defines the desired state of ReferenceGrant. - properties: - from: - description: |- - From describes the trusted namespaces and kinds that can reference the - resources described in "To". Each entry in this list MUST be considered - to be an additional place that references can be valid from, or to put - this another way, entries MUST be combined using OR. - - - Support: Core - items: - description: ReferenceGrantFrom describes trusted namespaces and - kinds. - properties: - group: - description: |- - Group is the group of the referent. - When empty, the Kubernetes core API group is inferred. - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: |- - Kind is the kind of the referent. Although implementations may support - additional resources, the following types are part of the "Core" - support level for this field. - - - When used to permit a SecretObjectReference: - - - * Gateway - - - When used to permit a BackendObjectReference: - - - * GRPCRoute - * HTTPRoute - * TCPRoute - * TLSRoute - * UDPRoute - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - namespace: - description: |- - Namespace is the namespace of the referent. - - - Support: Core - maxLength: 63 - minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ - type: string - required: - - group - - kind - - namespace - type: object - maxItems: 16 - minItems: 1 - type: array - to: - description: |- - To describes the resources that may be referenced by the resources - described in "From". Each entry in this list MUST be considered to be an - additional place that references can be valid to, or to put this another - way, entries MUST be combined using OR. - - - Support: Core - items: - description: |- - ReferenceGrantTo describes what Kinds are allowed as targets of the - references. - properties: - group: - description: |- - Group is the group of the referent. - When empty, the Kubernetes core API group is inferred. - - - Support: Core - maxLength: 253 - pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - type: string - kind: - description: |- - Kind is the kind of the referent. Although implementations may support - additional resources, the following types are part of the "Core" - support level for this field: - - - * Secret when used to permit a SecretObjectReference - * Service when used to permit a BackendObjectReference - maxLength: 63 - minLength: 1 - pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ - type: string - name: - description: |- - Name is the name of the referent. When unspecified, this policy - refers to all resources of the specified Group and Kind in the local - namespace. - maxLength: 253 - minLength: 1 - type: string - required: - - group - - kind - type: object - maxItems: 16 - minItems: 1 - type: array - required: - - from - - to - type: object - type: object - served: true - storage: true - subresources: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: null - storedVersions: null diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_accesscontrolpolicies.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_accesscontrolpolicies.yaml deleted file mode 100644 index 821f969b676..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_accesscontrolpolicies.yaml +++ /dev/null @@ -1,368 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: accesscontrolpolicies.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: AccessControlPolicy - listKind: AccessControlPolicyList - plural: accesscontrolpolicies - singular: accesscontrolpolicy - scope: Cluster - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: AccessControlPolicy defines an access control policy. - 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: AccessControlPolicySpec configures an access control policy. - properties: - apiKey: - description: AccessControlPolicyAPIKey configure an APIKey control - policy. - properties: - forwardHeaders: - additionalProperties: - type: string - description: ForwardHeaders instructs the middleware to forward - key metadata as header values upon successful authentication. - type: object - keySource: - description: KeySource defines how to extract API keys from requests. - properties: - cookie: - description: Cookie is the name of a cookie. - type: string - header: - description: Header is the name of a header. - type: string - headerAuthScheme: - description: |- - HeaderAuthScheme sets an optional auth scheme when Header is set to "Authorization". - If set, this scheme is removed from the token, and all requests not including it are dropped. - type: string - query: - description: Query is the name of a query parameter. - type: string - type: object - keys: - description: Keys define the set of authorized keys to access - a protected resource. - items: - description: AccessControlPolicyAPIKeyKey defines an API key. - properties: - id: - description: ID is the unique identifier of the key. - type: string - metadata: - additionalProperties: - type: string - description: Metadata holds arbitrary metadata for this - key, can be used by ForwardHeaders. - type: object - value: - description: Value is the SHAKE-256 hash (using 64 bytes) - of the API key. - type: string - required: - - id - - value - type: object - type: array - required: - - keySource - type: object - basicAuth: - description: AccessControlPolicyBasicAuth holds the HTTP basic authentication - configuration. - properties: - forwardUsernameHeader: - type: string - realm: - type: string - stripAuthorizationHeader: - type: boolean - users: - items: - type: string - type: array - type: object - jwt: - description: AccessControlPolicyJWT configures a JWT access control - policy. - properties: - claims: - type: string - forwardHeaders: - additionalProperties: - type: string - type: object - jwksFile: - type: string - jwksUrl: - type: string - publicKey: - type: string - signingSecret: - type: string - signingSecretBase64Encoded: - type: boolean - stripAuthorizationHeader: - type: boolean - tokenQueryKey: - type: string - type: object - oAuthIntro: - description: AccessControlOAuthIntro configures an OAuth 2.0 Token - Introspection access control policy. - properties: - claims: - type: string - clientConfig: - description: AccessControlOAuthIntroClientConfig configures the - OAuth 2.0 client for issuing token introspection requests. - properties: - headers: - additionalProperties: - type: string - description: Headers to set when sending requests to the Authorization - Server. - type: object - maxRetries: - default: 3 - description: MaxRetries defines the number of retries for - introspection requests. - type: integer - timeoutSeconds: - default: 5 - description: TimeoutSeconds configures the maximum amount - of seconds to wait before giving up on requests. - type: integer - tls: - description: TLS configures TLS communication with the Authorization - Server. - properties: - ca: - description: CA sets the CA bundle used to sign the Authorization - Server certificate. - type: string - insecureSkipVerify: - description: |- - InsecureSkipVerify skips the Authorization Server certificate validation. - For testing purposes only, do not use in production. - type: boolean - type: object - tokenTypeHint: - description: |- - TokenTypeHint is a hint to pass to the Authorization Server. - See https://tools.ietf.org/html/rfc7662#section-2.1 for more information. - type: string - url: - description: URL of the Authorization Server. - type: string - required: - - url - type: object - forwardHeaders: - additionalProperties: - type: string - type: object - tokenSource: - description: |- - TokenSource describes how to extract tokens from HTTP requests. - If multiple sources are set, the order is the following: header > query > cookie. - properties: - cookie: - description: Cookie is the name of a cookie. - type: string - header: - description: Header is the name of a header. - type: string - headerAuthScheme: - description: |- - HeaderAuthScheme sets an optional auth scheme when Header is set to "Authorization". - If set, this scheme is removed from the token, and all requests not including it are dropped. - type: string - query: - description: Query is the name of a query parameter. - type: string - type: object - required: - - clientConfig - - tokenSource - type: object - oidc: - description: AccessControlPolicyOIDC holds the OIDC authentication - configuration. - properties: - authParams: - additionalProperties: - type: string - type: object - claims: - type: string - clientId: - type: string - disableAuthRedirectionPaths: - items: - type: string - type: array - forwardHeaders: - additionalProperties: - type: string - type: object - issuer: - type: string - logoutUrl: - type: string - redirectUrl: - type: string - scopes: - items: - type: string - type: array - secret: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - session: - description: Session holds session configuration. - properties: - domain: - type: string - path: - type: string - refresh: - type: boolean - sameSite: - type: string - secure: - type: boolean - type: object - stateCookie: - description: StateCookie holds state cookie configuration. - properties: - domain: - type: string - path: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - oidcGoogle: - description: AccessControlPolicyOIDCGoogle holds the Google OIDC authentication - configuration. - properties: - authParams: - additionalProperties: - type: string - type: object - clientId: - type: string - emails: - description: Emails are the allowed emails to connect. - items: - type: string - minItems: 1 - type: array - forwardHeaders: - additionalProperties: - type: string - type: object - logoutUrl: - type: string - redirectUrl: - type: string - secret: - description: |- - SecretReference represents a Secret Reference. It has enough information to retrieve secret - in any namespace - properties: - name: - description: name is unique within a namespace to reference - a secret resource. - type: string - namespace: - description: namespace defines the space within which the - secret name must be unique. - type: string - type: object - x-kubernetes-map-type: atomic - session: - description: Session holds session configuration. - properties: - domain: - type: string - path: - type: string - refresh: - type: boolean - sameSite: - type: string - secure: - type: boolean - type: object - stateCookie: - description: StateCookie holds state cookie configuration. - properties: - domain: - type: string - path: - type: string - sameSite: - type: string - secure: - type: boolean - type: object - type: object - type: object - status: - description: The current status of this access control policy. - properties: - specHash: - type: string - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiaccesses.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiaccesses.yaml deleted file mode 100644 index ee8ecaf4e0f..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiaccesses.yaml +++ /dev/null @@ -1,188 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: apiaccesses.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: APIAccess - listKind: APIAccessList - plural: apiaccesses - singular: apiaccess - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: APIAccess defines who can access to a set of APIs. - 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: The desired behavior of this APIAccess. - properties: - apiBundles: - description: |- - APIBundles defines a set of APIBundle that will be accessible to the configured audience. - Multiple APIAccesses can select the same APIBundles. - items: - description: APIBundleReference references an APIBundle. - properties: - name: - description: Name of the APIBundle. - maxLength: 253 - type: string - required: - - name - type: object - maxItems: 100 - type: array - x-kubernetes-validations: - - message: duplicated apiBundles - rule: self.all(x, self.exists_one(y, x.name == y.name)) - apiPlan: - description: APIPlan defines which APIPlan will be used. - properties: - name: - description: Name of the APIPlan. - maxLength: 253 - type: string - required: - - name - type: object - apiSelector: - description: |- - APISelector selects the APIs that will be accessible to the configured audience. - Multiple APIAccesses can select the same set of APIs. - This field is optional and follows standard label selector semantics. - An empty APISelector matches any API. - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector applies - to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - apis: - description: |- - APIs defines a set of APIs that will be accessible to the configured audience. - Multiple APIAccesses can select the same APIs. - When combined with APISelector, this set of APIs is appended to the matching APIs. - items: - description: APIReference references an API. - properties: - name: - description: Name of the API. - maxLength: 253 - type: string - required: - - name - type: object - maxItems: 100 - type: array - x-kubernetes-validations: - - message: duplicated apis - rule: self.all(x, self.exists_one(y, x.name == y.name)) - everyone: - description: Everyone indicates that all users will have access to - the selected APIs. - type: boolean - groups: - description: Groups are the consumer groups that will gain access - to the selected APIs. - items: - type: string - type: array - operationFilter: - description: |- - OperationFilter specifies the allowed operations on APIs and APIVersions. - If not set, all operations are available. - An empty OperationFilter prohibits all operations. - properties: - include: - description: Include defines the names of OperationSets that will - be accessible. - items: - type: string - maxItems: 100 - type: array - type: object - weight: - description: Weight specifies the evaluation order of the plan. - type: integer - x-kubernetes-validations: - - message: must be a positive number - rule: self >= 0 - type: object - x-kubernetes-validations: - - message: groups and everyone are mutually exclusive - rule: '(has(self.everyone) && has(self.groups)) ? !(self.everyone && - self.groups.size() > 0) : true' - status: - description: The current status of this APIAccess. - properties: - hash: - description: Hash is a hash representing the APIAccess. - type: string - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apibundles.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apibundles.yaml deleted file mode 100644 index a45a0b137bd..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apibundles.yaml +++ /dev/null @@ -1,125 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: apibundles.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: APIBundle - listKind: APIBundleList - plural: apibundles - singular: apibundle - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: APIBundle defines a set of APIs. - 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: The desired behavior of this APIBundle. - properties: - apiSelector: - description: |- - APISelector selects the APIs that will be accessible to the configured audience. - Multiple APIBundles can select the same set of APIs. - This field is optional and follows standard label selector semantics. - An empty APISelector matches any API. - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector applies - to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - apis: - description: |- - APIs defines a set of APIs that will be accessible to the configured audience. - Multiple APIBundles can select the same APIs. - When combined with APISelector, this set of APIs is appended to the matching APIs. - items: - description: APIReference references an API. - properties: - name: - description: Name of the API. - maxLength: 253 - type: string - required: - - name - type: object - maxItems: 100 - type: array - x-kubernetes-validations: - - message: duplicated apis - rule: self.all(x, self.exists_one(y, x.name == y.name)) - type: object - status: - description: The current status of this APIBundle. - properties: - hash: - description: Hash is a hash representing the APIBundle. - type: string - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiplans.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiplans.yaml deleted file mode 100644 index 92e1b9b5c75..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiplans.yaml +++ /dev/null @@ -1,103 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: apiplans.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: APIPlan - listKind: APIPlanList - plural: apiplans - singular: apiplan - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: APIPlan defines API Plan policy. - 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: The desired behavior of this APIPlan. - properties: - description: - description: Description describes the plan. - type: string - quota: - description: Quota defines the quota policy. - properties: - limit: - description: Limit is the maximum number of token in the bucket. - type: integer - x-kubernetes-validations: - - message: must be a positive number - rule: self >= 0 - period: - description: Period is the unit of time for the Limit. - format: duration - type: string - x-kubernetes-validations: - - message: must be between 1s and 9999h - rule: self >= duration('1s') && self <= duration('9999h') - required: - - limit - type: object - rateLimit: - description: RateLimit defines the rate limit policy. - properties: - limit: - description: Limit is the maximum number of token in the bucket. - type: integer - x-kubernetes-validations: - - message: must be a positive number - rule: self >= 0 - period: - description: Period is the unit of time for the Limit. - format: duration - type: string - x-kubernetes-validations: - - message: must be between 1s and 1h - rule: self >= duration('1s') && self <= duration('1h') - required: - - limit - type: object - title: - description: Title is the human-readable name of the plan. - type: string - required: - - title - type: object - status: - description: The current status of this APIPlan. - properties: - hash: - description: Hash is a hash representing the APIPlan. - type: string - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiportals.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiportals.yaml deleted file mode 100644 index bc04170169c..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiportals.yaml +++ /dev/null @@ -1,139 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: apiportals.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: APIPortal - listKind: APIPortalList - plural: apiportals - singular: apiportal - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: APIPortal defines a developer portal for accessing the documentation - of APIs. - 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: The desired behavior of this APIPortal. - properties: - description: - description: Description of the APIPortal. - type: string - title: - description: Title is the public facing name of the APIPortal. - type: string - trustedUrls: - description: TrustedURLs are the urls that are trusted by the OAuth - 2.0 authorization server. - items: - type: string - maxItems: 1 - minItems: 1 - type: array - x-kubernetes-validations: - - message: must be a valid URLs - rule: self.all(x, isURL(x)) - ui: - description: UI holds the UI customization options. - properties: - logoUrl: - description: LogoURL is the public URL of the logo. - type: string - type: object - required: - - trustedUrls - type: object - status: - description: The current status of this APIPortal. - properties: - hash: - description: Hash is a hash representing the APIPortal. - type: string - oidc: - description: OIDC is the OIDC configuration for accessing the exposed - APIPortal WebUI. - properties: - clientId: - description: ClientID is the OIDC ClientID for accessing the exposed - APIPortal WebUI. - type: string - companyClaim: - description: CompanyClaim is the name of the JWT claim containing - the user company. - type: string - emailClaim: - description: EmailClaim is the name of the JWT claim containing - the user email. - type: string - firstnameClaim: - description: FirstnameClaim is the name of the JWT claim containing - the user firstname. - type: string - generic: - description: Generic indicates whether or not the APIPortal authentication - relies on Generic OIDC. - type: boolean - groupsClaim: - description: GroupsClaim is the name of the JWT claim containing - the user groups. - type: string - issuer: - description: Issuer is the OIDC issuer for accessing the exposed - APIPortal WebUI. - type: string - lastnameClaim: - description: LastnameClaim is the name of the JWT claim containing - the user lastname. - type: string - scopes: - description: Scopes is the OIDC scopes for getting user attributes - during the authentication to the exposed APIPortal WebUI. - type: string - secretName: - description: SecretName is the name of the secret containing the - OIDC ClientSecret for accessing the exposed APIPortal WebUI. - type: string - syncedAttributes: - description: SyncedAttributes configure the user attributes to - sync. - items: - type: string - type: array - userIdClaim: - description: UserIDClaim is the name of the JWT claim containing - the user ID. - type: string - type: object - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiratelimits.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiratelimits.yaml deleted file mode 100644 index 8e328d3c546..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiratelimits.yaml +++ /dev/null @@ -1,166 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: apiratelimits.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: APIRateLimit - listKind: APIRateLimitList - plural: apiratelimits - singular: apiratelimit - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: APIRateLimit defines how group of consumers are rate limited - on a set of APIs. - 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: The desired behavior of this APIRateLimit. - properties: - apiSelector: - description: |- - APISelector selects the APIs that will be rate limited. - Multiple APIRateLimits can select the same set of APIs. - This field is optional and follows standard label selector semantics. - An empty APISelector matches any API. - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. - items: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector applies - to. - type: string - operator: - description: |- - operator represents a key's relationship to a set of values. - Valid operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - type: object - type: object - x-kubernetes-map-type: atomic - apis: - description: |- - APIs defines a set of APIs that will be rate limited. - Multiple APIRateLimits can select the same APIs. - When combined with APISelector, this set of APIs is appended to the matching APIs. - items: - description: APIReference references an API. - properties: - name: - description: Name of the API. - maxLength: 253 - type: string - required: - - name - type: object - maxItems: 100 - type: array - x-kubernetes-validations: - - message: duplicated apis - rule: self.all(x, self.exists_one(y, x.name == y.name)) - everyone: - description: |- - Everyone indicates that all users will, by default, be rate limited with this configuration. - If an APIRateLimit explicitly target a group, the default rate limit will be ignored. - type: boolean - groups: - description: |- - Groups are the consumer groups that will be rate limited. - Multiple APIRateLimits can target the same set of consumer groups, the most restrictive one applies. - When a consumer belongs to multiple groups, the least restrictive APIRateLimit applies. - items: - type: string - type: array - limit: - description: Limit is the maximum number of token in the bucket. - type: integer - x-kubernetes-validations: - - message: must be a positive number - rule: self >= 0 - period: - description: Period is the unit of time for the Limit. - format: duration - type: string - x-kubernetes-validations: - - message: must be between 1s and 1h - rule: self >= duration('1s') && self <= duration('1h') - strategy: - description: |- - Strategy defines how the bucket state will be synchronized between the different Traefik Hub instances. - It can be, either "local" or "distributed". - enum: - - local - - distributed - type: string - required: - - limit - type: object - x-kubernetes-validations: - - message: groups and everyone are mutually exclusive - rule: '(has(self.everyone) && has(self.groups)) ? !(self.everyone && - self.groups.size() > 0) : true' - status: - description: The current status of this APIRateLimit. - properties: - hash: - description: Hash is a hash representing the APIRateLimit. - type: string - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apis.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apis.yaml deleted file mode 100644 index a7b9e5e600f..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apis.yaml +++ /dev/null @@ -1,190 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: apis.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: API - listKind: APIList - plural: apis - singular: api - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - API defines an HTTP interface that is exposed to external clients. It specifies the supported versions - and provides instructions for accessing its documentation. Once instantiated, an API object is associated - with an Ingress, IngressRoute, or HTTPRoute resource, enabling the exposure of the described API to the outside world. - 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: APISpec describes the API. - properties: - openApiSpec: - description: OpenAPISpec defines the API contract as an OpenAPI specification. - properties: - operationSets: - description: OperationSets defines the sets of operations to be - referenced for granular filtering in APIAccesses. - items: - description: |- - OperationSet gives a name to a set of matching OpenAPI operations. - This set of operations can then be referenced for granular filtering in APIAccesses. - properties: - matchers: - description: Matchers defines a list of alternative rules - for matching OpenAPI operations. - items: - description: OperationMatcher defines criteria for matching - an OpenAPI operation. - minProperties: 1 - properties: - methods: - description: Methods specifies the HTTP methods to - be included for selection. - items: - type: string - maxItems: 10 - type: array - path: - description: Path specifies the exact path of the - operations to select. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: must start with a '/' - rule: self.startsWith('/') - - message: cannot contains '../' - rule: '!self.matches(r"""(\/\.\.\/)|(\/\.\.$)""")' - pathPrefix: - description: PathPrefix specifies the path prefix - of the operations to select. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: must start with a '/' - rule: self.startsWith('/') - - message: cannot contains '../' - rule: '!self.matches(r"""(\/\.\.\/)|(\/\.\.$)""")' - pathRegex: - description: PathRegex specifies a regular expression - pattern for matching operations based on their paths. - type: string - type: object - x-kubernetes-validations: - - message: path, pathPrefix and pathRegex are mutually - exclusive - rule: '[has(self.path), has(self.pathPrefix), has(self.pathRegex)].filter(x, - x).size() <= 1' - maxItems: 100 - minItems: 1 - type: array - name: - description: Name is the name of the OperationSet to reference - in APIAccesses. - maxLength: 253 - type: string - required: - - matchers - - name - type: object - maxItems: 100 - type: array - override: - description: Override holds data used to override OpenAPI specification. - properties: - servers: - items: - properties: - url: - type: string - x-kubernetes-validations: - - message: must be a valid URL - rule: isURL(self) - required: - - url - type: object - maxItems: 100 - minItems: 1 - type: array - required: - - servers - type: object - path: - description: |- - Path specifies the endpoint path within the Kubernetes Service where the OpenAPI specification can be obtained. - The Service queried is determined by the associated Ingress, IngressRoute, or HTTPRoute resource to which the API is attached. - It's important to note that this option is incompatible if the Ingress or IngressRoute specifies multiple backend services. - The Path must be accessible via a GET request method and should serve a YAML or JSON document containing the OpenAPI specification. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: must start with a '/' - rule: self.startsWith('/') - - message: cannot contains '../' - rule: '!self.matches(r"""(\/\.\.\/)|(\/\.\.$)""")' - url: - description: |- - URL is a Traefik Hub agent accessible URL for obtaining the OpenAPI specification. - The URL must be accessible via a GET request method and should serve a YAML or JSON document containing the OpenAPI specification. - type: string - x-kubernetes-validations: - - message: must be a valid URL - rule: isURL(self) - type: object - x-kubernetes-validations: - - message: path or url must be defined - rule: has(self.path) || has(self.url) - versions: - description: Versions are the different APIVersions available. - items: - description: APIVersionRef references an APIVersion. - properties: - name: - description: Name of the APIVersion. - maxLength: 253 - type: string - required: - - name - type: object - maxItems: 100 - minItems: 1 - type: array - type: object - status: - description: The current status of this API. - properties: - hash: - description: Hash is a hash representing the API. - type: string - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiversions.yaml b/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiversions.yaml deleted file mode 100644 index 97184effeee..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/hub.traefik.io_apiversions.yaml +++ /dev/null @@ -1,194 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.14.0 - name: apiversions.hub.traefik.io -spec: - group: hub.traefik.io - names: - kind: APIVersion - listKind: APIVersionList - plural: apiversions - singular: apiversion - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.title - name: Title - type: string - - jsonPath: .spec.release - name: Release - type: string - name: v1alpha1 - schema: - openAPIV3Schema: - description: APIVersion defines a version of an API. - 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: The desired behavior of this APIVersion. - properties: - openApiSpec: - description: OpenAPISpec defines the API contract as an OpenAPI specification. - properties: - operationSets: - description: OperationSets defines the sets of operations to be - referenced for granular filtering in APIAccesses. - items: - description: |- - OperationSet gives a name to a set of matching OpenAPI operations. - This set of operations can then be referenced for granular filtering in APIAccesses. - properties: - matchers: - description: Matchers defines a list of alternative rules - for matching OpenAPI operations. - items: - description: OperationMatcher defines criteria for matching - an OpenAPI operation. - minProperties: 1 - properties: - methods: - description: Methods specifies the HTTP methods to - be included for selection. - items: - type: string - maxItems: 10 - type: array - path: - description: Path specifies the exact path of the - operations to select. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: must start with a '/' - rule: self.startsWith('/') - - message: cannot contains '../' - rule: '!self.matches(r"""(\/\.\.\/)|(\/\.\.$)""")' - pathPrefix: - description: PathPrefix specifies the path prefix - of the operations to select. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: must start with a '/' - rule: self.startsWith('/') - - message: cannot contains '../' - rule: '!self.matches(r"""(\/\.\.\/)|(\/\.\.$)""")' - pathRegex: - description: PathRegex specifies a regular expression - pattern for matching operations based on their paths. - type: string - type: object - x-kubernetes-validations: - - message: path, pathPrefix and pathRegex are mutually - exclusive - rule: '[has(self.path), has(self.pathPrefix), has(self.pathRegex)].filter(x, - x).size() <= 1' - maxItems: 100 - minItems: 1 - type: array - name: - description: Name is the name of the OperationSet to reference - in APIAccesses. - maxLength: 253 - type: string - required: - - matchers - - name - type: object - maxItems: 100 - type: array - override: - description: Override holds data used to override OpenAPI specification. - properties: - servers: - items: - properties: - url: - type: string - x-kubernetes-validations: - - message: must be a valid URL - rule: isURL(self) - required: - - url - type: object - maxItems: 100 - minItems: 1 - type: array - required: - - servers - type: object - path: - description: |- - Path specifies the endpoint path within the Kubernetes Service where the OpenAPI specification can be obtained. - The Service queried is determined by the associated Ingress, IngressRoute, or HTTPRoute resource to which the API is attached. - It's important to note that this option is incompatible if the Ingress or IngressRoute specifies multiple backend services. - The Path must be accessible via a GET request method and should serve a YAML or JSON document containing the OpenAPI specification. - maxLength: 255 - type: string - x-kubernetes-validations: - - message: must start with a '/' - rule: self.startsWith('/') - - message: cannot contains '../' - rule: '!self.matches(r"""(\/\.\.\/)|(\/\.\.$)""")' - url: - description: |- - URL is a Traefik Hub agent accessible URL for obtaining the OpenAPI specification. - The URL must be accessible via a GET request method and should serve a YAML or JSON document containing the OpenAPI specification. - type: string - x-kubernetes-validations: - - message: must be a valid URL - rule: isURL(self) - type: object - x-kubernetes-validations: - - message: path or url must be defined - rule: has(self.path) || has(self.url) - release: - description: |- - Release is the version number of the API. - This value must follow the SemVer format: https://semver.org/ - maxLength: 100 - type: string - x-kubernetes-validations: - - message: must be a valid semver version - rule: self.matches(r"""^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$""") - title: - description: Title is the public facing name of the APIVersion. - type: string - required: - - release - type: object - status: - description: The current status of this APIVersion. - properties: - hash: - description: Hash is a hash representing the APIVersion. - type: string - syncedAt: - format: date-time - type: string - version: - type: string - type: object - type: object - served: true - storage: true - subresources: {} diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutes.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutes.yaml deleted file mode 100644 index 6ce60d68e4b..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutes.yaml +++ /dev/null @@ -1,366 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: ingressroutes.traefik.io -spec: - group: traefik.io - names: - kind: IngressRoute - listKind: IngressRouteList - plural: ingressroutes - singular: ingressroute - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRoute is the CRD implementation of a Traefik HTTP Router. - 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 defines the desired state of IngressRoute. - properties: - entryPoints: - description: |- - EntryPoints defines the list of entry point names to bind to. - Entry points have to be configured in the static configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/entrypoints/ - Default: all. - items: - type: string - type: array - routes: - description: Routes defines the list of routes. - items: - description: Route holds the HTTP route configuration. - properties: - kind: - description: |- - Kind defines the kind of the route. - Rule is the only supported kind. - enum: - - Rule - type: string - match: - description: |- - Match defines the router's rule. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rule - type: string - middlewares: - description: |- - Middlewares defines the list of references to Middleware resources. - More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-middleware - items: - description: MiddlewareRef is a reference to a Middleware - resource. - properties: - name: - description: Name defines the name of the referenced Middleware - resource. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Middleware resource. - type: string - required: - - name - type: object - type: array - priority: - description: |- - Priority defines the router's priority. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#priority - type: integer - services: - description: |- - Services defines the list of Service. - It can contain any combination of TraefikService and/or reference to a Kubernetes Service. - items: - description: Service defines an upstream HTTP service to proxy - traffic to. - properties: - healthCheck: - description: Healthcheck defines health checks for ExternalName - services. - properties: - followRedirects: - description: |- - FollowRedirects defines whether redirects should be followed during the health check calls. - Default: true - type: boolean - headers: - additionalProperties: - type: string - description: Headers defines custom headers to be - sent to the health check endpoint. - type: object - hostname: - description: Hostname defines the value of hostname - in the Host header of the health check request. - type: string - interval: - anyOf: - - type: integer - - type: string - description: |- - Interval defines the frequency of the health check calls. - Default: 30s - x-kubernetes-int-or-string: true - method: - description: Method defines the healthcheck method. - type: string - mode: - description: |- - Mode defines the health check mode. - If defined to grpc, will use the gRPC health check protocol to probe the server. - Default: http - type: string - path: - description: Path defines the server URL path for - the health check endpoint. - type: string - port: - description: Port defines the server URL port for - the health check endpoint. - type: integer - scheme: - description: Scheme replaces the server URL scheme - for the health check endpoint. - type: string - status: - description: Status defines the expected HTTP status - code of the response to the health check request. - type: integer - timeout: - anyOf: - - type: integer - - type: string - description: |- - Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy. - Default: 5s - x-kubernetes-int-or-string: true - type: object - kind: - description: Kind defines the kind of the Service. - enum: - - Service - - TraefikService - type: string - name: - description: |- - Name defines the name of the referenced Kubernetes Service or TraefikService. - The differentiation between the two is specified in the Kind field. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Kubernetes Service or TraefikService. - type: string - nativeLB: - description: |- - NativeLB controls, when creating the load-balancer, - whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. - The Kubernetes Service itself does load-balance to the pods. - By default, NativeLB is false. - type: boolean - nodePortLB: - description: |- - NodePortLB controls, when creating the load-balancer, - whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. - It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes. - By default, NodePortLB is false. - type: boolean - passHostHeader: - description: |- - PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. - By default, passHostHeader is true. - type: boolean - port: - anyOf: - - type: integer - - type: string - description: |- - Port defines the port of a Kubernetes Service. - This can be a reference to a named port. - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding defines how Traefik forwards - the response from the upstream Kubernetes Service to - the client. - properties: - flushInterval: - description: |- - FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. - A negative value means to flush immediately after each write to the client. - This configuration is ignored when ReverseProxy recognizes a response as a streaming response; - for such responses, writes are flushed to the client immediately. - Default: 100ms - type: string - type: object - scheme: - description: |- - Scheme defines the scheme to use for the request to the upstream Kubernetes Service. - It defaults to https when Kubernetes Service port is 443, http otherwise. - type: string - serversTransport: - description: |- - ServersTransport defines the name of ServersTransport resource to use. - It allows to configure the transport between Traefik and your servers. - Can only be used on a Kubernetes Service. - type: string - sticky: - description: |- - Sticky defines the sticky sessions configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions - properties: - cookie: - description: Cookie defines the sticky cookie configuration. - properties: - httpOnly: - description: HTTPOnly defines whether the cookie - can be accessed by client-side APIs, such as - JavaScript. - type: boolean - maxAge: - description: |- - MaxAge indicates the number of seconds until the cookie expires. - When set to a negative number, the cookie expires immediately. - When set to zero, the cookie never expires. - type: integer - name: - description: Name defines the Cookie name. - type: string - sameSite: - description: |- - SameSite defines the same site policy. - More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - type: string - secure: - description: Secure defines whether the cookie - can only be transmitted over an encrypted connection - (i.e. HTTPS). - type: boolean - type: object - type: object - strategy: - description: |- - Strategy defines the load balancing strategy between the servers. - RoundRobin is the only supported value at the moment. - type: string - weight: - description: |- - Weight defines the weight and 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 - syntax: - description: |- - Syntax defines the router's rule syntax. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rulesyntax - type: string - required: - - kind - - match - type: object - type: array - tls: - description: |- - TLS defines the TLS configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#tls - properties: - certResolver: - description: |- - CertResolver defines the name of the certificate resolver to use. - Cert resolvers have to be configured in the static configuration. - More info: https://doc.traefik.io/traefik/v3.1/https/acme/#certificate-resolvers - type: string - domains: - description: |- - Domains defines the list of domains that will be used to issue certificates. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#domains - items: - description: Domain holds a domain name with SANs. - properties: - main: - description: Main defines the main domain name. - type: string - sans: - description: SANs defines the subject alternative domain - names. - items: - type: string - type: array - type: object - type: array - options: - description: |- - Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. - If not defined, the `default` TLSOption is used. - More info: https://doc.traefik.io/traefik/v3.1/https/tls/#tls-options - properties: - name: - description: |- - Name defines the name of the referenced TLSOption. - More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsoption - type: string - namespace: - description: |- - Namespace defines the namespace of the referenced TLSOption. - More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsoption - 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 defines the reference to the TLSStore, that will be used to store certificates. - Please note that only `default` TLSStore can be used. - properties: - name: - description: |- - Name defines the name of the referenced TLSStore. - More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsstore - type: string - namespace: - description: |- - Namespace defines the namespace of the referenced TLSStore. - More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-tlsstore - type: string - required: - - name - type: object - type: object - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutetcps.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutetcps.yaml deleted file mode 100644 index 9db38f869c3..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressroutetcps.yaml +++ /dev/null @@ -1,247 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: ingressroutetcps.traefik.io -spec: - group: traefik.io - names: - kind: IngressRouteTCP - listKind: IngressRouteTCPList - plural: ingressroutetcps - singular: ingressroutetcp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRouteTCP is the CRD implementation of a Traefik TCP Router. - 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 defines the desired state of IngressRouteTCP. - properties: - entryPoints: - description: |- - EntryPoints defines the list of entry point names to bind to. - Entry points have to be configured in the static configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/entrypoints/ - Default: all. - items: - type: string - type: array - routes: - description: Routes defines the list of routes. - items: - description: RouteTCP holds the TCP route configuration. - properties: - match: - description: |- - Match defines the router's rule. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rule_1 - type: string - middlewares: - description: Middlewares defines the list of references to MiddlewareTCP - resources. - items: - description: ObjectReference is a generic reference to a Traefik - resource. - properties: - name: - description: Name defines the name of the referenced Traefik - resource. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Traefik resource. - type: string - required: - - name - type: object - type: array - priority: - description: |- - Priority defines the router's priority. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#priority_1 - type: integer - services: - description: Services defines the list of TCP services. - items: - description: ServiceTCP defines an upstream TCP service to - proxy traffic to. - properties: - name: - description: Name defines the name of the referenced Kubernetes - Service. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Kubernetes Service. - type: string - nativeLB: - description: |- - NativeLB controls, when creating the load-balancer, - whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. - The Kubernetes Service itself does load-balance to the pods. - By default, NativeLB is false. - type: boolean - nodePortLB: - description: |- - NodePortLB controls, when creating the load-balancer, - whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. - It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes. - By default, NodePortLB is false. - type: boolean - port: - anyOf: - - type: integer - - type: string - description: |- - Port defines the port of a Kubernetes Service. - This can be a reference to a named port. - x-kubernetes-int-or-string: true - proxyProtocol: - description: |- - ProxyProtocol defines the PROXY protocol configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#proxy-protocol - properties: - version: - description: Version defines the PROXY Protocol version - to use. - type: integer - type: object - serversTransport: - description: |- - ServersTransport defines the name of ServersTransportTCP resource to use. - It allows to configure the transport between Traefik and your servers. - Can only be used on a Kubernetes Service. - type: string - terminationDelay: - description: |- - TerminationDelay defines the deadline that the proxy sets, after one of its connected peers indicates - it has closed the writing capability of its connection, to close the reading capability as well, - hence fully terminating the connection. - It is a duration in milliseconds, defaulting to 100. - A negative value means an infinite deadline (i.e. the reading capability is never closed). - Deprecated: TerminationDelay will not be supported in future APIVersions, please use ServersTransport to configure the TerminationDelay instead. - type: integer - tls: - description: TLS determines whether to use TLS when dialing - with the backend. - type: boolean - weight: - description: Weight defines the weight used when balancing - requests between multiple Kubernetes Service. - type: integer - required: - - name - - port - type: object - type: array - syntax: - description: |- - Syntax defines the router's rule syntax. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#rulesyntax_1 - type: string - required: - - match - type: object - type: array - tls: - description: |- - TLS defines the TLS configuration on a layer 4 / TCP Route. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#tls_1 - properties: - certResolver: - description: |- - CertResolver defines the name of the certificate resolver to use. - Cert resolvers have to be configured in the static configuration. - More info: https://doc.traefik.io/traefik/v3.1/https/acme/#certificate-resolvers - type: string - domains: - description: |- - Domains defines the list of domains that will be used to issue certificates. - More info: https://doc.traefik.io/traefik/v3.1/routing/routers/#domains - items: - description: Domain holds a domain name with SANs. - properties: - main: - description: Main defines the main domain name. - type: string - sans: - description: SANs defines the subject alternative domain - names. - items: - type: string - type: array - type: object - type: array - options: - description: |- - Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. - If not defined, the `default` TLSOption is used. - More info: https://doc.traefik.io/traefik/v3.1/https/tls/#tls-options - properties: - name: - description: Name defines the name of the referenced Traefik - resource. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Traefik resource. - type: string - required: - - name - type: object - passthrough: - description: Passthrough defines whether a TLS router will terminate - the TLS connection. - type: boolean - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - store: - description: |- - Store defines the reference to the TLSStore, that will be used to store certificates. - Please note that only `default` TLSStore can be used. - properties: - name: - description: Name defines the name of the referenced Traefik - resource. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Traefik resource. - type: string - required: - - name - type: object - type: object - required: - - routes - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressrouteudps.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressrouteudps.yaml deleted file mode 100644 index 9b04a835511..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_ingressrouteudps.yaml +++ /dev/null @@ -1,111 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: ingressrouteudps.traefik.io -spec: - group: traefik.io - names: - kind: IngressRouteUDP - listKind: IngressRouteUDPList - plural: ingressrouteudps - singular: ingressrouteudp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: IngressRouteUDP is a CRD implementation of a Traefik UDP Router. - 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 defines the desired state of a IngressRouteUDP. - properties: - entryPoints: - description: |- - EntryPoints defines the list of entry point names to bind to. - Entry points have to be configured in the static configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/entrypoints/ - Default: all. - items: - type: string - type: array - routes: - description: Routes defines the list of routes. - items: - description: RouteUDP holds the UDP route configuration. - properties: - services: - description: Services defines the list of UDP services. - items: - description: ServiceUDP defines an upstream UDP service to - proxy traffic to. - properties: - name: - description: Name defines the name of the referenced Kubernetes - Service. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Kubernetes Service. - type: string - nativeLB: - description: |- - NativeLB controls, when creating the load-balancer, - whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. - The Kubernetes Service itself does load-balance to the pods. - By default, NativeLB is false. - type: boolean - nodePortLB: - description: |- - NodePortLB controls, when creating the load-balancer, - whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. - It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes. - By default, NodePortLB is false. - type: boolean - port: - anyOf: - - type: integer - - type: string - description: |- - Port defines the port of a Kubernetes Service. - This can be a reference to a named port. - x-kubernetes-int-or-string: true - weight: - description: Weight defines the weight used when balancing - requests between multiple Kubernetes Service. - 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 diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewares.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewares.yaml deleted file mode 100644 index 7bc7f0546e6..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewares.yaml +++ /dev/null @@ -1,1098 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: middlewares.traefik.io -spec: - group: traefik.io - names: - kind: Middleware - listKind: MiddlewareList - plural: middlewares - singular: middleware - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - Middleware is the CRD implementation of a Traefik Middleware. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/overview/ - 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 defines the desired state of a Middleware. - properties: - addPrefix: - description: |- - AddPrefix holds the add prefix middleware configuration. - This middleware updates the path of a request before forwarding it. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/addprefix/ - properties: - prefix: - description: |- - Prefix is the string to add before the current path in the requested URL. - It should include a leading slash (/). - type: string - type: object - basicAuth: - description: |- - BasicAuth holds the basic auth middleware configuration. - This middleware restricts access to your services to known users. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/basicauth/ - properties: - headerField: - description: |- - HeaderField defines a header field to store the authenticated user. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/basicauth/#headerfield - type: string - realm: - description: |- - Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. - Default: traefik. - type: string - removeHeader: - description: |- - RemoveHeader sets the removeHeader option to true to remove the authorization header before forwarding the request to your service. - Default: false. - type: boolean - secret: - description: Secret is the name of the referenced Kubernetes Secret - containing user credentials. - type: string - type: object - buffering: - description: |- - Buffering holds the buffering middleware configuration. - This middleware retries or limits the size of requests that can be forwarded to backends. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/buffering/#maxrequestbodybytes - properties: - maxRequestBodyBytes: - description: |- - MaxRequestBodyBytes defines the maximum allowed body size for the request (in bytes). - If the request exceeds the allowed size, it is not forwarded to the service, and the client gets a 413 (Request Entity Too Large) response. - Default: 0 (no maximum). - format: int64 - type: integer - maxResponseBodyBytes: - description: |- - MaxResponseBodyBytes defines the maximum allowed response size from the service (in bytes). - If the response exceeds the allowed size, it is not forwarded to the client. The client gets a 500 (Internal Server Error) response instead. - Default: 0 (no maximum). - format: int64 - type: integer - memRequestBodyBytes: - description: |- - MemRequestBodyBytes defines the threshold (in bytes) from which the request will be buffered on disk instead of in memory. - Default: 1048576 (1Mi). - format: int64 - type: integer - memResponseBodyBytes: - description: |- - MemResponseBodyBytes defines the threshold (in bytes) from which the response will be buffered on disk instead of in memory. - Default: 1048576 (1Mi). - format: int64 - type: integer - retryExpression: - description: |- - RetryExpression defines the retry conditions. - It is a logical combination of functions with operators AND (&&) and OR (||). - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/buffering/#retryexpression - type: string - type: object - chain: - description: |- - Chain holds the configuration of the chain middleware. - This middleware enables to define reusable combinations of other pieces of middleware. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/chain/ - properties: - middlewares: - description: Middlewares is the list of MiddlewareRef which composes - the chain. - items: - description: MiddlewareRef is a reference to a Middleware resource. - properties: - name: - description: Name defines the name of the referenced Middleware - resource. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Middleware resource. - type: string - required: - - name - type: object - type: array - type: object - circuitBreaker: - description: CircuitBreaker holds the circuit breaker configuration. - properties: - checkPeriod: - anyOf: - - type: integer - - type: string - description: CheckPeriod is the interval between successive checks - of the circuit breaker condition (when in standby state). - x-kubernetes-int-or-string: true - expression: - description: Expression is the condition that triggers the tripped - state. - type: string - fallbackDuration: - anyOf: - - type: integer - - type: string - description: FallbackDuration is the duration for which the circuit - breaker will wait before trying to recover (from a tripped state). - x-kubernetes-int-or-string: true - recoveryDuration: - anyOf: - - type: integer - - type: string - description: RecoveryDuration is the duration for which the circuit - breaker will try to recover (as soon as it is in recovering - state). - x-kubernetes-int-or-string: true - responseCode: - description: ResponseCode is the status code that the circuit - breaker will return while it is in the open state. - type: integer - type: object - compress: - description: |- - Compress holds the compress middleware configuration. - This middleware compresses responses before sending them to the client, using gzip compression. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/compress/ - properties: - defaultEncoding: - description: DefaultEncoding specifies the default encoding if - the `Accept-Encoding` header is not in the request or contains - a wildcard (`*`). - type: string - excludedContentTypes: - description: |- - ExcludedContentTypes defines the list of content types to compare the Content-Type header of the incoming requests and responses before compressing. - `application/grpc` is always excluded. - items: - type: string - type: array - includedContentTypes: - description: IncludedContentTypes defines the list of content - types to compare the Content-Type header of the responses before - compressing. - items: - type: string - type: array - minResponseBodyBytes: - description: |- - MinResponseBodyBytes defines the minimum amount of bytes a response body must have to be compressed. - Default: 1024. - type: integer - type: object - contentType: - description: |- - ContentType holds the content-type middleware configuration. - This middleware exists to enable the correct behavior until at least the default one can be changed in a future version. - properties: - autoDetect: - description: |- - AutoDetect 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. - Deprecated: AutoDetect option is deprecated, Content-Type middleware is only meant to be used to enable the content-type detection, please remove any usage of this option. - type: boolean - type: object - digestAuth: - description: |- - DigestAuth holds the digest auth middleware configuration. - This middleware restricts access to your services to known users. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/digestauth/ - properties: - headerField: - description: |- - HeaderField defines a header field to store the authenticated user. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/basicauth/#headerfield - type: string - realm: - description: |- - Realm allows the protected resources on a server to be partitioned into a set of protection spaces, each with its own authentication scheme. - Default: traefik. - type: string - removeHeader: - description: RemoveHeader defines whether to remove the authorization - header before forwarding the request to the backend. - type: boolean - secret: - description: Secret is the name of the referenced Kubernetes Secret - containing user credentials. - type: string - type: object - errors: - description: |- - ErrorPage holds the custom error middleware configuration. - This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/errorpages/ - properties: - query: - description: |- - Query defines the URL for the error page (hosted by service). - The {status} variable can be used in order to insert the status code in the URL. - type: string - service: - description: |- - Service defines the reference to a Kubernetes Service that will serve the error page. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/errorpages/#service - properties: - healthCheck: - description: Healthcheck defines health checks for ExternalName - services. - properties: - followRedirects: - description: |- - FollowRedirects defines whether redirects should be followed during the health check calls. - Default: true - type: boolean - headers: - additionalProperties: - type: string - description: Headers defines custom headers to be sent - to the health check endpoint. - type: object - hostname: - description: Hostname defines the value of hostname in - the Host header of the health check request. - type: string - interval: - anyOf: - - type: integer - - type: string - description: |- - Interval defines the frequency of the health check calls. - Default: 30s - x-kubernetes-int-or-string: true - method: - description: Method defines the healthcheck method. - type: string - mode: - description: |- - Mode defines the health check mode. - If defined to grpc, will use the gRPC health check protocol to probe the server. - Default: http - type: string - path: - description: Path defines the server URL path for the - health check endpoint. - type: string - port: - description: Port defines the server URL port for the - health check endpoint. - type: integer - scheme: - description: Scheme replaces the server URL scheme for - the health check endpoint. - type: string - status: - description: Status defines the expected HTTP status code - of the response to the health check request. - type: integer - timeout: - anyOf: - - type: integer - - type: string - description: |- - Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy. - Default: 5s - x-kubernetes-int-or-string: true - type: object - kind: - description: Kind defines the kind of the Service. - enum: - - Service - - TraefikService - type: string - name: - description: |- - Name defines the name of the referenced Kubernetes Service or TraefikService. - The differentiation between the two is specified in the Kind field. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Kubernetes Service or TraefikService. - type: string - nativeLB: - description: |- - NativeLB controls, when creating the load-balancer, - whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. - The Kubernetes Service itself does load-balance to the pods. - By default, NativeLB is false. - type: boolean - nodePortLB: - description: |- - NodePortLB controls, when creating the load-balancer, - whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. - It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes. - By default, NodePortLB is false. - type: boolean - passHostHeader: - description: |- - PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. - By default, passHostHeader is true. - type: boolean - port: - anyOf: - - type: integer - - type: string - description: |- - Port defines the port of a Kubernetes Service. - This can be a reference to a named port. - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding defines how Traefik forwards - the response from the upstream Kubernetes Service to the - client. - properties: - flushInterval: - description: |- - FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. - A negative value means to flush immediately after each write to the client. - This configuration is ignored when ReverseProxy recognizes a response as a streaming response; - for such responses, writes are flushed to the client immediately. - Default: 100ms - type: string - type: object - scheme: - description: |- - Scheme defines the scheme to use for the request to the upstream Kubernetes Service. - It defaults to https when Kubernetes Service port is 443, http otherwise. - type: string - serversTransport: - description: |- - ServersTransport defines the name of ServersTransport resource to use. - It allows to configure the transport between Traefik and your servers. - Can only be used on a Kubernetes Service. - type: string - sticky: - description: |- - Sticky defines the sticky sessions configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions - properties: - cookie: - description: Cookie defines the sticky cookie configuration. - properties: - httpOnly: - description: HTTPOnly defines whether the cookie can - be accessed by client-side APIs, such as JavaScript. - type: boolean - maxAge: - description: |- - MaxAge indicates the number of seconds until the cookie expires. - When set to a negative number, the cookie expires immediately. - When set to zero, the cookie never expires. - type: integer - name: - description: Name defines the Cookie name. - type: string - sameSite: - description: |- - SameSite defines the same site policy. - More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - type: string - secure: - description: Secure defines whether the cookie can - only be transmitted over an encrypted connection - (i.e. HTTPS). - type: boolean - type: object - type: object - strategy: - description: |- - Strategy defines the load balancing strategy between the servers. - RoundRobin is the only supported value at the moment. - type: string - weight: - description: |- - Weight defines the weight and 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: - description: |- - Status defines which status or range of statuses should result in an error page. - It can be either a status code as a number (500), - as multiple comma-separated numbers (500,502), - as ranges by separating two codes with a dash (500-599), - or a combination of the two (404,418,500-599). - items: - type: string - type: array - type: object - forwardAuth: - description: |- - ForwardAuth holds the forward auth middleware configuration. - This middleware delegates the request authentication to a Service. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/forwardauth/ - properties: - addAuthCookiesToResponse: - description: AddAuthCookiesToResponse defines the list of cookies - to copy from the authentication server response to the response. - items: - type: string - type: array - address: - description: Address defines the authentication server address. - type: string - authRequestHeaders: - description: |- - AuthRequestHeaders defines the list of the headers to copy from the request to the authentication server. - If not set or empty then all request headers are passed. - items: - type: string - type: array - authResponseHeaders: - description: AuthResponseHeaders defines the list of headers to - copy from the authentication server response and set on forwarded - request, replacing any existing conflicting headers. - items: - type: string - type: array - authResponseHeadersRegex: - description: |- - AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/forwardauth/#authresponseheadersregex - type: string - tls: - description: TLS defines the configuration used to secure the - connection to the authentication server. - properties: - caOptional: - description: 'Deprecated: TLS client authentication is a server - side option (see https://github.com/golang/go/blob/740a490f71d026bb7d2d13cb8fa2d6d6e0572b70/src/crypto/tls/common.go#L634).' - type: boolean - caSecret: - description: |- - CASecret is the name of the referenced Kubernetes Secret containing the CA to validate the server certificate. - The CA certificate is extracted from key `tls.ca` or `ca.crt`. - type: string - certSecret: - description: |- - CertSecret is the name of the referenced Kubernetes Secret containing the client certificate. - The client certificate is extracted from the keys `tls.crt` and `tls.key`. - type: string - insecureSkipVerify: - description: InsecureSkipVerify defines whether the server - certificates should be validated. - type: boolean - type: object - trustForwardHeader: - description: 'TrustForwardHeader defines whether to trust (ie: - forward) all X-Forwarded-* headers.' - type: boolean - type: object - grpcWeb: - description: |- - GrpcWeb holds the gRPC web middleware configuration. - This middleware converts a gRPC web request to an HTTP/2 gRPC request. - properties: - allowOrigins: - description: |- - AllowOrigins is a list of allowable origins. - Can also be a wildcard origin "*". - items: - type: string - type: array - type: object - headers: - description: |- - Headers holds the headers middleware configuration. - This middleware manages the requests and responses headers. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/headers/#customrequestheaders - properties: - accessControlAllowCredentials: - description: AccessControlAllowCredentials defines whether the - request can include user credentials. - type: boolean - accessControlAllowHeaders: - description: AccessControlAllowHeaders defines the Access-Control-Request-Headers - values sent in preflight response. - items: - type: string - type: array - accessControlAllowMethods: - description: AccessControlAllowMethods defines the Access-Control-Request-Method - values sent in preflight response. - 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 defines the Access-Control-Expose-Headers - values sent in preflight response. - items: - type: string - type: array - accessControlMaxAge: - description: AccessControlMaxAge defines the time that a preflight - request may be cached. - format: int64 - type: integer - addVaryHeader: - description: AddVaryHeader defines whether the Vary header is - automatically added/updated when the AccessControlAllowOriginList - is set. - type: boolean - allowedHosts: - description: AllowedHosts defines the fully qualified list of - allowed domain names. - items: - type: string - type: array - browserXssFilter: - description: BrowserXSSFilter defines whether to add the X-XSS-Protection - header with the value 1; mode=block. - type: boolean - contentSecurityPolicy: - description: ContentSecurityPolicy defines the Content-Security-Policy - header value. - type: string - contentSecurityPolicyReportOnly: - description: ContentSecurityPolicyReportOnly defines the Content-Security-Policy-Report-Only - header value. - type: string - contentTypeNosniff: - description: ContentTypeNosniff defines whether to add the X-Content-Type-Options - header with the nosniff value. - type: boolean - customBrowserXSSValue: - description: |- - CustomBrowserXSSValue defines the X-XSS-Protection header value. - This overrides the BrowserXssFilter option. - type: string - customFrameOptionsValue: - description: |- - CustomFrameOptionsValue defines the X-Frame-Options header value. - This overrides the FrameDeny option. - type: string - customRequestHeaders: - additionalProperties: - type: string - description: CustomRequestHeaders defines the header names and - values to apply to the request. - type: object - customResponseHeaders: - additionalProperties: - type: string - description: CustomResponseHeaders defines the header names and - values to apply to the response. - type: object - featurePolicy: - description: 'Deprecated: FeaturePolicy option is deprecated, - please use PermissionsPolicy instead.' - type: string - forceSTSHeader: - description: ForceSTSHeader defines whether to add the STS header - even when the connection is HTTP. - type: boolean - frameDeny: - description: FrameDeny defines whether to add the X-Frame-Options - header with the DENY value. - type: boolean - hostsProxyHeaders: - description: HostsProxyHeaders defines the header keys that may - hold a proxied hostname value for the request. - items: - type: string - type: array - isDevelopment: - description: |- - IsDevelopment defines whether to mitigate the unwanted effects of the AllowedHosts, SSL, and STS options when developing. - Usually testing takes place using HTTP, not HTTPS, and on localhost, not your production domain. - If you would like your development environment to mimic production with complete Host blocking, SSL redirects, - and STS headers, leave this as false. - type: boolean - permissionsPolicy: - description: |- - PermissionsPolicy defines the Permissions-Policy header value. - This allows sites to control browser features. - type: string - publicKey: - description: PublicKey is the public key that implements HPKP - to prevent MITM attacks with forged certificates. - type: string - referrerPolicy: - description: |- - ReferrerPolicy defines the Referrer-Policy header value. - This allows sites to control whether browsers forward the Referer header to other sites. - type: string - sslForceHost: - description: 'Deprecated: SSLForceHost option is deprecated, please - use RedirectRegex instead.' - type: boolean - sslHost: - description: 'Deprecated: SSLHost option is deprecated, please - use RedirectRegex instead.' - type: string - sslProxyHeaders: - additionalProperties: - type: string - description: |- - SSLProxyHeaders defines the header keys with associated values that would indicate a valid HTTPS request. - It can be useful when using other proxies (example: "X-Forwarded-Proto": "https"). - type: object - sslRedirect: - description: 'Deprecated: SSLRedirect option is deprecated, please - use EntryPoint redirection or RedirectScheme instead.' - type: boolean - sslTemporaryRedirect: - description: 'Deprecated: SSLTemporaryRedirect option is deprecated, - please use EntryPoint redirection or RedirectScheme instead.' - type: boolean - stsIncludeSubdomains: - description: STSIncludeSubdomains defines whether the includeSubDomains - directive is appended to the Strict-Transport-Security header. - type: boolean - stsPreload: - description: STSPreload defines whether the preload flag is appended - to the Strict-Transport-Security header. - type: boolean - stsSeconds: - description: |- - STSSeconds defines the max-age of the Strict-Transport-Security header. - If set to 0, the header is not set. - format: int64 - type: integer - type: object - inFlightReq: - description: |- - InFlightReq holds the in-flight request middleware configuration. - This middleware limits the number of requests being processed and served concurrently. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/inflightreq/ - properties: - amount: - description: |- - Amount defines the maximum amount of allowed simultaneous in-flight request. - The middleware responds with HTTP 429 Too Many Requests if there are already amount requests in progress (based on the same sourceCriterion strategy). - format: int64 - type: integer - sourceCriterion: - description: |- - SourceCriterion defines what criterion is used to group requests as originating from a common source. - If several strategies are defined at the same time, an error will be raised. - If none are set, the default is to use the requestHost. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/inflightreq/#sourcecriterion - properties: - ipStrategy: - description: |- - IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy - properties: - depth: - description: Depth tells Traefik to use the X-Forwarded-For - header and take the IP located at the depth position - (starting from the right). - type: integer - excludedIPs: - description: ExcludedIPs configures Traefik to scan the - X-Forwarded-For header and select the first IP not in - the list. - items: - type: string - type: array - type: object - requestHeaderName: - description: RequestHeaderName defines the name of the header - used to group incoming requests. - type: string - requestHost: - description: RequestHost defines whether to consider the request - Host as the source. - type: boolean - type: object - type: object - ipAllowList: - description: |- - IPAllowList holds the IP allowlist middleware configuration. - This middleware limits allowed requests based on the client IP. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/ - properties: - ipStrategy: - description: |- - IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy - properties: - depth: - description: Depth tells Traefik to use the X-Forwarded-For - header and take the IP located at the depth position (starting - from the right). - type: integer - excludedIPs: - description: ExcludedIPs configures Traefik to scan the X-Forwarded-For - header and select the first IP not in the list. - items: - type: string - type: array - type: object - rejectStatusCode: - description: |- - RejectStatusCode defines the HTTP status code used for refused requests. - If not set, the default is 403 (Forbidden). - type: integer - sourceRange: - description: SourceRange defines the set of allowed IPs (or ranges - of allowed IPs by using CIDR notation). - items: - type: string - type: array - type: object - ipWhiteList: - description: 'Deprecated: please use IPAllowList instead.' - properties: - ipStrategy: - description: |- - IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy - properties: - depth: - description: Depth tells Traefik to use the X-Forwarded-For - header and take the IP located at the depth position (starting - from the right). - type: integer - excludedIPs: - description: ExcludedIPs configures Traefik to scan the X-Forwarded-For - header and select the first IP not in the list. - items: - type: string - type: array - type: object - sourceRange: - description: SourceRange defines the set of allowed IPs (or ranges - of allowed IPs by using CIDR notation). Required. - items: - type: string - type: array - type: object - passTLSClientCert: - description: |- - PassTLSClientCert holds the pass TLS client cert middleware configuration. - This middleware adds the selected data from the passed client TLS certificate to a header. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/passtlsclientcert/ - properties: - info: - description: Info selects the specific client certificate details - you want to add to the X-Forwarded-Tls-Client-Cert-Info header. - properties: - issuer: - description: Issuer defines the client certificate issuer - details to add to the X-Forwarded-Tls-Client-Cert-Info header. - properties: - commonName: - description: CommonName defines whether to add the organizationalUnit - information into the issuer. - type: boolean - country: - description: Country defines whether to add the country - information into the issuer. - type: boolean - domainComponent: - description: DomainComponent defines whether to add the - domainComponent information into the issuer. - type: boolean - locality: - description: Locality defines whether to add the locality - information into the issuer. - type: boolean - organization: - description: Organization defines whether to add the organization - information into the issuer. - type: boolean - province: - description: Province defines whether to add the province - information into the issuer. - type: boolean - serialNumber: - description: SerialNumber defines whether to add the serialNumber - information into the issuer. - type: boolean - type: object - notAfter: - description: NotAfter defines whether to add the Not After - information from the Validity part. - type: boolean - notBefore: - description: NotBefore defines whether to add the Not Before - information from the Validity part. - type: boolean - sans: - description: Sans defines whether to add the Subject Alternative - Name information from the Subject Alternative Name part. - type: boolean - serialNumber: - description: SerialNumber defines whether to add the client - serialNumber information. - type: boolean - subject: - description: Subject defines the client certificate subject - details to add to the X-Forwarded-Tls-Client-Cert-Info header. - properties: - commonName: - description: CommonName defines whether to add the organizationalUnit - information into the subject. - type: boolean - country: - description: Country defines whether to add the country - information into the subject. - type: boolean - domainComponent: - description: DomainComponent defines whether to add the - domainComponent information into the subject. - type: boolean - locality: - description: Locality defines whether to add the locality - information into the subject. - type: boolean - organization: - description: Organization defines whether to add the organization - information into the subject. - type: boolean - organizationalUnit: - description: OrganizationalUnit defines whether to add - the organizationalUnit information into the subject. - type: boolean - province: - description: Province defines whether to add the province - information into the subject. - type: boolean - serialNumber: - description: SerialNumber defines whether to add the serialNumber - information into the subject. - type: boolean - type: object - type: object - pem: - description: PEM sets the X-Forwarded-Tls-Client-Cert header with - the certificate. - type: boolean - type: object - plugin: - additionalProperties: - x-kubernetes-preserve-unknown-fields: true - description: |- - Plugin defines the middleware plugin configuration. - More info: https://doc.traefik.io/traefik/plugins/ - type: object - rateLimit: - description: |- - RateLimit holds the rate limit configuration. - This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ratelimit/ - properties: - average: - description: |- - Average is the maximum rate, by default in requests/s, allowed for the given source. - It defaults to 0, which means no rate limiting. - The rate is actually defined by dividing Average by Period. So for a rate below 1req/s, - one needs to define a Period larger than a second. - format: int64 - type: integer - burst: - description: |- - Burst is the maximum number of requests allowed to arrive in the same arbitrarily small period of time. - It defaults to 1. - format: int64 - type: integer - period: - anyOf: - - type: integer - - type: string - description: |- - Period, in combination with Average, defines the actual maximum rate, such as: - r = Average / Period. It defaults to a second. - x-kubernetes-int-or-string: true - sourceCriterion: - description: |- - SourceCriterion defines what criterion is used to group requests as originating from a common source. - If several strategies are defined at the same time, an error will be raised. - If none are set, the default is to use the request's remote address field (as an ipStrategy). - properties: - ipStrategy: - description: |- - IPStrategy holds the IP strategy configuration used by Traefik to determine the client IP. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/ipallowlist/#ipstrategy - properties: - depth: - description: Depth tells Traefik to use the X-Forwarded-For - header and take the IP located at the depth position - (starting from the right). - type: integer - excludedIPs: - description: ExcludedIPs configures Traefik to scan the - X-Forwarded-For header and select the first IP not in - the list. - items: - type: string - type: array - type: object - requestHeaderName: - description: RequestHeaderName defines the name of the header - used to group incoming requests. - type: string - requestHost: - description: RequestHost defines whether to consider the request - Host as the source. - type: boolean - type: object - type: object - redirectRegex: - description: |- - RedirectRegex holds the redirect regex middleware configuration. - This middleware redirects a request using regex matching and replacement. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/redirectregex/#regex - properties: - permanent: - description: Permanent defines whether the redirection is permanent - (301). - type: boolean - regex: - description: Regex defines the regex used to match and capture - elements from the request URL. - type: string - replacement: - description: Replacement defines how to modify the URL to have - the new target URL. - type: string - type: object - redirectScheme: - description: |- - RedirectScheme holds the redirect scheme middleware configuration. - This middleware redirects requests from a scheme/port to another. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/redirectscheme/ - properties: - permanent: - description: Permanent defines whether the redirection is permanent - (301). - type: boolean - port: - description: Port defines the port of the new URL. - type: string - scheme: - description: Scheme defines the scheme of the new URL. - type: string - type: object - replacePath: - description: |- - ReplacePath holds the replace path middleware configuration. - This middleware replaces the path of the request URL and store the original path in an X-Replaced-Path header. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/replacepath/ - properties: - path: - description: Path defines the path to use as replacement in the - request URL. - type: string - type: object - replacePathRegex: - description: |- - ReplacePathRegex holds the replace path regex middleware configuration. - This middleware replaces the path of a URL using regex matching and replacement. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/replacepathregex/ - properties: - regex: - description: Regex defines the regular expression used to match - and capture the path from the request URL. - type: string - replacement: - description: Replacement defines the replacement path format, - which can include captured variables. - type: string - type: object - retry: - description: |- - Retry holds the retry middleware configuration. - This middleware reissues requests a given number of times to a backend server if that server does not reply. - As soon as the server answers, the middleware stops retrying, regardless of the response status. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/retry/ - properties: - attempts: - description: Attempts defines how many times the request should - be retried. - type: integer - initialInterval: - anyOf: - - type: integer - - type: string - description: |- - InitialInterval defines the first wait time in the exponential backoff series. - The maximum interval is calculated as twice the initialInterval. - If unspecified, requests will be retried immediately. - The value of initialInterval should be provided in seconds or as a valid duration format, - see https://pkg.go.dev/time#ParseDuration. - x-kubernetes-int-or-string: true - type: object - stripPrefix: - description: |- - StripPrefix holds the strip prefix middleware configuration. - This middleware removes the specified prefixes from the URL path. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/stripprefix/ - properties: - forceSlash: - description: |- - Deprecated: ForceSlash option is deprecated, please remove any usage of this option. - ForceSlash ensures that the resulting stripped path is not the empty string, by replacing it with / when necessary. - Default: true. - type: boolean - prefixes: - description: Prefixes defines the prefixes to strip from the request - URL. - items: - type: string - type: array - type: object - stripPrefixRegex: - description: |- - StripPrefixRegex holds the strip prefix regex middleware configuration. - This middleware removes the matching prefixes from the URL path. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/http/stripprefixregex/ - properties: - regex: - description: Regex defines the regular expression to match the - path prefix from the request URL. - items: - type: string - type: array - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewaretcps.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewaretcps.yaml deleted file mode 100644 index f09e3d4129b..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_middlewaretcps.yaml +++ /dev/null @@ -1,87 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: middlewaretcps.traefik.io -spec: - group: traefik.io - names: - kind: MiddlewareTCP - listKind: MiddlewareTCPList - plural: middlewaretcps - singular: middlewaretcp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - MiddlewareTCP is the CRD implementation of a Traefik TCP middleware. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/overview/ - 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 defines the desired state of a MiddlewareTCP. - properties: - inFlightConn: - description: InFlightConn defines the InFlightConn middleware configuration. - properties: - amount: - description: |- - Amount defines the maximum amount of allowed simultaneous connections. - The middleware closes the connection if there are already amount connections opened. - format: int64 - type: integer - type: object - ipAllowList: - description: |- - IPAllowList defines the IPAllowList middleware configuration. - This middleware accepts/refuses connections based on the client IP. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/tcp/ipallowlist/ - properties: - sourceRange: - description: SourceRange defines the allowed IPs (or ranges of - allowed IPs by using CIDR notation). - items: - type: string - type: array - type: object - ipWhiteList: - description: |- - IPWhiteList defines the IPWhiteList middleware configuration. - This middleware accepts/refuses connections based on the client IP. - Deprecated: please use IPAllowList instead. - More info: https://doc.traefik.io/traefik/v3.1/middlewares/tcp/ipwhitelist/ - properties: - sourceRange: - description: SourceRange defines the allowed IPs (or ranges of - allowed IPs by using CIDR notation). - items: - type: string - type: array - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransports.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransports.yaml deleted file mode 100644 index a447c97f191..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransports.yaml +++ /dev/null @@ -1,139 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: serverstransports.traefik.io -spec: - group: traefik.io - names: - kind: ServersTransport - listKind: ServersTransportList - plural: serverstransports - singular: serverstransport - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - ServersTransport is the CRD implementation of a ServersTransport. - If no serversTransport is specified, the default@internal will be used. - The default@internal serversTransport is created from the static configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#serverstransport_1 - 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 defines the desired state of a ServersTransport. - properties: - certificatesSecrets: - description: CertificatesSecrets defines a list of secret storing - client certificates for mTLS. - items: - type: string - type: array - disableHTTP2: - description: DisableHTTP2 disables HTTP/2 for connections with backend - servers. - type: boolean - forwardingTimeouts: - description: ForwardingTimeouts defines the timeouts for requests - forwarded to the backend servers. - properties: - dialTimeout: - anyOf: - - type: integer - - type: string - description: DialTimeout is the amount of time to wait until a - connection to a backend server can be established. - x-kubernetes-int-or-string: true - idleConnTimeout: - anyOf: - - type: integer - - type: string - description: IdleConnTimeout is the maximum period for which an - idle HTTP keep-alive connection will remain open before closing - itself. - x-kubernetes-int-or-string: true - pingTimeout: - anyOf: - - type: integer - - type: string - description: PingTimeout is the timeout after which the HTTP/2 - connection will be closed if a response to ping is not received. - x-kubernetes-int-or-string: true - readIdleTimeout: - anyOf: - - type: integer - - type: string - description: ReadIdleTimeout is the timeout after which a health - check using ping frame will be carried out if no frame is received - on the HTTP/2 connection. - x-kubernetes-int-or-string: true - responseHeaderTimeout: - anyOf: - - type: integer - - type: string - description: ResponseHeaderTimeout is the amount of time to wait - for a server's response headers after fully writing the request - (including its body, if any). - x-kubernetes-int-or-string: true - type: object - insecureSkipVerify: - description: InsecureSkipVerify disables SSL certificate verification. - type: boolean - maxIdleConnsPerHost: - description: MaxIdleConnsPerHost controls the maximum idle (keep-alive) - to keep per-host. - type: integer - peerCertURI: - description: PeerCertURI defines the peer cert URI used to match against - SAN URI during the peer certificate verification. - type: string - rootCAsSecrets: - description: RootCAsSecrets defines a list of CA secret used to validate - self-signed certificate. - items: - type: string - type: array - serverName: - description: ServerName defines the server name used to contact the - server. - type: string - spiffe: - description: Spiffe defines the SPIFFE configuration. - properties: - ids: - description: IDs defines the allowed SPIFFE IDs (takes precedence - over the SPIFFE TrustDomain). - items: - type: string - type: array - trustDomain: - description: TrustDomain defines the allowed SPIFFE trust domain. - type: string - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransporttcps.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransporttcps.yaml deleted file mode 100644 index 319044709c7..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_serverstransporttcps.yaml +++ /dev/null @@ -1,120 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: serverstransporttcps.traefik.io -spec: - group: traefik.io - names: - kind: ServersTransportTCP - listKind: ServersTransportTCPList - plural: serverstransporttcps - singular: serverstransporttcp - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - ServersTransportTCP is the CRD implementation of a TCPServersTransport. - If no tcpServersTransport is specified, a default one named default@internal will be used. - The default@internal tcpServersTransport can be configured in the static configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#serverstransport_3 - 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: ServersTransportTCPSpec defines the desired state of a ServersTransportTCP. - properties: - dialKeepAlive: - anyOf: - - type: integer - - type: string - description: DialKeepAlive is the interval between keep-alive probes - for an active network connection. If zero, keep-alive probes are - sent with a default value (currently 15 seconds), if supported by - the protocol and operating system. Network protocols or operating - systems that do not support keep-alives ignore this field. If negative, - keep-alive probes are disabled. - x-kubernetes-int-or-string: true - dialTimeout: - anyOf: - - type: integer - - type: string - description: DialTimeout is the amount of time to wait until a connection - to a backend server can be established. - x-kubernetes-int-or-string: true - terminationDelay: - anyOf: - - type: integer - - type: string - description: TerminationDelay defines the delay to wait before fully - terminating the connection, after one connected peer has closed - its writing capability. - x-kubernetes-int-or-string: true - tls: - description: TLS defines the TLS configuration - properties: - certificatesSecrets: - description: CertificatesSecrets defines a list of secret storing - client certificates for mTLS. - items: - type: string - type: array - insecureSkipVerify: - description: InsecureSkipVerify disables TLS certificate verification. - type: boolean - peerCertURI: - description: |- - MaxIdleConnsPerHost controls the maximum idle (keep-alive) to keep per-host. - PeerCertURI defines the peer cert URI used to match against SAN URI during the peer certificate verification. - type: string - rootCAsSecrets: - description: RootCAsSecrets defines a list of CA secret used to - validate self-signed certificates. - items: - type: string - type: array - serverName: - description: ServerName defines the server name used to contact - the server. - type: string - spiffe: - description: Spiffe defines the SPIFFE configuration. - properties: - ids: - description: IDs defines the allowed SPIFFE IDs (takes precedence - over the SPIFFE TrustDomain). - items: - type: string - type: array - trustDomain: - description: TrustDomain defines the allowed SPIFFE trust - domain. - type: string - type: object - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsoptions.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsoptions.yaml deleted file mode 100644 index 932f958114c..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsoptions.yaml +++ /dev/null @@ -1,114 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: tlsoptions.traefik.io -spec: - group: traefik.io - names: - kind: TLSOption - listKind: TLSOptionList - plural: tlsoptions - singular: tlsoption - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection. - More info: https://doc.traefik.io/traefik/v3.1/https/tls/#tls-options - 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 defines the desired state of a TLSOption. - properties: - alpnProtocols: - description: |- - ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference. - More info: https://doc.traefik.io/traefik/v3.1/https/tls/#alpn-protocols - items: - type: string - type: array - cipherSuites: - description: |- - CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2. - More info: https://doc.traefik.io/traefik/v3.1/https/tls/#cipher-suites - items: - type: string - type: array - clientAuth: - description: ClientAuth defines the server's policy for TLS Client - Authentication. - properties: - clientAuthType: - description: ClientAuthType defines the client authentication - type to apply. - enum: - - NoClientCert - - RequestClientCert - - RequireAnyClientCert - - VerifyClientCertIfGiven - - RequireAndVerifyClientCert - type: string - secretNames: - description: SecretNames defines the names of the referenced Kubernetes - Secret storing certificate details. - items: - type: string - type: array - type: object - curvePreferences: - description: |- - CurvePreferences defines the preferred elliptic curves in a specific order. - More info: https://doc.traefik.io/traefik/v3.1/https/tls/#curve-preferences - items: - type: string - type: array - maxVersion: - description: |- - MaxVersion defines the maximum TLS version that Traefik will accept. - Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. - Default: None. - type: string - minVersion: - description: |- - MinVersion defines the minimum TLS version that Traefik will accept. - Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13. - Default: VersionTLS10. - type: string - preferServerCipherSuites: - description: |- - PreferServerCipherSuites defines whether the server chooses a cipher suite among his own instead of among the client's. - It is enabled automatically when minVersion or maxVersion is set. - Deprecated: https://github.com/golang/go/issues/45430 - type: boolean - sniStrict: - description: SniStrict defines whether Traefik allows connections - from clients connections that do not specify a server_name extension. - type: boolean - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsstores.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsstores.yaml deleted file mode 100644 index 37afedc024d..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_tlsstores.yaml +++ /dev/null @@ -1,97 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: tlsstores.traefik.io -spec: - group: traefik.io - names: - kind: TLSStore - listKind: TLSStoreList - plural: tlsstores - singular: tlsstore - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - TLSStore is the CRD implementation of a Traefik TLS Store. - For the time being, only the TLSStore named default is supported. - This means that you cannot have two stores that are named default in different Kubernetes namespaces. - More info: https://doc.traefik.io/traefik/v3.1/https/tls/#certificates-stores - 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 defines the desired state of a TLSStore. - properties: - certificates: - description: Certificates is a list of secret names, each secret holding - a key/certificate pair to add to the store. - items: - description: Certificate holds a secret name for the TLSStore resource. - properties: - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - required: - - secretName - type: object - type: array - defaultCertificate: - description: DefaultCertificate defines the default certificate configuration. - properties: - secretName: - description: SecretName is the name of the referenced Kubernetes - Secret to specify the certificate details. - type: string - required: - - secretName - type: object - defaultGeneratedCert: - description: DefaultGeneratedCert defines the default generated certificate - configuration. - properties: - domain: - description: Domain is the domain definition for the DefaultCertificate. - properties: - main: - description: Main defines the main domain name. - type: string - sans: - description: SANs defines the subject alternative domain names. - items: - type: string - type: array - type: object - resolver: - description: Resolver is the name of the resolver that will be - used to issue the DefaultCertificate. - type: string - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/templates/crds/traefik.io_traefikservices.yaml b/archive/charts/system/traefik-crds/templates/crds/traefik.io_traefikservices.yaml deleted file mode 100644 index 1e1b279d51a..00000000000 --- a/archive/charts/system/traefik-crds/templates/crds/traefik.io_traefikservices.yaml +++ /dev/null @@ -1,639 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.16.1 - name: traefikservices.traefik.io -spec: - group: traefik.io - names: - kind: TraefikService - listKind: TraefikServiceList - plural: traefikservices - singular: traefikservice - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: |- - TraefikService is the CRD implementation of a Traefik Service. - TraefikService object allows to: - - Apply weight to Services on load-balancing - - Mirror traffic on services - More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#kind-traefikservice - 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: TraefikServiceSpec defines the desired state of a TraefikService. - properties: - mirroring: - description: Mirroring defines the Mirroring service configuration. - properties: - healthCheck: - description: Healthcheck defines health checks for ExternalName - services. - properties: - followRedirects: - description: |- - FollowRedirects defines whether redirects should be followed during the health check calls. - Default: true - type: boolean - headers: - additionalProperties: - type: string - description: Headers defines custom headers to be sent to - the health check endpoint. - type: object - hostname: - description: Hostname defines the value of hostname in the - Host header of the health check request. - type: string - interval: - anyOf: - - type: integer - - type: string - description: |- - Interval defines the frequency of the health check calls. - Default: 30s - x-kubernetes-int-or-string: true - method: - description: Method defines the healthcheck method. - type: string - mode: - description: |- - Mode defines the health check mode. - If defined to grpc, will use the gRPC health check protocol to probe the server. - Default: http - type: string - path: - description: Path defines the server URL path for the health - check endpoint. - type: string - port: - description: Port defines the server URL port for the health - check endpoint. - type: integer - scheme: - description: Scheme replaces the server URL scheme for the - health check endpoint. - type: string - status: - description: Status defines the expected HTTP status code - of the response to the health check request. - type: integer - timeout: - anyOf: - - type: integer - - type: string - description: |- - Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy. - Default: 5s - x-kubernetes-int-or-string: true - type: object - kind: - description: Kind defines the kind of the Service. - enum: - - Service - - TraefikService - type: string - maxBodySize: - description: |- - MaxBodySize defines the maximum size allowed for the body of the request. - If the body is larger, the request is not mirrored. - Default value is -1, which means unlimited size. - format: int64 - type: integer - mirrors: - description: Mirrors defines the list of mirrors where Traefik - will duplicate the traffic. - items: - description: MirrorService holds the mirror configuration. - properties: - healthCheck: - description: Healthcheck defines health checks for ExternalName - services. - properties: - followRedirects: - description: |- - FollowRedirects defines whether redirects should be followed during the health check calls. - Default: true - type: boolean - headers: - additionalProperties: - type: string - description: Headers defines custom headers to be sent - to the health check endpoint. - type: object - hostname: - description: Hostname defines the value of hostname - in the Host header of the health check request. - type: string - interval: - anyOf: - - type: integer - - type: string - description: |- - Interval defines the frequency of the health check calls. - Default: 30s - x-kubernetes-int-or-string: true - method: - description: Method defines the healthcheck method. - type: string - mode: - description: |- - Mode defines the health check mode. - If defined to grpc, will use the gRPC health check protocol to probe the server. - Default: http - type: string - path: - description: Path defines the server URL path for the - health check endpoint. - type: string - port: - description: Port defines the server URL port for the - health check endpoint. - type: integer - scheme: - description: Scheme replaces the server URL scheme for - the health check endpoint. - type: string - status: - description: Status defines the expected HTTP status - code of the response to the health check request. - type: integer - timeout: - anyOf: - - type: integer - - type: string - description: |- - Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy. - Default: 5s - x-kubernetes-int-or-string: true - type: object - kind: - description: Kind defines the kind of the Service. - enum: - - Service - - TraefikService - type: string - name: - description: |- - Name defines the name of the referenced Kubernetes Service or TraefikService. - The differentiation between the two is specified in the Kind field. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Kubernetes Service or TraefikService. - type: string - nativeLB: - description: |- - NativeLB controls, when creating the load-balancer, - whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. - The Kubernetes Service itself does load-balance to the pods. - By default, NativeLB is false. - type: boolean - nodePortLB: - description: |- - NodePortLB controls, when creating the load-balancer, - whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. - It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes. - By default, NodePortLB is false. - type: boolean - passHostHeader: - description: |- - PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. - By default, passHostHeader is true. - type: boolean - percent: - description: |- - Percent defines the part of the traffic to mirror. - Supported values: 0 to 100. - type: integer - port: - anyOf: - - type: integer - - type: string - description: |- - Port defines the port of a Kubernetes Service. - This can be a reference to a named port. - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding defines how Traefik forwards - the response from the upstream Kubernetes Service to the - client. - properties: - flushInterval: - description: |- - FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. - A negative value means to flush immediately after each write to the client. - This configuration is ignored when ReverseProxy recognizes a response as a streaming response; - for such responses, writes are flushed to the client immediately. - Default: 100ms - type: string - type: object - scheme: - description: |- - Scheme defines the scheme to use for the request to the upstream Kubernetes Service. - It defaults to https when Kubernetes Service port is 443, http otherwise. - type: string - serversTransport: - description: |- - ServersTransport defines the name of ServersTransport resource to use. - It allows to configure the transport between Traefik and your servers. - Can only be used on a Kubernetes Service. - type: string - sticky: - description: |- - Sticky defines the sticky sessions configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions - properties: - cookie: - description: Cookie defines the sticky cookie configuration. - properties: - httpOnly: - description: HTTPOnly defines whether the cookie - can be accessed by client-side APIs, such as JavaScript. - type: boolean - maxAge: - description: |- - MaxAge indicates the number of seconds until the cookie expires. - When set to a negative number, the cookie expires immediately. - When set to zero, the cookie never expires. - type: integer - name: - description: Name defines the Cookie name. - type: string - sameSite: - description: |- - SameSite defines the same site policy. - More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - type: string - secure: - description: Secure defines whether the cookie can - only be transmitted over an encrypted connection - (i.e. HTTPS). - type: boolean - type: object - type: object - strategy: - description: |- - Strategy defines the load balancing strategy between the servers. - RoundRobin is the only supported value at the moment. - type: string - weight: - description: |- - Weight defines the weight and 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 defines the name of the referenced Kubernetes Service or TraefikService. - The differentiation between the two is specified in the Kind field. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Kubernetes Service or TraefikService. - type: string - nativeLB: - description: |- - NativeLB controls, when creating the load-balancer, - whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. - The Kubernetes Service itself does load-balance to the pods. - By default, NativeLB is false. - type: boolean - nodePortLB: - description: |- - NodePortLB controls, when creating the load-balancer, - whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. - It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes. - By default, NodePortLB is false. - type: boolean - passHostHeader: - description: |- - PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. - By default, passHostHeader is true. - type: boolean - port: - anyOf: - - type: integer - - type: string - description: |- - Port defines the port of a Kubernetes Service. - This can be a reference to a named port. - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding defines how Traefik forwards the - response from the upstream Kubernetes Service to the client. - properties: - flushInterval: - description: |- - FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. - A negative value means to flush immediately after each write to the client. - This configuration is ignored when ReverseProxy recognizes a response as a streaming response; - for such responses, writes are flushed to the client immediately. - Default: 100ms - type: string - type: object - scheme: - description: |- - Scheme defines the scheme to use for the request to the upstream Kubernetes Service. - It defaults to https when Kubernetes Service port is 443, http otherwise. - type: string - serversTransport: - description: |- - ServersTransport defines the name of ServersTransport resource to use. - It allows to configure the transport between Traefik and your servers. - Can only be used on a Kubernetes Service. - type: string - sticky: - description: |- - Sticky defines the sticky sessions configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions - properties: - cookie: - description: Cookie defines the sticky cookie configuration. - properties: - httpOnly: - description: HTTPOnly defines whether the cookie can be - accessed by client-side APIs, such as JavaScript. - type: boolean - maxAge: - description: |- - MaxAge indicates the number of seconds until the cookie expires. - When set to a negative number, the cookie expires immediately. - When set to zero, the cookie never expires. - type: integer - name: - description: Name defines the Cookie name. - type: string - sameSite: - description: |- - SameSite defines the same site policy. - More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - type: string - secure: - description: Secure defines whether the cookie can only - be transmitted over an encrypted connection (i.e. HTTPS). - type: boolean - type: object - type: object - strategy: - description: |- - Strategy defines the load balancing strategy between the servers. - RoundRobin is the only supported value at the moment. - type: string - weight: - description: |- - Weight defines the weight and 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: Weighted defines the Weighted Round Robin configuration. - properties: - services: - description: Services defines the list of Kubernetes Service and/or - TraefikService to load-balance, with weight. - items: - description: Service defines an upstream HTTP service to proxy - traffic to. - properties: - healthCheck: - description: Healthcheck defines health checks for ExternalName - services. - properties: - followRedirects: - description: |- - FollowRedirects defines whether redirects should be followed during the health check calls. - Default: true - type: boolean - headers: - additionalProperties: - type: string - description: Headers defines custom headers to be sent - to the health check endpoint. - type: object - hostname: - description: Hostname defines the value of hostname - in the Host header of the health check request. - type: string - interval: - anyOf: - - type: integer - - type: string - description: |- - Interval defines the frequency of the health check calls. - Default: 30s - x-kubernetes-int-or-string: true - method: - description: Method defines the healthcheck method. - type: string - mode: - description: |- - Mode defines the health check mode. - If defined to grpc, will use the gRPC health check protocol to probe the server. - Default: http - type: string - path: - description: Path defines the server URL path for the - health check endpoint. - type: string - port: - description: Port defines the server URL port for the - health check endpoint. - type: integer - scheme: - description: Scheme replaces the server URL scheme for - the health check endpoint. - type: string - status: - description: Status defines the expected HTTP status - code of the response to the health check request. - type: integer - timeout: - anyOf: - - type: integer - - type: string - description: |- - Timeout defines the maximum duration Traefik will wait for a health check request before considering the server unhealthy. - Default: 5s - x-kubernetes-int-or-string: true - type: object - kind: - description: Kind defines the kind of the Service. - enum: - - Service - - TraefikService - type: string - name: - description: |- - Name defines the name of the referenced Kubernetes Service or TraefikService. - The differentiation between the two is specified in the Kind field. - type: string - namespace: - description: Namespace defines the namespace of the referenced - Kubernetes Service or TraefikService. - type: string - nativeLB: - description: |- - NativeLB controls, when creating the load-balancer, - whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. - The Kubernetes Service itself does load-balance to the pods. - By default, NativeLB is false. - type: boolean - nodePortLB: - description: |- - NodePortLB controls, when creating the load-balancer, - whether the LB's children are directly the nodes internal IPs using the nodePort when the service type is NodePort. - It allows services to be reachable when Traefik runs externally from the Kubernetes cluster but within the same network of the nodes. - By default, NodePortLB is false. - type: boolean - passHostHeader: - description: |- - PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. - By default, passHostHeader is true. - type: boolean - port: - anyOf: - - type: integer - - type: string - description: |- - Port defines the port of a Kubernetes Service. - This can be a reference to a named port. - x-kubernetes-int-or-string: true - responseForwarding: - description: ResponseForwarding defines how Traefik forwards - the response from the upstream Kubernetes Service to the - client. - properties: - flushInterval: - description: |- - FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. - A negative value means to flush immediately after each write to the client. - This configuration is ignored when ReverseProxy recognizes a response as a streaming response; - for such responses, writes are flushed to the client immediately. - Default: 100ms - type: string - type: object - scheme: - description: |- - Scheme defines the scheme to use for the request to the upstream Kubernetes Service. - It defaults to https when Kubernetes Service port is 443, http otherwise. - type: string - serversTransport: - description: |- - ServersTransport defines the name of ServersTransport resource to use. - It allows to configure the transport between Traefik and your servers. - Can only be used on a Kubernetes Service. - type: string - sticky: - description: |- - Sticky defines the sticky sessions configuration. - More info: https://doc.traefik.io/traefik/v3.1/routing/services/#sticky-sessions - properties: - cookie: - description: Cookie defines the sticky cookie configuration. - properties: - httpOnly: - description: HTTPOnly defines whether the cookie - can be accessed by client-side APIs, such as JavaScript. - type: boolean - maxAge: - description: |- - MaxAge indicates the number of seconds until the cookie expires. - When set to a negative number, the cookie expires immediately. - When set to zero, the cookie never expires. - type: integer - name: - description: Name defines the Cookie name. - type: string - sameSite: - description: |- - SameSite defines the same site policy. - More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - type: string - secure: - description: Secure defines whether the cookie can - only be transmitted over an encrypted connection - (i.e. HTTPS). - type: boolean - type: object - type: object - strategy: - description: |- - Strategy defines the load balancing strategy between the servers. - RoundRobin is the only supported value at the moment. - type: string - weight: - description: |- - Weight defines the weight and 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 defines whether sticky sessions are enabled. - More info: https://doc.traefik.io/traefik/v3.1/routing/providers/kubernetes-crd/#stickiness-and-load-balancing - properties: - cookie: - description: Cookie defines the sticky cookie configuration. - properties: - httpOnly: - description: HTTPOnly defines whether the cookie can be - accessed by client-side APIs, such as JavaScript. - type: boolean - maxAge: - description: |- - MaxAge indicates the number of seconds until the cookie expires. - When set to a negative number, the cookie expires immediately. - When set to zero, the cookie never expires. - type: integer - name: - description: Name defines the Cookie name. - type: string - sameSite: - description: |- - SameSite defines the same site policy. - More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - type: string - secure: - description: Secure defines whether the cookie can only - be transmitted over an encrypted connection (i.e. HTTPS). - type: boolean - type: object - type: object - type: object - type: object - required: - - metadata - - spec - type: object - served: true - storage: true diff --git a/archive/charts/system/traefik-crds/values.yaml b/archive/charts/system/traefik-crds/values.yaml deleted file mode 100644 index 26128632250..00000000000 --- a/archive/charts/system/traefik-crds/values.yaml +++ /dev/null @@ -1,15 +0,0 @@ -image: - pullPolicy: IfNotPresent - repository: oci.trueforge.org/tccr/scratch - tag: latest@sha256:4aef9dbf99ea2a8857ed4ce9d9bf79d330b79044884c7374e392445d122ec746 - - -service: - main: - enabled: false - ports: - main: - enabled: false -workload: - main: - enabled: false diff --git a/archive/clusters/main/kubernetes/apps/kustomization.yaml b/archive/clusters/main/kubernetes/apps/kustomization.yaml deleted file mode 100644 index b83b23e571e..00000000000 --- a/archive/clusters/main/kubernetes/apps/kustomization.yaml +++ /dev/null @@ -1,3 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: [] diff --git a/archive/clusters/main/kubernetes/flux-entry.yaml b/archive/clusters/main/kubernetes/flux-entry.yaml deleted file mode 100644 index e9afe2571a0..00000000000 --- a/archive/clusters/main/kubernetes/flux-entry.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -# yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/kustomize.toolkit.fluxcd.io/kustomization_v1.json -apiVersion: kustomize.toolkit.fluxcd.io/v1 -kind: Kustomization -metadata: - name: truecharts-flux-entry - namespace: flux-system -spec: - interval: 10m - path: ./clusters/main/kubernetes - prune: true - sourceRef: - kind: GitRepository - name: truecharts - decryption: - provider: sops - secretRef: - name: sops-age - postBuild: - substituteFrom: - - kind: ConfigMap - name: cluster-config - patches: - - patch: |- - apiVersion: kustomize.toolkit.fluxcd.io/v1 - kind: Kustomization - metadata: - name: not-used - spec: - decryption: - provider: sops - secretRef: - name: sops-age - postBuild: - substituteFrom: - - kind: ConfigMap - name: cluster-config - target: - group: kustomize.toolkit.fluxcd.io - kind: Kustomization - labelSelector: substitution.flux.home.arpa/disabled notin (true) diff --git a/archive/clusters/main/kubernetes/kustomization.yaml b/archive/clusters/main/kubernetes/kustomization.yaml deleted file mode 100644 index f0cc0f8a397..00000000000 --- a/archive/clusters/main/kubernetes/kustomization.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - - apps diff --git a/archive/clustertool/.gitignore b/archive/clustertool/.gitignore deleted file mode 100644 index a49d3eb7e68..00000000000 --- a/archive/clustertool/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -.direnv -dist/ -.cr-gpg -tgz_cache -index_cache -clustertool -talconfig.json -/talconfig.yaml -/talenv.yaml -talsecret.yaml -.sops.yaml -/clusterconfig/ -age.agekey -/clusters -/repositories -ssh-public-key.txt -*DS_Store -.DS_Store -/lvm-operator -*.DS_Store -!/embed/** -.DS_Store -.github -embeded/linux* -embeded/darwin* -embeded/windows* -embeded/freebsd* -.devcontainer -.envrc \ No newline at end of file diff --git a/archive/clustertool/.goreleaser.yaml b/archive/clustertool/.goreleaser.yaml deleted file mode 100644 index 3fc5876ce40..00000000000 --- a/archive/clustertool/.goreleaser.yaml +++ /dev/null @@ -1,94 +0,0 @@ -version: 2 -project_name: clustertool -builds: - - id: clustertool - dir: clustertool - env: - - CGO_ENABLED=0 - goos: - - linux - - darwin - - freebsd - - windows - goarch: - - amd64 - - arm64 - ldflags: - - -s -w -X main.Version={{.Version}} # Adjust path if necessary -gomod: - dir: ./clustertool -archives: - - name_template: "{{.ProjectName}}_{{ .Version }}_{{.Os}}_{{.Arch}}" -checksum: - name_template: "checksums.txt" -snapshot: - name_template: "{{ incpatch .Version }}-next" -changelog: - sort: asc - filters: - exclude: - - '^Merge pull request #\d+ from' - - "^docs" - - "^test" - include: - - "clustertool" - - "Clustertool" - - "ClusterTool" -release: - name_template: "{{.ProjectName}}-{{.Tag}}" - github: - owner: trueforge-org - name: truecharts - extra_files: - - glob: "clustertool/clustertool.LICENSE" - draft: false - make_latest: false - mode: append - -git: - ignore_tags: - - nightly - - common - -universal_binaries: - - replace: true - -report_sizes: true - -before: - hooks: - - chmod +x ./clustertool/partial_builds/partial_build.sh - - bash ./clustertool/partial_builds/partial_build.sh - - chmod +x ./clustertool/embed/download_talosctl.sh - - bash ./clustertool/embed/download_talosctl.sh - -# sboms: -# - artifacts: archive -# - id: source -# artifacts: source - -nfpms: - - package_name: clustertool - maintainer: "TrueCharts " - homepage: "https://truecharts.org" - description: "Tool to help bootstrap a Kubernetes cluster" - license: "BUSL-1.1" - vendor: TrueCharts - formats: [apk, deb, rpm, termux.deb, archlinux] - -aurs: - - name: "clustertool-bin" - maintainers: - - "TrueCharts " - homepage: "https://truecharts.org" - description: "Tool to help bootstrap a Kubernetes cluster" - license: "BUSL-1.1" - git_url: "ssh://aur@aur.archlinux.org/clustertool-bin.git" - skip_upload: auto - package: | - # Install binary - bsdtar -xvf clustertool_${pkgver}_linux_${CARCH}.tar.gz -C "${pkgdir}" - install -Dm755 "${pkgdir}/clustertool" "${pkgdir}/usr/bin/clustertool" - - # Install license - install -Dm644 "${pkgdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" diff --git a/archive/clustertool/.vscode/extensions.json b/archive/clustertool/.vscode/extensions.json deleted file mode 100644 index 849837cafb7..00000000000 --- a/archive/clustertool/.vscode/extensions.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "recommendations": [ - "golang.go", - "redhat.vscode-yaml", - "formulahendry.code-runner", - "streetsidesoftware.code-spell-checker", - "Codium.codium", - "mrmlnc.vscode-duplicate", - "IgorSbitnev.error-gutters", - "usernamehw.errorlens", - "mhutchie.git-graph", - "eamodio.gitlens", - "vivaldy22.go-auto-struct-tag", - "msyrus.go-doc", - "766b.go-outliner", - "premparihar.gotestexplorer", - "yzhang.markdown-all-in-one", - "searKing.preview-vscode", - "zxh404.vscode-proto3", - "DavidAnson.vscode-markdownlint", - "GitHub.copilot" - ] -} diff --git a/archive/clustertool/.vscode/settings.json b/archive/clustertool/.vscode/settings.json deleted file mode 100644 index 0db3279e44b..00000000000 --- a/archive/clustertool/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/archive/clustertool/.vscode/tasks.json b/archive/clustertool/.vscode/tasks.json deleted file mode 100644 index 654d6a063b4..00000000000 --- a/archive/clustertool/.vscode/tasks.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "Install All Recommended Extensions", - "type": "shell", - "windows": { - "command": "foreach ($ext in (Get-Content -Raw .vscode/extensions.json | ConvertFrom-Json).recommendations) { Write-Host Installing $ext; code --install-extension $ext; }" - }, - "linux": { - "command": "cat .vscode/extensions.json | jq .recommendations[] | xargs -n 1 code . --install-extension" - }, - "runOptions": { - "runOn": "folderOpen" - }, - "presentation": { - "reveal": "silent" - }, - "problemMatcher" : [] - }, - ] -} diff --git a/archive/clustertool/DEVTRIGGER b/archive/clustertool/DEVTRIGGER deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/archive/clustertool/README.md b/archive/clustertool/README.md deleted file mode 100644 index 173d68ed62c..00000000000 --- a/archive/clustertool/README.md +++ /dev/null @@ -1,33 +0,0 @@ -

- -

clustertool

- - [![GitHub release (release name instead of tag name)](https://img.shields.io/github/v/release/truecharts/clustertool?include_prereleases)](https://github.com/trueforge-org/truecharts/clustertool/releases) - [![GitHub issues](https://img.shields.io/github/issues/truecharts/clustertool)](https://github.com/trueforge-org/truecharts/clustertool/issues) - -

- A helper tool to help building TrueCharts helm charts -
- · - Report Bug - · - Request Feature -

-
- -## About The Project - -## CLA: Before contributing - -Our CLA applies to this repository as well. - -Please ensure it's signed before submitting a PR: -https://cla-assistant.io/truecharts/charts - -*We use the truecharts/charts link, as CLA assistant does not allow for creating a custom link to a private repository. -However, they all sign the same CLA that applies project-wide* - -## License - -This tool is released as "All Rights reserved" and hence it's code should NOT be shared. This includes binaries that are modified to remove TrueCharts specific code, unless approved by Kjeld Schouten "The Owner". -Those that are invited to have access to repository, are free to edit and use this code for testing purposes, as long as its sourcecode is not shared or saved in-the-cloud. diff --git a/archive/clustertool/changelog.tmpl b/archive/clustertool/changelog.tmpl deleted file mode 100644 index 1821f9a9068..00000000000 --- a/archive/clustertool/changelog.tmpl +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Changelog -pagefind: false ---- - -All history information can be found at [Github History](https://github.com/trueforge-org/truecharts/commits/master/charts/{{ .Train }}/{{ .Name }}) - -:::tip - -If you need more than 2 scrolls to find your current version, please consider updating the chart as soon as possible. - -::: -{{ range $key := .SortedVersions }} -## {{ $key }} • [Train: {{ (index $.Versions $key).Train }}] -{{ range $commit := (index $.Versions $key).SortedCommits }} -- {{ printf "%s • [`%s`](https://github.com/trueforge-org/truecharts/commit/%s) • [@%s] (%s)" $commit.Message (slice $commit.CommitHash 0 7) $commit.CommitHash $commit.Author.Name $commit.Author.Date -}} -{{ end }} -{{ end -}} diff --git a/archive/clustertool/clustertool.LICENSE b/archive/clustertool/clustertool.LICENSE deleted file mode 100644 index 33a8cbb23f0..00000000000 --- a/archive/clustertool/clustertool.LICENSE +++ /dev/null @@ -1,106 +0,0 @@ -Business Source License 1.1 - -Parameters - -Licensor: The TrueCharts Project, it's owner and it's contributors -Licensed Work: The TrueCharts "Blocky" Helm Chart -Additional Use Grant: You may use the licensed work in production, as long - as it is directly sourced from a TrueCharts provided - official repository, catalog or source. You may also make private - modification to the directly sourced licenced work, - when used in production. - - The following cases are, due to their nature, also - defined as 'production use' and explicitly prohibited: - - Bundling, including or displaying the licensed work - with(in) another work intended for production use, - with the apparent intend of facilitating and/or - promoting production use by third parties in - violation of this license. - -Change Date: 2050-01-01 - -Change License: 3-clause BSD license - -For information about alternative licensing arrangements for the Software, -please contact: legal@truecharts.org - -Notice - -The Business Source License (this document, or the “License”) is not an Open -Source license. However, the Licensed Work will eventually be made available -under an Open Source License, as stated in this License. - -License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. -“Business Source License” is a trademark of MariaDB Corporation Ab. - ------------------------------------------------------------------------------ - -Business Source License 1.1 - -Terms - -The Licensor hereby grants you the right to copy, modify, create derivative -works, redistribute, and make non-production use of the Licensed Work. The -Licensor may make an Additional Use Grant, above, permitting limited -production use. - -Effective on the Change Date, or the fourth anniversary of the first publicly -available distribution of a specific version of the Licensed Work under this -License, whichever comes first, the Licensor hereby grants you rights under -the terms of the Change License, and the rights granted in the paragraph -above terminate. - -If your use of the Licensed Work does not comply with the requirements -currently in effect as described in this License, you must purchase a -commercial license from the Licensor, its affiliated entities, or authorized -resellers, or you must refrain from using the Licensed Work. - -All copies of the original and modified Licensed Work, and derivative works -of the Licensed Work, are subject to this License. This License applies -separately for each version of the Licensed Work and the Change Date may vary -for each version of the Licensed Work released by Licensor. - -You must conspicuously display this License on each original or modified copy -of the Licensed Work. If you receive the Licensed Work in original or -modified form from a third party, the terms and conditions set forth in this -License apply to your use of that work. - -Any use of the Licensed Work in violation of this License will automatically -terminate your rights under this License for the current and all other -versions of the Licensed Work. - -This License does not grant you any right in any trademark or logo of -Licensor or its affiliates (provided that you may use a trademark or logo of -Licensor as expressly required by this License). - -TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON -AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, -EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND -TITLE. - -MariaDB hereby grants you permission to use this License’s text to license -your works, and to refer to it using the trademark “Business Source License”, -as long as you comply with the Covenants of Licensor below. - -Covenants of Licensor - -In consideration of the right to use this License’s text and the “Business -Source License” name and trademark, Licensor covenants to MariaDB, and to all -other recipients of the licensed work to be provided by Licensor: - -1. To specify as the Change License the GPL Version 2.0 or any later version, - or a license that is compatible with GPL Version 2.0 or a later version, - where “compatible” means that software provided under the Change License can - be included in a program with software provided under GPL Version 2.0 or a - later version. Licensor may specify additional Change Licenses without - limitation. - -2. To either: (a) specify an additional grant of rights to use that does not - impose any additional restriction on the right granted in this License, as - the Additional Use Grant; or (b) insert the text “None”. - -3. To specify a Change Date. - -4. Not to modify this License in any other way. diff --git a/archive/clustertool/cmd/adv.go b/archive/clustertool/cmd/adv.go deleted file mode 100644 index 18bacb9eb56..00000000000 --- a/archive/clustertool/cmd/adv.go +++ /dev/null @@ -1,25 +0,0 @@ -package cmd - -import ( - "strings" - - "github.com/spf13/cobra" -) - -var advLongHelp = strings.TrimSpace(` -These are all advanced commands that should generally not be needed - -`) - -var adv = &cobra.Command{ - Use: "adv", - Short: "Advanced cluster maintanence commands", - Example: "clustertool adv ", - Long: advLongHelp, - SilenceUsage: true, - SilenceErrors: true, -} - -func init() { - RootCmd.AddCommand(adv) -} diff --git a/archive/clustertool/cmd/adv_gentooldocs.go b/archive/clustertool/cmd/adv_gentooldocs.go deleted file mode 100644 index bd0f3277a91..00000000000 --- a/archive/clustertool/cmd/adv_gentooldocs.go +++ /dev/null @@ -1,35 +0,0 @@ -package cmd - -import ( - "log" - "os" - - "github.com/spf13/cobra" - "github.com/spf13/cobra/doc" - "github.com/trueforge-org/truecharts/clustertool/pkg/helper" -) - -var gendocsCmd = &cobra.Command{ - Use: "gentooldocs", - Short: "Generate documentation for the CLI", - Args: cobra.ExactArgs(1), - Hidden: true, - Run: func(cmd *cobra.Command, args []string) { - outdir := args[0] - tmpdir := helper.DocsCache - - if err := os.MkdirAll(tmpdir, 0o777); err != nil { - log.Fatal(err) - } - - err := doc.GenMarkdownTree(RootCmd, tmpdir) - if err != nil { - log.Fatal(err) - } - helper.ToolDocs(tmpdir, outdir) - }, -} - -func init() { - adv.AddCommand(gendocsCmd) -} diff --git a/archive/clustertool/cmd/adv_precommit.go b/archive/clustertool/cmd/adv_precommit.go deleted file mode 100644 index a45673036d5..00000000000 --- a/archive/clustertool/cmd/adv_precommit.go +++ /dev/null @@ -1,31 +0,0 @@ -package cmd - -import ( - "os" - "strings" - - "github.com/rs/zerolog/log" - "github.com/spf13/cobra" - "github.com/trueforge-org/truecharts/clustertool/pkg/sops" -) - -var advPrecommitLongHelp = strings.TrimSpace(` - -`) - -var precommit = &cobra.Command{ - Use: "precommit", - Short: "Runs the PreCommit encryption check", - Example: "clustertool adv precommit", - Long: advPrecommitLongHelp, - Run: func(cmd *cobra.Command, args []string) { - if err := sops.CheckFilesAndReportEncryption(true, true); err != nil { - log.Info().Msgf("Error checking files: %v\n", err) - os.Exit(1) - } - }, -} - -func init() { - adv.AddCommand(precommit) -} diff --git a/archive/clustertool/cmd/adv_testcmd.go b/archive/clustertool/cmd/adv_testcmd.go deleted file mode 100644 index a33ceabed31..00000000000 --- a/archive/clustertool/cmd/adv_testcmd.go +++ /dev/null @@ -1,50 +0,0 @@ -package cmd - -import ( - "context" - "os" - "path/filepath" - "strings" - - "github.com/rs/zerolog/log" - "github.com/spf13/cobra" - "github.com/trueforge-org/truecharts/clustertool/pkg/helper" - "github.com/trueforge-org/truecharts/clustertool/pkg/initfiles" - "github.com/trueforge-org/truecharts/clustertool/pkg/kubectlcmds" - "github.com/trueforge-org/truecharts/clustertool/pkg/talassist" -) - -var advTestCmdlongHelp = strings.TrimSpace(` -This command is mostly just for development usage and should NEVER be used by end-users. -`) - -var testcmd = &cobra.Command{ - Use: "test", - Short: "tests specific code for developer usages", - Long: advTestCmdlongHelp, - Run: func(cmd *cobra.Command, args []string) { - ctx := context.Background() - initfiles.LoadTalEnv(false) - talassist.LoadTalConfig() - // err := fluxhandler.ProcessJSONFiles("./testdata/truenas_exports") - // if err != nil { - // log.Info().Msg("Error:", err) - // } - var manifestPaths = []string{ - filepath.Join(helper.KubernetesPath, "flux-system", "flux", "sopssecret.secret.yaml"), - filepath.Join(helper.KubernetesPath, "flux-system", "flux", "deploykey.secret.yaml"), - filepath.Join(helper.KubernetesPath, "flux-system", "flux", "clustersettings.secret.yaml"), - } - for _, filePath := range manifestPaths { - log.Info().Msgf("Bootstrap: Loading Manifest: %v", filePath) - if err := kubectlcmds.KubectlApply(ctx, filePath); err != nil { - log.Info().Msgf("Error applying manifest for %s: %v\n", filepath.Base(filePath), err) - os.Exit(1) - } - } - }, -} - -func init() { - adv.AddCommand(testcmd) -} diff --git a/archive/clustertool/cmd/charts.go b/archive/clustertool/cmd/charts.go deleted file mode 100644 index 11573575cee..00000000000 --- a/archive/clustertool/cmd/charts.go +++ /dev/null @@ -1,30 +0,0 @@ -package cmd - -import ( - "strings" - - "github.com/spf13/cobra" -) - -var chartsLongHelp = strings.TrimSpace(` -charttool was a tool to help you build TrueCharts Charts. -It has since been merged into Clustertool as "clustertool charts" - - Example commands - > charttool bump 1.2.3 patch - > charttool tagclean soemtag@somedigest - -`) - -var charts = &cobra.Command{ - Use: "charts", - Short: "A tool to help with creating Talos cluster", - Example: "charttool bump 1.2.3 patch", - Long: chartsLongHelp, - SilenceUsage: true, - SilenceErrors: true, -} - -func init() { - RootCmd.AddCommand(charts) -} diff --git a/archive/clustertool/cmd/charts_bump.go b/archive/clustertool/cmd/charts_bump.go deleted file mode 100644 index 4eb4d14e4b4..00000000000 --- a/archive/clustertool/cmd/charts_bump.go +++ /dev/null @@ -1,30 +0,0 @@ -package cmd - -import ( - "strings" - - "github.com/rs/zerolog/log" - "github.com/spf13/cobra" - "github.com/trueforge-org/truecharts/clustertool/pkg/charts/version" -) - -var chartsBumpLongHelp = strings.TrimSpace(` - -`) - -var bumper = &cobra.Command{ - Use: "bump", - Short: "generate a bumped image version", - Long: chartsBumpLongHelp, - Example: "clustertool charts bump ", - Args: cobra.ExactArgs(2), - Run: func(cmd *cobra.Command, args []string) { - if err := version.Bump(args[0], args[1]); err != nil { - log.Fatal().Err(err).Msg("failed to bump version") - } - }, -} - -func init() { - charts.AddCommand(bumper) -} diff --git a/archive/clustertool/cmd/charts_deps.go b/archive/clustertool/cmd/charts_deps.go deleted file mode 100644 index bfd711ab9b8..00000000000 --- a/archive/clustertool/cmd/charts_deps.go +++ /dev/null @@ -1,36 +0,0 @@ -package cmd - -import ( - "strings" - - "github.com/rs/zerolog/log" - "github.com/spf13/cobra" - "github.com/trueforge-org/truecharts/clustertool/pkg/charts/deps" - "github.com/trueforge-org/truecharts/clustertool/pkg/helper" -) - -var chartsDepsLongHelp = strings.TrimSpace(` - -`) - -var depsCmd = &cobra.Command{ - Use: "deps", - Short: "Download, Update and Verify Helm dependencies", - Long: chartsDepsLongHelp, - Example: "clustertool charts deps ", - Run: func(cmd *cobra.Command, args []string) { - if err := deps.LoadGPGKey(); err != nil { - log.Fatal().Err(err).Msg("failed to load gpg key") - } - - // Specify the mode (SyncMode or AsyncMode) - mode := helper.SyncMode // Change to helper.SyncMode for synchronous processing - if err := helper.WalkCharts(args, deps.DownloadDeps, "", mode); err != nil { - log.Fatal().Err(err).Msg("failed to update Chart.yaml") - } - }, -} - -func init() { - charts.AddCommand(depsCmd) -} diff --git a/archive/clustertool/cmd/charts_genchangelog.go b/archive/clustertool/cmd/charts_genchangelog.go deleted file mode 100644 index 228fb8b73db..00000000000 --- a/archive/clustertool/cmd/charts_genchangelog.go +++ /dev/null @@ -1,46 +0,0 @@ -package cmd - -import ( - "strings" - - "github.com/rs/zerolog/log" - - "github.com/spf13/cobra" - "github.com/trueforge-org/truecharts/clustertool/pkg/charts/changelog" -) - -var chartsGenChangelogLongHelp = strings.TrimSpace(` - -`) - -var genChangelogCmd = &cobra.Command{ - Use: "genchangelog", - Short: "Generate changelog for charts", - Long: chartsGenChangelogLongHelp, - Example: "clustertool charts genchangelog